Author: Maciej Fijalkowski <[email protected]>
Branch: optresult
Changeset: r76160:37ac39dd0b1b
Date: 2015-02-27 14:14 +0200
http://bitbucket.org/pypy/pypy/changeset/37ac39dd0b1b/

Log:    slow progress

diff --git a/rpython/jit/codewriter/heaptracker.py 
b/rpython/jit/codewriter/heaptracker.py
--- a/rpython/jit/codewriter/heaptracker.py
+++ b/rpython/jit/codewriter/heaptracker.py
@@ -136,7 +136,7 @@
     vtable = llmemory.cast_ptr_to_adr(vtable)
     return adr2int(vtable)
 
-def gc_fielddescrs(gccache, STRUCT, res=None):
+def fielddescrs_from_struct(gccache, STRUCT, only_gc=False, res=None):
     from rpython.jit.backend.llsupport import descr
 
     if res is None:
@@ -147,7 +147,10 @@
         if FIELD is lltype.Void:
             continue
         elif isinstance(FIELD, lltype.Struct):
-            gc_fielddescrs(gccache, FIELD, res)
-        elif isinstance(FIELD, lltype.Ptr) and FIELD._needsgc():
+            fielddescrs_from_struct(gccache, FIELD, only_gc, res)
+        elif (not only_gc) or (isinstance(FIELD, lltype.Ptr) and 
FIELD._needsgc()):
             res.append(descr.get_field_descr(gccache, STRUCT, name))
     return res
+
+def gc_fielddescrs(gccache, STRUCT):
+    return fielddescrs_from_struct(gccache, STRUCT, True)
diff --git a/rpython/jit/metainterp/optimizeopt/virtualize.py 
b/rpython/jit/metainterp/optimizeopt/virtualize.py
--- a/rpython/jit/metainterp/optimizeopt/virtualize.py
+++ b/rpython/jit/metainterp/optimizeopt/virtualize.py
@@ -13,31 +13,25 @@
 from rpython.rlib.objectmodel import we_are_translated, specialize
 from rpython.jit.metainterp.optimizeopt.intutils import IntUnbounded
 
-class AbstractVirtualValue:  #XXX (optimizer.PtrOptInfo):
-    _attrs_ = ('keybox', 'source_op', '_cached_vinfo')
-    box = None
+class AbstractVirtualInfo(optimizer.PtrOptInfo):
+    _attrs_ = ('_cached_vinfo',)
     _tag = optimizer.LEVEL_NONNULL
     is_about_raw = False
     _cached_vinfo = None
 
-    def __init__(self, source_op):
-        self.source_op = source_op
-
     def is_forced_virtual(self):
+        xxx
         return self.box is not None
 
-    def get_key_box(self):
-        if self.box is None:
-            return self.source_op
-        return self.box
-
     def force_box(self, optforce):
+        xxxx
         if self.box is None:
             optforce.forget_numberings(self.source_op)
             self._really_force(optforce)
         return self.box
 
     def force_at_end_of_preamble(self, already_forced, optforce):
+        xxxx
         value = already_forced.get(self, None)
         if value:
             return value
@@ -70,11 +64,11 @@
     return cpu._optimizeopt_fielddescrlist_cache
 get_fielddescrlist_cache._annspecialcase_ = "specialize:memo"
 
-class AbstractVirtualStructValue(AbstractVirtualValue):
-    _attrs_ = ('_fields', 'cpu', '_cached_sorted_fields')
+class AbstractVirtualStructInfo(AbstractVirtualInfo):
+    _attrs_ = ('_fields', '_cached_sorted_fields')
 
-    def __init__(self, cpu, source_op):
-        AbstractVirtualValue.__init__(self, source_op)
+    def __init__(self, cpu):
+        AbstractVirtualInfo.__init__(self)
         self.cpu = cpu
         self._fields = {}
         self._cached_sorted_fields = None
@@ -195,11 +189,11 @@
             fieldvalue = self._fields[ofs]
             fieldvalue.visitor_walk_recursive(visitor)
 
-class VirtualValue(AbstractVirtualStructValue):
+class VirtualInfo(AbstractVirtualStructInfo):
     _tag = optimizer.LEVEL_KNOWNCLASS
 
-    def __init__(self, cpu, known_class, source_op):
-        AbstractVirtualStructValue.__init__(self, cpu, source_op)
+    def __init__(self, known_class):
+        AbstractVirtualStructInfo.__init__(self)
         assert isinstance(known_class, Const)
         self.known_class = known_class
 
@@ -218,7 +212,7 @@
         field_names = [field.name for field in self._fields]
         return "<VirtualValue cls=%s fields=%s>" % (cls_name, field_names)
 
-class VStructValue(AbstractVirtualStructValue):
+class VStructInfo(AbstractVirtualStructInfo):
 
     def __init__(self, cpu, structdescr, source_op):
         AbstractVirtualStructValue.__init__(self, cpu, source_op)
@@ -232,7 +226,7 @@
     def _get_descr(self):
         return self.structdescr
 
-class AbstractVArrayValue(AbstractVirtualValue):
+class AbstractVArrayInfo(AbstractVirtualInfo):
     """
     Base class for VArrayValue (for normal GC arrays) and VRawBufferValue (for
     malloc()ed memory)
@@ -263,7 +257,7 @@
                 itemvalue.visitor_walk_recursive(visitor)
 
 
-class VArrayValue(AbstractVArrayValue):
+class VArrayInfo(AbstractVArrayInfo):
 
     def __init__(self, arraydescr, constvalue, size, source_op,
                  clear=False):
@@ -352,7 +346,7 @@
         return visitor.visit_varray(self.arraydescr, self.clear)
 
 
-class VArrayStructValue(AbstractVirtualValue):
+class VArrayStructInfo(AbstractVirtualInfo):
     def __init__(self, arraydescr, size, source_op):
         AbstractVirtualValue.__init__(self, source_op)
         self.arraydescr = arraydescr
@@ -421,7 +415,7 @@
         return visitor.visit_varraystruct(self.arraydescr, 
self._get_list_of_descrs())
 
 
-class VRawBufferValue(AbstractVArrayValue):
+class VRawBufferInfo(AbstractVArrayInfo):
     is_about_raw = True
 
     def __init__(self, cpu, logops, size, source_op):
@@ -487,7 +481,7 @@
                                         self.buffer.descrs[:])
 
 
-class VRawSliceValue(AbstractVirtualValue):
+class VRawSliceInfo(AbstractVirtualInfo):
     is_about_raw = True
 
     def __init__(self, rawbuffer_value, offset, source_op):
@@ -529,6 +523,7 @@
     _last_guard_not_forced_2 = None
 
     def make_virtual(self, known_class, source_op):
+        xxx
         vvalue = VirtualValue(self.optimizer.cpu, known_class, source_op)
         self.make_equal_to(source_op, vvalue)
         return vvalue
diff --git a/rpython/jit/metainterp/optimizeopt/vstring.py 
b/rpython/jit/metainterp/optimizeopt/vstring.py
--- a/rpython/jit/metainterp/optimizeopt/vstring.py
+++ b/rpython/jit/metainterp/optimizeopt/vstring.py
@@ -87,7 +87,7 @@
 #                                 CONST_0, offsetbox, lengthbox, mode)
 
 
-class VAbstractStringValue(virtualize.AbstractVirtualValue):
+class VAbstractStringInfo(virtualize.AbstractVirtualInfo):
     _attrs_ = ('mode',)
 
     def __init__(self, source_op, mode):
@@ -122,7 +122,7 @@
                                       offsetbox, mode)
 
 
-class VStringPlainValue(VAbstractStringValue):
+class VStringPlainInfo(VAbstractStringInfo):
     """A string built with newstr(const)."""
     _lengthbox = None     # cache only
 
@@ -216,7 +216,7 @@
         return visitor.visit_vstrplain(self.mode is mode_unicode)
 
 
-class VStringConcatValue(VAbstractStringValue):
+class VStringConcatInfo(VAbstractStringInfo):
     """The concatenation of two other strings."""
     _attrs_ = ('left', 'right', 'lengthbox')
 
@@ -269,7 +269,7 @@
         return visitor.visit_vstrconcat(self.mode is mode_unicode)
 
 
-class VStringSliceValue(VAbstractStringValue):
+class VStringSliceInfo(VAbstractStringInfo):
     """A slice."""
     _attrs_ = ('vstr', 'vstart', 'vlength')
 
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to