Mostly hacks for multiplying Frequency-type proxies by constants
(plus some small fixes).
python/m5/config.py:
Hacks to allow multiplication on Frequency/Latency-valued proxies.
Provide __rmul__ as well as __mul__ on Proxy objects.
test/genini.py:
Default value for -EFOO should be True not 1 (since 1 is no longer
convertable to Bool).
--HG--
extra : convert_revision : f8a221fcd9e095fdd7b7db4be0ed0cdcd20074be
This commit is contained in:
@@ -177,7 +177,7 @@ class Proxy(object):
|
||||
|
||||
# support multiplying proxies by constants
|
||||
def __mul__(self, other):
|
||||
if not isinstance(other, int):
|
||||
if not isinstance(other, (int, float)):
|
||||
raise TypeError, "Proxy multiplier must be integer"
|
||||
if self._multiplier == None:
|
||||
self._multiplier = other
|
||||
@@ -186,13 +186,19 @@ class Proxy(object):
|
||||
self._multiplier *= other
|
||||
return self
|
||||
|
||||
__rmul__ = __mul__
|
||||
|
||||
def _mulcheck(self, result):
|
||||
if self._multiplier == None:
|
||||
return result
|
||||
if not isinstance(result, int):
|
||||
raise TypeError, "Proxy with multiplier resolves to " \
|
||||
"non-integer value"
|
||||
return result * self._multiplier
|
||||
# this was an error, but for now we'll assume if it's not
|
||||
# an int it must be a Frequency (yuk)
|
||||
result = Frequency._convert(result)
|
||||
# assuming we're dealing with a frequency here, turn it into
|
||||
# a string and give it a 't' suffix so the Frequency._convert
|
||||
# doesn't choke on it later.
|
||||
return ("%d" % int(round((result * self._multiplier)))) + 't'
|
||||
|
||||
def unproxy(self, base, ptype):
|
||||
obj = base
|
||||
|
||||
Reference in New Issue
Block a user