1.1 --- a/micropython/ast.py Sun Aug 24 03:06:00 2008 +0200
1.2 +++ b/micropython/ast.py Sun Aug 24 19:20:45 2008 +0200
1.3 @@ -116,6 +116,7 @@
1.4 self.unit = self.module
1.5 self.code = []
1.6 self.temp_positions = set()
1.7 + self.max_temp_position = -1
1.8
1.9 if self.module.module is not None:
1.10 self.dispatch(self.module.module)
1.11 @@ -130,6 +131,7 @@
1.12 self.unit = unit
1.13 self.code = []
1.14 self.temp_positions = set()
1.15 + self.max_temp_position = -1
1.16
1.17 if unit.astnode is not None:
1.18 self.dispatch(unit.astnode)
1.19 @@ -246,14 +248,14 @@
1.20 if not self.temp_positions:
1.21 temp_position = 0
1.22 else:
1.23 - temp_position = max(self.temp_positions) + 1
1.24 + temp_position = max(self.temp_positions)
1.25 self.temp_positions.add(temp_position)
1.26 self.max_temp_position = max(self.max_temp_position, temp_position)
1.27 - return self.unit.local_usage + temp_position # position in frame
1.28 + return self.unit.all_local_usage + temp_position # position in frame
1.29
1.30 def discard_temp(self, instruction=None):
1.31 if isinstance(instruction, LoadTemp):
1.32 - temp_position = instruction.attr - self.unit.local_usage
1.33 + temp_position = instruction.attr - self.unit.all_local_usage
1.34 self.free_temp(temp_position)
1.35
1.36 def free_temp(self, temp_position):
1.37 @@ -1714,7 +1716,7 @@
1.38
1.39 self.new_op(Return())
1.40
1.41 - extend.attr = self.max_temp_position + 1 # NOTE: See get_code for similar code.
1.42 + extend.attr = self.max_temp_position + node.unit.local_usage # NOTE: See get_code for similar code.
1.43
1.44 def visitGenExpr(self, node): raise TranslationNotImplementedError(self.module.full_name(), node, "GenExpr")
1.45