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