[pypy-svn] r74570 - in pypy/branch/blackhole-improvement/pypy/jit: backend/llgraph codewriter metainterp metainterp/test
arigo at codespeak.net
arigo at codespeak.net
Wed May 19 11:28:32 CEST 2010
Author: arigo
Date: Wed May 19 11:28:30 2010
New Revision: 74570
Modified:
pypy/branch/blackhole-improvement/pypy/jit/backend/llgraph/llimpl.py
pypy/branch/blackhole-improvement/pypy/jit/codewriter/heaptracker.py
pypy/branch/blackhole-improvement/pypy/jit/metainterp/blackhole.py
pypy/branch/blackhole-improvement/pypy/jit/metainterp/executor.py
pypy/branch/blackhole-improvement/pypy/jit/metainterp/pyjitpl.py
pypy/branch/blackhole-improvement/pypy/jit/metainterp/resume.py
pypy/branch/blackhole-improvement/pypy/jit/metainterp/test/test_basic.py
Log:
new_with_vtable.
Modified: pypy/branch/blackhole-improvement/pypy/jit/backend/llgraph/llimpl.py
==============================================================================
--- pypy/branch/blackhole-improvement/pypy/jit/backend/llgraph/llimpl.py (original)
+++ pypy/branch/blackhole-improvement/pypy/jit/backend/llgraph/llimpl.py Wed May 19 11:28:30 2010
@@ -10,6 +10,7 @@
from pypy.jit.metainterp.history import (ConstInt, ConstPtr,
BoxInt, BoxPtr, BoxObj, BoxFloat,
REF, INT, FLOAT)
+from pypy.jit.codewriter import heaptracker
from pypy.rpython.lltypesystem import lltype, llmemory, rclass, rstr
from pypy.rpython.ootypesystem import ootype
from pypy.rpython.module.support import LLSupport, OOSupport
@@ -728,9 +729,8 @@
def op_new_with_vtable(self, descr, vtable):
assert descr is None
- xxxxxxxxxxxx
- size = get_class_size(self.memocast, vtable)
- result = do_new(size)
+ descr = heaptracker.vtable2descr(self.cpu, vtable)
+ result = do_new(descr.ofs)
value = lltype.cast_opaque_ptr(rclass.OBJECTPTR, result)
value.typeptr = cast_from_int(rclass.CLASSTYPE, vtable)
return result
Modified: pypy/branch/blackhole-improvement/pypy/jit/codewriter/heaptracker.py
==============================================================================
--- pypy/branch/blackhole-improvement/pypy/jit/codewriter/heaptracker.py (original)
+++ pypy/branch/blackhole-improvement/pypy/jit/codewriter/heaptracker.py Wed May 19 11:28:30 2010
@@ -1,4 +1,4 @@
-from pypy.rpython.lltypesystem import lltype, rclass
+from pypy.rpython.lltypesystem import lltype, llmemory, rclass
from pypy.rlib.objectmodel import we_are_translated
@@ -52,7 +52,9 @@
sizedescr._corresponding_vtable = vtable
def vtable2descr(cpu, vtable):
- assert lltype.typeOf(vtable) == VTABLETYPE
+ assert lltype.typeOf(vtable) is lltype.Signed
+ vtable = llmemory.cast_int_to_adr(vtable)
+ vtable = llmemory.cast_adr_to_ptr(vtable, VTABLETYPE)
if we_are_translated():
# Build the dict {vtable: sizedescr} at runtime.
# This is necessary because the 'vtables' are just pointers to
@@ -67,4 +69,7 @@
def descr2vtable(cpu, descr):
from pypy.jit.metainterp import history
assert isinstance(descr, history.AbstractDescr)
- return descr._corresponding_vtable
+ vtable = descr._corresponding_vtable
+ vtable = llmemory.cast_ptr_to_adr(vtable)
+ vtable = llmemory.cast_adr_to_int(vtable)
+ return vtable
Modified: pypy/branch/blackhole-improvement/pypy/jit/metainterp/blackhole.py
==============================================================================
--- pypy/branch/blackhole-improvement/pypy/jit/metainterp/blackhole.py (original)
+++ pypy/branch/blackhole-improvement/pypy/jit/metainterp/blackhole.py Wed May 19 11:28:30 2010
@@ -899,7 +899,6 @@
@arguments("cpu", "d", returns="r")
def bhimpl_new_with_vtable(cpu, descr):
vtable = heaptracker.descr2vtable(cpu, descr)
- vtable = llmemory.cast_adr_to_int(llmemory.cast_ptr_to_adr(vtable))
return cpu.bh_new_with_vtable(descr, vtable)
@arguments("cpu", "r", returns="i")
Modified: pypy/branch/blackhole-improvement/pypy/jit/metainterp/executor.py
==============================================================================
--- pypy/branch/blackhole-improvement/pypy/jit/metainterp/executor.py (original)
+++ pypy/branch/blackhole-improvement/pypy/jit/metainterp/executor.py Wed May 19 11:28:30 2010
@@ -154,9 +154,7 @@
def exec_new_with_vtable(cpu, clsbox):
from pypy.jit.codewriter import heaptracker
vtable = clsbox.getint()
- vtableadr = llmemory.cast_int_to_adr(vtable)
- vtableptr = llmemory.cast_adr_to_ptr(vtableadr, heaptracker.VTABLETYPE)
- descr = heaptracker.vtable2descr(cpu, vtableptr)
+ descr = heaptracker.vtable2descr(cpu, vtable)
return cpu.bh_new_with_vtable(descr, vtable)
def do_new_with_vtable(metainterp, clsbox):
Modified: pypy/branch/blackhole-improvement/pypy/jit/metainterp/pyjitpl.py
==============================================================================
--- pypy/branch/blackhole-improvement/pypy/jit/metainterp/pyjitpl.py (original)
+++ pypy/branch/blackhole-improvement/pypy/jit/metainterp/pyjitpl.py Wed May 19 11:28:30 2010
@@ -320,11 +320,9 @@
@arguments("descr")
def opimpl_new_with_vtable(self, sizedescr):
from pypy.jit.codewriter import heaptracker
- from pypy.jit.metainterp.warmstate import wrap
cpu = self.metainterp.cpu
cls = heaptracker.descr2vtable(cpu, sizedescr)
- clsbox = wrap(cpu, cls, in_const_box=True)
- return self.execute(rop.NEW_WITH_VTABLE, clsbox)
+ return self.execute(rop.NEW_WITH_VTABLE, ConstInt(cls))
@FixME #arguments("box")
def opimpl_runtimenew(self, classbox):
Modified: pypy/branch/blackhole-improvement/pypy/jit/metainterp/resume.py
==============================================================================
--- pypy/branch/blackhole-improvement/pypy/jit/metainterp/resume.py (original)
+++ pypy/branch/blackhole-improvement/pypy/jit/metainterp/resume.py Wed May 19 11:28:30 2010
@@ -715,7 +715,7 @@
def allocate_with_vtable(self, known_class):
from pypy.jit.metainterp.executor import exec_new_with_vtable
- return exec_new_with_vtable(self.cpu, self.known_class)
+ return exec_new_with_vtable(self.cpu, known_class)
def setfield(self, descr, struct, fieldnum):
if descr.is_pointer_field():
Modified: pypy/branch/blackhole-improvement/pypy/jit/metainterp/test/test_basic.py
==============================================================================
--- pypy/branch/blackhole-improvement/pypy/jit/metainterp/test/test_basic.py (original)
+++ pypy/branch/blackhole-improvement/pypy/jit/metainterp/test/test_basic.py Wed May 19 11:28:30 2010
@@ -636,10 +636,9 @@
self.check_tree_loop_count(2) # the loop and the entry path
# we get:
# ENTER - compile the new loop
- # ENTER (BlackHole) - leave
# ENTER - compile the entry bridge
# ENTER - compile the leaving path
- self.check_enter_count(4)
+ self.check_enter_count(3)
def test_bridge_from_interpreter_2(self):
# one case for backend - computing of framesize on guard failure
More information about the Pypy-commit
mailing list