[pypy-commit] lang-smalltalk storage: Fixed jit.py, added explicit arguments to full-vm interpreter.

anton_gulenko noreply at buildbot.pypy.org
Mon Apr 7 13:52:33 CEST 2014


Author: Anton Gulenko <anton.gulenko at googlemail.com>
Branch: storage
Changeset: r778:0940a29d920f
Date: 2014-04-07 13:52 +0200
http://bitbucket.org/pypy/lang-smalltalk/changeset/0940a29d920f/

Log:	Fixed jit.py, added explicit arguments to full-vm interpreter.

diff --git a/spyvm/test/jit.py b/spyvm/test/jit.py
--- a/spyvm/test/jit.py
+++ b/spyvm/test/jit.py
@@ -25,6 +25,7 @@
 # Pass a function inside here to meta-interpret it and show all encountered loops.
 def meta_interp(func):
     res = jit.meta_interp(func, [], listcomp=True, listops=True, backendopt=True, inline=True)
+    print "Finished"
     if res:
         print res.__repr__()
 
@@ -34,7 +35,7 @@
 def perform(receiver, selector, *args):
     _, interp, _, _ = read_image(imagename)
     def interp_miniloop():
-        interp.perform(receiver, selector, *args)
+        return interp.perform(receiver, selector, *args)
     return interp_miniloop
 
 # This will build a jit executing a synthetic method composed of the given bytecodes and literals,
@@ -49,22 +50,32 @@
     s_frame = shadow.MethodContextShadow(space, None, w_method, w_receiver, [])
     w_frame = s_frame.w_self()
     def interp_execute_bytes_with_stack():
-        interp.loop(w_frame)
+        return interp.loop(w_frame)
     return interp_execute_bytes_with_stack
 
-# This will build a JIT for the entire VM.
-def full_vm():
+# This will build a JIT for the entire VM. Arguments to the VM entry-point must be provided.
+def full_vm(args):
     import targetimageloadingsmalltalk
-    argv = sys.argv
     def interp_full_vm():
-        targetimageloadingsmalltalk.entry_point(argv)
+        return targetimageloadingsmalltalk.entry_point(args)
     return interp_full_vm
 
+def run_vm_code(imagename, code):
+    return full_vm(['images/' + imagename, '-r', code])
+
+def execute_vm_method(imagename, selector, receiver_num = 0, string_arg=None):
+    args = ['images/' + imagename, '-m', selector, '-n', receiver_num]
+    if string_arg:
+        args.extend(['-a', string_arg])
+    return full_vm(args)
+
 def main():
     # func = perform(model.W_SmallInteger(1000), 'loopTest2')
-    # func = perform(model.W_SmallInteger(777), 'name')
-    func = execute_frame([returnReceiver], [], [model.W_SmallInteger(42)])
+    func = perform(model.W_SmallInteger(777), 'name')
+    # func = execute_frame([returnReceiver], [], [model.W_SmallInteger(42)])
     # func = full_vm()
+    
+    # func()
     meta_interp(func)
 
 # This is for execution using pytest.py. This way you can get a pdb on assertion-errors etc.


More information about the pypy-commit mailing list