def _toDoDouble(i, top, frame, context, interpreter, block_method, universe): assert isinstance(i, int) assert isinstance(top, float) while i <= top: jitdriver_double.jit_merge_point(interpreter=interpreter, block_method=block_method) b = universe.new_block(block_method, context) frame.push(b) frame.push(universe.new_integer(i)) block_evaluate(b, interpreter, frame) frame.pop() i += 1
def _toDo(ivkbl, frame, interpreter): universe = interpreter.get_universe() block = frame.pop() limit = frame.pop() self = frame.pop() # we do leave it on there block_method = block.get_method() context = block.get_context() i = self.get_embedded_integer() top = limit.get_embedded_integer() while i <= top: jitdriver.jit_merge_point(interpreter=interpreter, block_method=block_method) b = universe.new_block(block_method, context) frame.push(b) frame.push(universe.new_integer(i)) block_evaluate(b, interpreter, frame) frame.pop() i += 1 frame.push(self)
def _execute_block(frame, block, block_method, interpreter, universe): b = universe.new_block(block_method, block.get_context()) frame.push(b) block_evaluate(b, interpreter, frame) return frame.pop()