Author: Alex Gaynor <[email protected]>
Branch: jit-settrace
Changeset: r67619:2170c11c35e6
Date: 2013-10-25 14:27 -0700
http://bitbucket.org/pypy/pypy/changeset/2170c11c35e6/

Log:    update things, on further review we don't want this though

diff --git a/pypy/module/pypyjit/interp_jit.py 
b/pypy/module/pypyjit/interp_jit.py
--- a/pypy/module/pypyjit/interp_jit.py
+++ b/pypy/module/pypyjit/interp_jit.py
@@ -27,35 +27,34 @@
 
 JUMP_ABSOLUTE = opmap['JUMP_ABSOLUTE']
 
-def get_printable_location(next_instr, is_being_profiled, is_tracefunc, 
bytecode):
+def get_printable_location(next_instr, is_being_profiled, bytecode):
     from pypy.tool.stdlib_opcode import opcode_method_names
     name = opcode_method_names[ord(bytecode.co_code[next_instr])]
     return '%s #%d %s' % (bytecode.get_repr(), next_instr, name)
 
-def make_greenkey_dict_key(next_instr, is_being_profiled, is_tracefunc):
+def make_greenkey_dict_key(next_instr, is_being_profiled):
     # use only uints as keys in the jit_cells dict, rather than
     # a tuple (next_instr, is_being_profiled)
     return (
-        (next_instr << 2) |
-        (r_uint(intmask(is_being_profiled)) << 1) |
-        r_uint(intmask(is_tracefunc))
+        (next_instr << 1) |
+        r_uint(intmask(is_being_profiled))
     )
 
-def get_jitcell_at(next_instr, is_being_profiled, is_tracefunc, bytecode):
-    key = make_greenkey_dict_key(next_instr, is_being_profiled, is_tracefunc)
+def get_jitcell_at(next_instr, is_being_profiled, bytecode):
+    key = make_greenkey_dict_key(next_instr, is_being_profiled)
     return bytecode.jit_cells.get(key, None)
 
-def set_jitcell_at(newcell, next_instr, is_being_profiled, is_tracefunc, 
bytecode):
-    key = make_greenkey_dict_key(next_instr, is_being_profiled, is_tracefunc)
+def set_jitcell_at(newcell, next_instr, is_being_profiled, bytecode):
+    key = make_greenkey_dict_key(next_instr, is_being_profiled)
     bytecode.jit_cells[key] = newcell
 
 
-def should_unroll_one_iteration(next_instr, is_being_profiled, is_tracefunc, 
bytecode):
+def should_unroll_one_iteration(next_instr, is_being_profiled, bytecode):
     return (bytecode.co_flags & CO_GENERATOR) != 0
 
 class PyPyJitDriver(JitDriver):
     reds = ['frame', 'ec']
-    greens = ['next_instr', 'is_being_profiled', 'is_tracefunc', 'pycode']
+    greens = ['next_instr', 'is_being_profiled', 'pycode']
     virtualizables = ['frame']
 
 pypyjitdriver = PyPyJitDriver(get_printable_location = get_printable_location,
@@ -75,8 +74,7 @@
             while True:
                 pypyjitdriver.jit_merge_point(ec=ec,
                     frame=self, next_instr=next_instr, pycode=pycode,
-                    is_being_profiled=is_being_profiled,
-                    is_tracefunc=ec.gettrace() is not None)
+                    is_being_profiled=is_being_profiled)
                 co_code = pycode.co_code
                 self.valuestackdepth = hint(self.valuestackdepth, promote=True)
                 next_instr = self.handle_bytecode(co_code, next_instr, ec)
@@ -105,8 +103,7 @@
         #
         pypyjitdriver.can_enter_jit(frame=self, ec=ec, next_instr=jumpto,
                                     pycode=self.getcode(),
-                                    is_being_profiled=self.is_being_profiled,
-                                    is_tracefunc=ec.gettrace() is not None)
+                                    is_being_profiled=self.is_being_profiled)
         return jumpto
 
 def _get_adapted_tick_counter():
diff --git a/pypy/module/pypyjit/test_pypy_c/test_call.py 
b/pypy/module/pypyjit/test_pypy_c/test_call.py
--- a/pypy/module/pypyjit/test_pypy_c/test_call.py
+++ b/pypy/module/pypyjit/test_pypy_c/test_call.py
@@ -67,7 +67,7 @@
         # LOAD_GLOBAL of OFFSET
         ops = entry_bridge.ops_by_id('cond', opcode='LOAD_GLOBAL')
         assert log.opnames(ops) == ["guard_value",
-                                    "getfield_gc", "guard_value",
+                                    "guard_value",
                                     "getfield_gc", "guard_value",
                                     "guard_not_invalidated"]
         ops = entry_bridge.ops_by_id('add', opcode='LOAD_GLOBAL')
@@ -81,7 +81,7 @@
             p39 = getfield_gc(p38, descr=<FieldP 
pypy.interpreter.executioncontext.ExecutionContext.inst_topframeref .*>)
             i40 = force_token()
             p41 = getfield_gc(p38, descr=<FieldP 
pypy.interpreter.executioncontext.ExecutionContext.inst_w_tracefunc .*>)
-            guard_isnull(p41, descr=...)
+            guard_value(p41, ConstPtr(ptr42), descr=...)
             i42 = getfield_gc(p38, descr=<FieldU 
pypy.interpreter.executioncontext.ExecutionContext.inst_profilefunc .*>)
             i43 = int_is_zero(i42)
             guard_true(i43, descr=...)
@@ -424,33 +424,34 @@
             """, [])
         loop, = log.loops_by_id('call', is_entry_bridge=True)
         assert loop.match("""
-            guard_value(i6, 1, descr=...)
-            guard_nonnull_class(p8, ConstClass(W_IntObject), descr=...)
-            guard_value(i4, 0, descr=...)
-            guard_value(p3, ConstPtr(ptr14), descr=...)
-            i15 = getfield_gc_pure(p8, descr=<FieldS 
pypy.objspace.std.intobject.W_IntObject.inst_intval .*>)
-            i17 = int_lt(i15, 5000)
-            guard_true(i17, descr=...)
-            guard_value(p18, ConstPtr(ptr19), descr=...)
-            p20 = getfield_gc(p18, descr=<FieldP 
pypy.objspace.std.dictmultiobject.W_DictMultiObject.inst_strategy .*>)
+            guard_value(i4, 1, descr=...)
+            guard_nonnull_class(p12, ConstClass(W_IntObject), descr=...)
+            p20 = getfield_gc(p1, descr=<FieldP 
pypy.interpreter.executioncontext.ExecutionContext.inst_w_tracefunc .*>)
             guard_value(p20, ConstPtr(ptr21), descr=...)
+            guard_value(i8, 0, descr=...)
+            guard_value(p2, ConstPtr(ptr23), descr=...)
+            i24 = getfield_gc_pure(p12, descr=<FieldS 
pypy.objspace.std.intobject.W_IntObject.inst_intval .*>)
+            i26 = int_lt(i24, 5000)
+            guard_true(i26, descr=...)
+            guard_value(p7, ConstPtr(ptr27), descr=...)
+            p28 = getfield_gc(p7, descr=<FieldP 
pypy.objspace.std.dictmultiobject.W_DictMultiObject.inst_strategy .*>)
+            guard_value(p28, ConstPtr(ptr29), descr=...)
             guard_not_invalidated(descr=...)
-            # most importantly, there is no getarrayitem_gc here
-            p23 = call(ConstClass(getexecutioncontext), descr=<Callr . EF=1>)
-            p24 = getfield_gc(p23, descr=<FieldP 
pypy.interpreter.executioncontext.ExecutionContext.inst_topframeref .*>)
-            i25 = force_token()
-            p26 = getfield_gc(p23, descr=<FieldP 
pypy.interpreter.executioncontext.ExecutionContext.inst_w_tracefunc .*>)
-            guard_isnull(p26, descr=...)
-            i27 = getfield_gc(p23, descr=<FieldU 
pypy.interpreter.executioncontext.ExecutionContext.inst_profilefunc .*>)
-            i28 = int_is_zero(i27)
-            guard_true(i28, descr=...)
-            p30 = getfield_gc(ConstPtr(ptr29), descr=<FieldP 
pypy.interpreter.nestedscope.Cell.inst_w_value .*>)
-            guard_nonnull_class(p30, ConstClass(W_IntObject), descr=...)
-            i32 = getfield_gc_pure(p30, descr=<FieldS 
pypy.objspace.std.intobject.W_IntObject.inst_intval .*>)
-            i33 = int_add_ovf(i15, i32)
+            p31 = call(ConstClass(getexecutioncontext), descr=<Callr 8 EF=1>)
+            p32 = getfield_gc(p31, descr=<FieldP 
pypy.interpreter.executioncontext.ExecutionContext.inst_topframeref .*>)
+            p33 = force_token()
+            p34 = getfield_gc(p31, descr=<FieldP 
pypy.interpreter.executioncontext.ExecutionContext.inst_w_tracefunc .*>)
+            guard_value(p34, ConstPtr(ptr35), descr=...)
+            i36 = getfield_gc(p31, descr=<FieldU 
pypy.interpreter.executioncontext.ExecutionContext.inst_profilefunc .*>)
+            i37 = int_is_zero(i36)
+            guard_true(i37, descr=...)
+            p39 = getfield_gc(ConstPtr(ptr38), descr=<FieldP 
pypy.interpreter.nestedscope.Cell.inst_w_value .*>)
+            guard_nonnull_class(p39, ConstClass(W_IntObject), descr=...)
+            i41 = getfield_gc_pure(p39, descr=<FieldS 
pypy.objspace.std.intobject.W_IntObject.inst_intval .*>)
+            i42 = int_add_ovf(i24, i41)
             guard_no_overflow(descr=...)
+            guard_not_invalidated(descr=...)
             --TICK--
-            p39 = same_as(...) # Should be killed by backend
         """)
 
     def test_local_closure_is_virtual(self):
diff --git a/pypy/module/pypyjit/test_pypy_c/test_thread.py 
b/pypy/module/pypyjit/test_pypy_c/test_thread.py
--- a/pypy/module/pypyjit/test_pypy_c/test_thread.py
+++ b/pypy/module/pypyjit/test_pypy_c/test_thread.py
@@ -60,29 +60,33 @@
         assert log.result == main(500)
         loop, = log.loops_by_filename(self.filepath)
         assert loop.match("""
-        i55 = int_gt(i43, 0)
-        guard_true(i55, descr=...)
-        p56 = force_token()
-        setfield_gc(p0, p56, descr=<FieldP 
pypy.interpreter.pyframe.PyFrame.vable_token .*>)
-        i57 = call_release_gil(..., i36, 1, descr=<Calli 4 ii EF=6>)
+        i63 = int_gt(i48, 0)
+        guard_true(i63, descr=...)
+        p64 = force_token()
+        setfield_gc(p0, p64, descr=<FieldP 
pypy.interpreter.pyframe.PyFrame.vable_token .*>)
+        i65 = call_release_gil(..., i39, 1, descr=<Calli 4 ii EF=6>)
         guard_not_forced(descr=...)
         guard_no_exception(descr=...)
-        i58 = int_is_true(i57)
-        guard_true(i58, descr=...)
-        i59 = int_sub(i43, 1)
+        i66 = int_is_true(i65)
+        guard_true(i66, descr=...)
+        p67 = getfield_gc(p1, descr=<FieldP 
pypy.interpreter.executioncontext.ExecutionContext.inst_w_tracefunc .*>)
+        guard_value(p67, ConstPtr(ptr46), descr=...)
+        i68 = int_sub(i48, 1)
         guard_not_invalidated(descr=...)
-        p61 = force_token()
-        setfield_gc(p0, p61, descr=<FieldP 
pypy.interpreter.pyframe.PyFrame.vable_token .*>)
-        i62 = call_release_gil(..., i36, 0, descr=<Calli 4 ii EF=6>)
+        p69 = force_token()
+        setfield_gc(p0, p69, descr=<FieldP 
pypy.interpreter.pyframe.PyFrame.vable_token .*>)
+        i70 = call_release_gil(..., i39, 0, descr=<Calli 4 ii EF=6>)
         guard_not_forced(descr=...)
         guard_no_exception(descr=...)
-        i63 = int_is_true(i62)
-        guard_false(i63, descr=...)
-        p64 = force_token()
-        setfield_gc(p0, p64, descr=<FieldP 
pypy.interpreter.pyframe.PyFrame.vable_token .*>)
-        call_release_gil(..., i36, descr=<Callv 0 i EF=6>)
+        i71 = int_is_true(i70)
+        guard_false(i71, descr=...)
+        p72 = force_token()
+        setfield_gc(p0, p72, descr=<FieldP 
pypy.interpreter.pyframe.PyFrame.vable_token .*>)
+        call_release_gil(..., i39, descr=<Callv 0 i EF=6>)
         guard_not_forced(descr=...)
         guard_no_exception(descr=...)
+        p73 = getfield_gc(p1, descr=<FieldP 
pypy.interpreter.executioncontext.ExecutionContext.inst_w_tracefunc .*>)
+        guard_value(p73, ConstPtr(ptr58), descr=...)
         guard_not_invalidated(descr=...)
         --TICK--
         jump(..., descr=...)
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to