예제 #1
0
def new_interpreter(bytes):
    assert isinstance(bytes, str)
    w_method = model.W_CompiledMethod(0, bytes=bytes)
    w_frame = w_method.create_frame(objtable.w_nil, [])
    interp = interpreter.Interpreter()
    interp.w_active_context = w_frame
    return interp
예제 #2
0
def new_interpreter(bytes, receiver=objtable.w_nil):
    assert isinstance(bytes, str)
    w_method = model.W_CompiledMethod(len(bytes))
    w_method.bytes = bytes
    w_method.argsize = 2
    w_method.tempsize = 1
    w_frame = w_method.create_frame(receiver, ["foo", "bar"])
    interp = interpreter.Interpreter()
    interp.w_active_context = w_frame
    return interp
예제 #3
0
def new_interpreter(bytes, receiver=space.w_nil):
    assert isinstance(bytes, str)
    w_method = model.W_CompiledMethod(len(bytes))
    w_method.islarge = 1
    w_method.bytes = bytes
    w_method.argsize=2
    w_method.tempsize=8
    w_frame = w_method.create_frame(space, receiver, ["foo", "bar"])
    interp = interpreter.Interpreter(space)
    interp.store_w_active_context(w_frame)
    return interp
예제 #4
0
def test_runimage():
    py.test.skip(
        "This method actually runs an image. Fails since no graphical primitives yet"
    )
    from pypy.lang.smalltalk import wrapper
    ap = wrapper.ProcessWraper(wrapper.scheduler().active_process())
    s_ctx = ap.suspended_context().as_methodcontext_get_shadow()
    ap.store_suspended_context(space.w_nil)

    interp = interpreter.Interpreter()
    interp.store_w_active_context(s_ctx.w_self())
    interp.interpret()
예제 #5
0
    def make_processes(self, sleepingpriority, runningpriority,
                       sleepingcontext, runningcontext):
        interp = interpreter.Interpreter(space)
        scheduler = wrapper.scheduler(space)
        sleeping = new_process(priority=sleepingpriority,
                               w_suspended_context=sleepingcontext)
        sleeping.put_to_sleep()
        running = new_process(priority=runningpriority)
        scheduler.store_active_process(running.w_self)
        interp.store_w_active_context(runningcontext)

        return interp, sleeping, running
예제 #6
0
def perform(w_receiver, selector, *arguments_w):
    interp = interpreter.Interpreter()
    s_class = w_receiver.shadow_of_my_class()
    w_method = s_class.lookup(selector)
    assert w_method
    w_frame = w_method.create_frame(w_receiver, list(arguments_w))
    interp.w_active_context = w_frame
    while True:
        try:
            interp.step()
            #print interp.w_active_context.stack
        except interpreter.ReturnFromTopLevel, e:
            return e.object.value
예제 #7
0
def tinyBenchmarks(space, image):
    interp = interpreter.Interpreter(space)

    w_object = model.W_SmallInteger(0)

    s_class = w_object.shadow_of_my_class(space)
    w_method = s_class.lookup("tinyBenchmarks")

    assert w_method
    w_frame = w_method.create_frame(space, w_object, [])
    interp.store_w_active_context(w_frame)

    counter = 0

    from pypy.lang.smalltalk.interpreter import BYTECODE_TABLE
    return interp
예제 #8
0
def tinyBenchmarks():
    image = create_squeakimage()
    interp = interpreter.Interpreter()

    w_object = model.W_SmallInteger(0)

    # Should get this from w_object
    w_smallint_class = image.special(constants.SO_SMALLINTEGER_CLASS)
    s_class = w_object.shadow_of_my_class()
    #w_method = s_class.lookup("benchFib")
    w_method = s_class.lookup("tinyBenchmarks")

    assert w_method
    w_frame = w_method.create_frame(w_object, [])
    interp.w_active_context = w_frame

    print w_method
    print "Going to execute %d toplevel bytecodes" % (len(w_method.bytes), )
    counter = 0

    from pypy.lang.smalltalk.interpreter import BYTECODE_TABLE
    while True:
        try:
            counter += 1
            if interp.w_active_context == w_frame:
                print "Executing toplevel bytecode nr: %d of %d" % (
                    interp.w_active_context.pc + 1, len(w_method.bytes))
                cb = ord(interp.w_active_context.w_method().bytes[
                    interp.w_active_context.pc])
                print "= bytecode: %s %d" % (BYTECODE_TABLE[cb].__name__, cb)
            interp.step()
            #if hasattr(interp.w_active_context,"currentBytecode"):
            #    print "Executing bytecode: %s" % (BYTECODE_TABLE[interp.w_active_context.currentBytecode].__name__,)
            #else:
            #    print "Jump to new stackframe"
            # print interp.w_active_context.stack
            if counter == 100000:
                counter = 0
                sys.stderr.write("#")
        except interpreter.ReturnFromTopLevel, e:
            print e.object
            return
        except:
예제 #9
0
def tinyBenchmarks(image):
    interp = interpreter.Interpreter()

    w_object = model.W_SmallInteger(0)

    # Should get this from w_object
    w_smallint_class = image.special(constants.SO_SMALLINTEGER_CLASS)
    s_class = w_object.shadow_of_my_class()
    w_method = s_class.lookup("tinyBenchmarks")

    assert w_method
    w_frame = w_method.create_frame(w_object, [])
    interp.w_active_context = w_frame

    print w_method
    print "Going to execute %d toplevel bytecodes" % (len(w_method.bytes), )
    counter = 0

    from pypy.lang.smalltalk.interpreter import BYTECODE_TABLE
    return interp
예제 #10
0
def test_step_run_something():
    from pypy.lang.smalltalk.test import test_miniimage
    setup_module(test_miniimage, filename='running-something-mini.image')
    from pypy.lang.smalltalk import wrapper
    ap = wrapper.ProcessWrapper(space,
                                wrapper.scheduler(space).active_process())
    s_ctx = ap.suspended_context().as_context_get_shadow(space)
    ap.store_suspended_context(space.w_nil)

    interp = interpreter.Interpreter(space)
    interp.store_w_active_context(s_ctx.w_self())
    assert isinstance(s_ctx, shadow.MethodContextShadow)
    assert interp.s_active_context().top().is_same_object(space.w_true)
    interp.step()
    interp.step()
    assert interp.s_active_context().top().value == 1
    interp.step()
    assert interp.s_active_context().top().value == 2
    interp.step()
    assert interp.s_active_context().top().value == 3
예제 #11
0
def tinyBenchmarks():
    from pypy.lang.smalltalk import objspace
    space = objspace.ObjSpace()
    image = create_squeakimage(space)
    interp = interpreter.Interpreter(space)

    w_object = model.W_SmallInteger(0)

    # Should get this from w_object
    w_smallint_class = image.special(constants.SO_SMALLINTEGER_CLASS)
    s_class = w_object.shadow_of_my_class(space)
    w_method = s_class.lookup("tinyBenchmarks")

    assert w_method
    w_frame = w_method.create_frame(space, w_object, [])
    interp.store_w_active_context(w_frame)

    counter = 0

    from pypy.lang.smalltalk.interpreter import BYTECODE_TABLE
    return interp
예제 #12
0
def test_lookup_abs_in_integer(int=10):
    image = get_image()
    interp = interpreter.Interpreter(space)

    w_object = model.W_SmallInteger(int)

    # Should get this from w_object
    w_smallint_class = image.special(constants.SO_SMALLINTEGER_CLASS)
    s_class = w_object.shadow_of_my_class(space)
    w_method = s_class.lookup("abs")

    assert w_method
    w_frame = w_method.create_frame(space, w_object, [])
    interp.store_w_active_context(w_frame)

    while True:
        try:
            interp.step()
        except interpreter.ReturnFromTopLevel, e:
            assert e.object.value == abs(int)
            return
예제 #13
0
def tinyBenchmarks():
    image = create_squeakimage()
    interp = interpreter.Interpreter()

    w_object = model.W_SmallInteger(0)

    # Should get this from w_object
    w_smallint_class = image.special(constants.SO_SMALLINTEGER_CLASS)
    s_class = w_object.shadow_of_my_class()
    #w_method = s_class.lookup("benchFib")
    w_method = s_class.lookup("tinyBenchmarks")

    assert w_method
    w_frame = w_method.create_frame(w_object, [])
    interp.store_w_active_context(w_frame)

    from pypy.lang.smalltalk.interpreter import BYTECODE_TABLE
    while True:
        try:
            interp.step()
        except interpreter.ReturnFromTopLevel, e:
            print e.object
            return
예제 #14
0
def mock(stack):
    mapped_stack = [wrap(x) for x in stack]
    frame = MockFrame(mapped_stack)
    interp = interpreter.Interpreter(space)
    interp.store_w_active_context(frame)
    return (interp, len(stack))