Author: Alex Gaynor <[email protected]>
Branch: inline-virtualref
Changeset: r60267:81cea2b96fd7
Date: 2013-01-20 21:46 -0800
http://bitbucket.org/pypy/pypy/changeset/81cea2b96fd7/
Log: try to pass stuff that's really the right type, except now it fails
for another (more obscure reasons)
diff --git a/rpython/jit/backend/llgraph/runner.py
b/rpython/jit/backend/llgraph/runner.py
--- a/rpython/jit/backend/llgraph/runner.py
+++ b/rpython/jit/backend/llgraph/runner.py
@@ -1,19 +1,21 @@
-import py, weakref
+import weakref
+
+import py
+
from rpython.jit.backend import model
from rpython.jit.backend.llgraph import support
-from rpython.jit.metainterp.history import AbstractDescr
-from rpython.jit.metainterp.history import Const, getkind
-from rpython.jit.metainterp.history import INT, REF, FLOAT, VOID
-from rpython.jit.metainterp.resoperation import rop
from rpython.jit.codewriter import longlong, heaptracker
from rpython.jit.codewriter.effectinfo import EffectInfo
-
+from rpython.jit.metainterp.history import (AbstractDescr, Const, getkind, INT,
+ REF, FLOAT, VOID)
+from rpython.jit.metainterp.resoperation import rop
from rpython.rtyper.llinterp import LLInterpreter, LLException
from rpython.rtyper.lltypesystem import lltype, llmemory, rffi, rclass, rstr
-
+from rpython.rlib.objectmodel import compute_unique_id
from rpython.rlib.rarithmetic import ovfcheck, r_uint, r_ulonglong
from rpython.rlib.rtimer import read_timestamp
+
class LLTrace(object):
has_been_freed = False
invalid = False
@@ -171,6 +173,7 @@
self.rtyper = rtyper
self.llinterp = LLInterpreter(rtyper)
self.descrs = {}
+ self.token_to_frame = {}
class MiniStats:
pass
self.stats = stats or MiniStats()
@@ -262,7 +265,7 @@
return gcref
def force(self, force_token):
- frame = force_token
+ frame = self.token_to_frame[force_token]
assert isinstance(frame, LLFrame)
assert frame.forced_deadframe is None
values = []
@@ -905,7 +908,8 @@
return self.cpu.bh_new_with_vtable(vtable, descr)
def execute_force_token(self, _):
- return self
+ self.cpu.token_to_frame[compute_unique_id(self)] = self
+ return compute_unique_id(self)
def execute_cond_call_gc_wb(self, descr, a, b):
py.test.skip("cond_call_gc_wb not supported")
diff --git a/rpython/jit/metainterp/virtualref.py
b/rpython/jit/metainterp/virtualref.py
--- a/rpython/jit/metainterp/virtualref.py
+++ b/rpython/jit/metainterp/virtualref.py
@@ -1,7 +1,7 @@
from rpython.annotator import model as annmodel
from rpython.jit.codewriter import heaptracker
from rpython.jit.metainterp import history
-from rpython.rlib.jit import InvalidVirtualRef
+from rpython.rlib.jit import InvalidVirtualRef, look_inside_iff
from rpython.rtyper.annlowlevel import MixLevelHelperAnnotator
from rpython.rtyper.lltypesystem import lltype, llmemory, rclass
from rpython.rtyper.rmodel import inputconst, log
diff --git a/rpython/rtyper/lltypesystem/rffi.py
b/rpython/rtyper/lltypesystem/rffi.py
--- a/rpython/rtyper/lltypesystem/rffi.py
+++ b/rpython/rtyper/lltypesystem/rffi.py
@@ -1,26 +1,26 @@
+import os
+import sys
+
import py
+
from rpython.annotator import model as annmodel
-from rpython.rtyper.lltypesystem import lltype, rstr
-from rpython.rtyper.lltypesystem import ll2ctypes
-from rpython.rtyper.lltypesystem.llmemory import cast_ptr_to_adr
-from rpython.rtyper.lltypesystem.llmemory import itemoffsetof, raw_memcopy
from rpython.annotator.model import lltype_to_annotation
+from rpython.rlib import rarithmetic, rgc, jit
+from rpython.rlib.objectmodel import (Symbolic, keepalive_until_here,
+ enforceargs, we_are_translated)
+from rpython.rlib.rarithmetic import maxint, LONG_BIT
+from rpython.rlib.rstring import StringBuilder, UnicodeBuilder, assert_str0
+from rpython.rlib.unroll import unrolling_iterable
+from rpython.rtyper.annlowlevel import llhelper
+from rpython.rtyper.extregistry import ExtRegistryEntry
+from rpython.rtyper.lltypesystem import lltype, ll2ctypes, llmemory
+from rpython.rtyper.lltypesystem.llmemory import (cast_ptr_to_adr,
itemoffsetof,
+ raw_memcopy)
+from rpython.rtyper.tool.rfficache import platform, sizeof_c_type
from rpython.tool.sourcetools import func_with_new_name
-from rpython.rlib.objectmodel import Symbolic
-from rpython.rlib.objectmodel import keepalive_until_here, enforceargs
-from rpython.rlib import rarithmetic, rgc
-from rpython.rtyper.extregistry import ExtRegistryEntry
-from rpython.rlib.unroll import unrolling_iterable
-from rpython.rtyper.tool.rfficache import platform, sizeof_c_type
+from rpython.translator.platform import CompilationError
from rpython.translator.tool.cbuild import ExternalCompilationInfo
-from rpython.rtyper.annlowlevel import llhelper
-from rpython.rlib.objectmodel import we_are_translated
-from rpython.rlib.rstring import StringBuilder, UnicodeBuilder, assert_str0
-from rpython.rlib import jit
-from rpython.rtyper.lltypesystem import llmemory
-from rpython.rlib.rarithmetic import maxint, LONG_BIT
-from rpython.translator.platform import CompilationError
-import os, sys
+
class CConstant(Symbolic):
""" A C-level constant, maybe #define, rendered directly.
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit