Author: Ronan Lamy <[email protected]>
Branch: jit-cleanup
Changeset: r96395:5cde9f06eb6a
Date: 2019-04-01 04:39 +0100
http://bitbucket.org/pypy/pypy/changeset/5cde9f06eb6a/
Log: Remove functionptr, nullptr, BASETYPE from llhelper
diff --git a/rpython/jit/metainterp/blackhole.py
b/rpython/jit/metainterp/blackhole.py
--- a/rpython/jit/metainterp/blackhole.py
+++ b/rpython/jit/metainterp/blackhole.py
@@ -1622,7 +1622,7 @@
elif kind == 'i':
raise jitexc.DoneWithThisFrameInt(self.get_tmpreg_i())
elif kind == 'r':
- raise jitexc.DoneWithThisFrameRef(self.cpu, self.get_tmpreg_r())
+ raise jitexc.DoneWithThisFrameRef(self.get_tmpreg_r())
elif kind == 'f':
raise jitexc.DoneWithThisFrameFloat(self.get_tmpreg_f())
else:
@@ -1631,7 +1631,7 @@
def _exit_frame_with_exception(self, e):
sd = self.builder.metainterp_sd
e = lltype.cast_opaque_ptr(llmemory.GCREF, e)
- raise jitexc.ExitFrameWithExceptionRef(self.cpu, e)
+ raise jitexc.ExitFrameWithExceptionRef(e)
def _handle_jitexception_in_portal(self, e):
# This case is really rare, but can occur if
diff --git a/rpython/jit/metainterp/compile.py
b/rpython/jit/metainterp/compile.py
--- a/rpython/jit/metainterp/compile.py
+++ b/rpython/jit/metainterp/compile.py
@@ -654,6 +654,7 @@
class DoneWithThisFrameDescrInt(_DoneWithThisFrameDescr):
def get_result(self, cpu, deadframe):
return cpu.get_int_value(deadframe, 0)
+
def handle_fail(self, deadframe, metainterp_sd, jitdriver_sd):
assert jitdriver_sd.result_type == history.INT
cpu = metainterp_sd.cpu
@@ -662,14 +663,16 @@
class DoneWithThisFrameDescrRef(_DoneWithThisFrameDescr):
def get_result(self, cpu, deadframe):
return cpu.get_ref_value(deadframe, 0)
+
def handle_fail(self, deadframe, metainterp_sd, jitdriver_sd):
assert jitdriver_sd.result_type == history.REF
cpu = metainterp_sd.cpu
- raise jitexc.DoneWithThisFrameRef(cpu, self.get_result(cpu, deadframe))
+ raise jitexc.DoneWithThisFrameRef(self.get_result(cpu, deadframe))
class DoneWithThisFrameDescrFloat(_DoneWithThisFrameDescr):
def get_result(self, cpu, deadframe):
return cpu.get_float_value(deadframe, 0)
+
def handle_fail(self, deadframe, metainterp_sd, jitdriver_sd):
assert jitdriver_sd.result_type == history.FLOAT
cpu = metainterp_sd.cpu
@@ -679,7 +682,7 @@
def handle_fail(self, deadframe, metainterp_sd, jitdriver_sd):
cpu = metainterp_sd.cpu
value = cpu.get_ref_value(deadframe, 0)
- raise jitexc.ExitFrameWithExceptionRef(cpu, value)
+ raise jitexc.ExitFrameWithExceptionRef(value)
def make_and_attach_done_descrs(targets):
@@ -1120,7 +1123,7 @@
if not exception:
exception = cast_instance_to_gcref(memory_error)
assert exception, "PropagateExceptionDescr: no exception??"
- raise jitexc.ExitFrameWithExceptionRef(cpu, exception)
+ raise jitexc.ExitFrameWithExceptionRef(exception)
def compile_tmp_callback(cpu, jitdriver_sd, greenboxes, redargtypes,
memory_manager=None):
diff --git a/rpython/jit/metainterp/jitexc.py b/rpython/jit/metainterp/jitexc.py
--- a/rpython/jit/metainterp/jitexc.py
+++ b/rpython/jit/metainterp/jitexc.py
@@ -1,6 +1,6 @@
from rpython.rtyper.annlowlevel import cast_instance_to_base_ptr
from rpython.rtyper.annlowlevel import cast_base_ptr_to_instance
-from rpython.rtyper.lltypesystem import lltype
+from rpython.rtyper.lltypesystem import lltype, llmemory
from rpython.rtyper import rclass
from rpython.rtyper.llinterp import LLException
from rpython.rlib.objectmodel import we_are_translated
@@ -22,13 +22,15 @@
def __init__(self, result):
assert lltype.typeOf(result) is lltype.Signed
self.result = result
+
def __str__(self):
return 'DoneWithThisFrameInt(%s)' % (self.result,)
class DoneWithThisFrameRef(JitException):
- def __init__(self, cpu, result):
- assert lltype.typeOf(result) == cpu.ts.BASETYPE
+ def __init__(self, result):
+ assert lltype.typeOf(result) == llmemory.GCREF
self.result = result
+
def __str__(self):
return 'DoneWithThisFrameRef(%s)' % (self.result,)
@@ -36,13 +38,15 @@
def __init__(self, result):
assert lltype.typeOf(result) is longlong.FLOATSTORAGE
self.result = result
+
def __str__(self):
return 'DoneWithThisFrameFloat(%s)' % (self.result,)
class ExitFrameWithExceptionRef(JitException):
- def __init__(self, cpu, value):
- assert lltype.typeOf(value) == cpu.ts.BASETYPE
+ def __init__(self, value):
+ assert lltype.typeOf(value) == llmemory.GCREF
self.value = value
+
def __str__(self):
return 'ExitFrameWithExceptionRef(%s)' % (self.value,)
diff --git a/rpython/jit/metainterp/pyjitpl.py
b/rpython/jit/metainterp/pyjitpl.py
--- a/rpython/jit/metainterp/pyjitpl.py
+++ b/rpython/jit/metainterp/pyjitpl.py
@@ -2131,7 +2131,7 @@
elif result_type == history.INT:
raise jitexc.DoneWithThisFrameInt(int(resultbox.getint()))
elif result_type == history.REF:
- raise jitexc.DoneWithThisFrameRef(self.cpu,
resultbox.getref_base())
+ raise jitexc.DoneWithThisFrameRef(resultbox.getref_base())
elif result_type == history.FLOAT:
raise
jitexc.DoneWithThisFrameFloat(resultbox.getfloatstorage())
else:
@@ -2165,7 +2165,8 @@
self.compile_exit_frame_with_exception(self.last_exc_box)
except SwitchToBlackhole as stb:
self.aborted_tracing(stb.reason)
- raise jitexc.ExitFrameWithExceptionRef(self.cpu,
lltype.cast_opaque_ptr(llmemory.GCREF, excvalue))
+ raise jitexc.ExitFrameWithExceptionRef(
+ lltype.cast_opaque_ptr(llmemory.GCREF, excvalue))
def check_recursion_invariant(self):
portal_call_depth = -1
@@ -2632,16 +2633,24 @@
num_green_args = self.jitdriver_sd.num_green_args
num_red_args = self.jitdriver_sd.num_red_args
for box in live_arg_boxes[num_green_args:num_green_args+num_red_args]:
- if box.type == history.INT: args.append(box.getint())
- elif box.type == history.REF: args.append(box.getref_base())
- elif box.type == history.FLOAT: args.append(box.getfloatstorage())
- else: assert 0
+ if box.type == history.INT:
+ args.append(box.getint())
+ elif box.type == history.REF:
+ args.append(box.getref_base())
+ elif box.type == history.FLOAT:
+ args.append(box.getfloatstorage())
+ else:
+ assert 0
res = self.jitdriver_sd.warmstate.execute_assembler(loop_token, *args)
kind = history.getkind(lltype.typeOf(res))
- if kind == 'void': raise jitexc.DoneWithThisFrameVoid()
- if kind == 'int': raise jitexc.DoneWithThisFrameInt(res)
- if kind == 'ref': raise jitexc.DoneWithThisFrameRef(self.cpu, res)
- if kind == 'float': raise jitexc.DoneWithThisFrameFloat(res)
+ if kind == 'void':
+ raise jitexc.DoneWithThisFrameVoid()
+ if kind == 'int':
+ raise jitexc.DoneWithThisFrameInt(res)
+ if kind == 'ref':
+ raise jitexc.DoneWithThisFrameRef(res)
+ if kind == 'float':
+ raise jitexc.DoneWithThisFrameFloat(res)
raise AssertionError(kind)
def prepare_resume_from_failure(self, deadframe, inputargs, resumedescr):
diff --git a/rpython/jit/metainterp/test/test_warmspot.py
b/rpython/jit/metainterp/test/test_warmspot.py
--- a/rpython/jit/metainterp/test/test_warmspot.py
+++ b/rpython/jit/metainterp/test/test_warmspot.py
@@ -601,7 +601,6 @@
exc = lltype.malloc(OBJECT)
exc.typeptr = exc_vtable
raise jitexc.ExitFrameWithExceptionRef(
- metainterp_sd.cpu,
lltype.cast_opaque_ptr(llmemory.GCREF, exc))
assert 0
diff --git a/rpython/jit/metainterp/typesystem.py
b/rpython/jit/metainterp/typesystem.py
--- a/rpython/jit/metainterp/typesystem.py
+++ b/rpython/jit/metainterp/typesystem.py
@@ -29,10 +29,7 @@
class LLTypeHelper(TypeSystemHelper):
name = 'lltype'
- functionptr = staticmethod(lltype.functionptr)
- nullptr = staticmethod(lltype.nullptr)
cast_instance_to_base_ref = staticmethod(cast_instance_to_base_ptr)
- BASETYPE = llmemory.GCREF
loops_done_with_this_frame_ref = None # patched by compile.py
def get_typeptr(self, obj):
diff --git a/rpython/jit/metainterp/warmspot.py
b/rpython/jit/metainterp/warmspot.py
--- a/rpython/jit/metainterp/warmspot.py
+++ b/rpython/jit/metainterp/warmspot.py
@@ -909,8 +909,8 @@
#
from rpython.jit.metainterp.warmstate import specialize_value
from rpython.jit.metainterp.warmstate import unspecialize_value
- portal_ptr = self.cpu.ts.functionptr(PORTALFUNC, 'portal',
- graph=portalgraph)
+ portal_ptr = lltype.functionptr(
+ PORTALFUNC, 'portal', graph=portalgraph)
jd._portal_ptr = portal_ptr
#
portalfunc_ARGS = []
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit