[pypy-commit] pypy pypy-dont-copy-ops: fixes

fijal noreply at buildbot.pypy.org
Tue Dec 30 13:43:09 CET 2014


Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: pypy-dont-copy-ops
Changeset: r75159:9053d96eece4
Date: 2014-12-30 14:42 +0200
http://bitbucket.org/pypy/pypy/changeset/9053d96eece4/

Log:	fixes

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
@@ -130,7 +130,7 @@
     label = ResOperation(rop.LABEL, inputargs, None,
                          descr=TargetToken(jitcell_token))
     end_label = ResOperation(rop.LABEL, jumpargs, None, descr=jitcell_token)
-    part.operations = [label] + h_ops + [end_label]
+    part.operations = [label] + h_ops[start:] + [end_label]
 
     try:
         start_state = optimize_trace(metainterp_sd, jitdriver_sd, part,
@@ -208,7 +208,7 @@
     h_ops = history.operations
 
     part.operations = [partial_trace.operations[-1]] + \
-                      h_ops + \
+                      h_ops[start:] + \
                       [ResOperation(rop.JUMP, jumpargs, None, descr=loop_jitcell_token)]
     label = part.operations[0]
     orignial_label = label.clone()
@@ -768,8 +768,7 @@
         hidden_all_virtuals = obj.hide(metainterp_sd.cpu)
         metainterp_sd.cpu.set_savedata_ref(deadframe, hidden_all_virtuals)
 
-def invent_fail_descr_for_op(op, optimizer):
-    opnum = op.getopnum()
+def invent_fail_descr_for_op(opnum, optimizer):
     if opnum == rop.GUARD_NOT_FORCED or opnum == rop.GUARD_NOT_FORCED_2:
         resumedescr = ResumeGuardForcedDescr()
         resumedescr._init(optimizer.metainterp_sd, optimizer.jitdriver_sd)
@@ -837,7 +836,6 @@
     # it does not work -- i.e. none of the existing old_loop_tokens match.
     new_trace = create_empty_loop(metainterp)
     new_trace.inputargs = metainterp.history.inputargs[:]
-    # clone ops, as optimize_bridge can mutate the ops
 
     new_trace.operations = metainterp.history.operations[:]
     metainterp_sd = metainterp.staticdata
diff --git a/rpython/jit/metainterp/optimizeopt/heap.py b/rpython/jit/metainterp/optimizeopt/heap.py
--- a/rpython/jit/metainterp/optimizeopt/heap.py
+++ b/rpython/jit/metainterp/optimizeopt/heap.py
@@ -94,10 +94,12 @@
         else:
             return self._cached_fields.get(structvalue, None)
 
-    def remember_field_value(self, structvalue, fieldvalue, getfield_op=None):
+    def remember_field_value(self, structvalue, fieldvalue, op=None,
+                             optimizer=None):
         assert self._lazy_setfield is None
         self._cached_fields[structvalue] = fieldvalue
-        self._cached_fields_getfield_op[structvalue] = getfield_op
+        op = optimizer.get_op_replacement(op)
+        self._cached_fields_getfield_op[structvalue] = op
 
     def force_lazy_setfield(self, optheap, can_cache=True):
         op = self._lazy_setfield
@@ -121,7 +123,8 @@
             # field.
             structvalue = optheap.getvalue(op.getarg(0))
             fieldvalue = optheap.getvalue(op.getarglist()[-1])
-            self.remember_field_value(structvalue, fieldvalue, op)
+            self.remember_field_value(structvalue, fieldvalue, op,
+                                      optheap.optimizer)
         elif not can_cache:
             self.clear()
 
@@ -446,7 +449,7 @@
         self.emit_operation(op)
         # then remember the result of reading the field
         fieldvalue = self.getvalue(op.result)
-        cf.remember_field_value(structvalue, fieldvalue, op)
+        cf.remember_field_value(structvalue, fieldvalue, op, self.optimizer)
 
     def optimize_GETFIELD_GC_PURE(self, op):
         structvalue = self.getvalue(op.getarg(0))
@@ -490,7 +493,7 @@
         # the remember the result of reading the array item
         if cf is not None:
             fieldvalue = self.getvalue(op.result)
-            cf.remember_field_value(arrayvalue, fieldvalue, op)
+            cf.remember_field_value(arrayvalue, fieldvalue, op, self.optimizer)
 
     def optimize_GETARRAYITEM_GC_PURE(self, op):
         arrayvalue = self.getvalue(op.getarg(0))
diff --git a/rpython/jit/metainterp/optimizeopt/optimizer.py b/rpython/jit/metainterp/optimizeopt/optimizer.py
--- a/rpython/jit/metainterp/optimizeopt/optimizer.py
+++ b/rpython/jit/metainterp/optimizeopt/optimizer.py
@@ -239,14 +239,17 @@
     def make_nonnull(self, optimizer):
         assert self.getlevel() < LEVEL_NONNULL
         self.setlevel(LEVEL_NONNULL)
-        self.last_guard_pos = len(optimizer._newoperations)
+        if optimizer is not None:
+            self.last_guard_pos = len(optimizer._newoperations) - 1
+            assert self.get_last_guard(optimizer).is_guard()
 
     def make_constant_class(self, optimizer, classbox):
         assert self.getlevel() < LEVEL_KNOWNCLASS
         self.known_class = classbox
         self.setlevel(LEVEL_KNOWNCLASS)
         if optimizer is not None:
-            self.last_guard_pos = len(optimizer._newoperations)
+            self.last_guard_pos = len(optimizer._newoperations) - 1
+            assert self.get_last_guard(optimizer).is_guard()
 
     def import_from(self, other, optimizer):
         OptValue.import_from(self, other, optimizer)
@@ -381,7 +384,7 @@
     def get_last_guard(self, optimizer):
         return None
 
-    def get_known_class(self, optimizer):
+    def get_known_class(self):
         return None
 
     def getlenbound(self):
@@ -602,6 +605,13 @@
         self.ensure_imported(value)
         return value
 
+    def get_box_replacement(self, box):
+        try:
+            v = self.values[box]
+        except KeyError:
+            return box
+        return v.get_key_box()
+
     def ensure_imported(self, value):
         pass
 
@@ -726,9 +736,10 @@
             else:
                 self.ensure_imported(value)
                 newbox = value.force_box(self)
-                if not changed and arg is not newbox:
-                    op = op.clone()
-                    changed = True
+                if arg is not newbox:
+                    if not changed:
+                        op = op.clone()
+                        changed = True
                     op.setarg(i, newbox)
         self.metainterp_sd.profiler.count(jitprof.Counters.OPT_OPS)
         if op.is_guard():
@@ -744,8 +755,25 @@
                 op = self.store_final_boxes_in_guard(guard_op, pendingfields)
         elif op.can_raise():
             self.exception_might_have_happened = True
+        self._last_emitted_op = orig_op
         self._newoperations.append(op)
 
+    def get_op_replacement(self, op):
+        changed = False
+        for i, arg in enumerate(op.getarglist()):
+            try:
+                v = self.values[arg]
+            except KeyError:
+                pass
+            else:
+                box = v.get_key_box()
+                if box is not arg:
+                    if not changed:
+                        changed = True
+                        op = op.clone()
+                    op.setarg(i, box)
+        return op
+
     def replace_op(self, old_op_pos, new_op):
         old_op = self._newoperations[old_op_pos]
         assert old_op.is_guard()
@@ -760,7 +788,7 @@
             descr = op.getdescr()
             assert isinstance(descr, compile.ResumeAtPositionDescr)
         else:
-            descr = compile.invent_fail_descr_for_op(op, self)
+            descr = compile.invent_fail_descr_for_op(op.getopnum(), self)
             op.setdescr(descr)
         assert isinstance(descr, compile.ResumeGuardDescr)
         assert isinstance(op, GuardResOp)
@@ -799,13 +827,7 @@
         n = op.numargs()
         args = [None] * (n + 2)
         for i in range(n):
-            arg = op.getarg(i)
-            try:
-                value = self.values[arg]
-            except KeyError:
-                pass
-            else:
-                arg = value.get_key_box()
+            arg = self.get_box_replacement(op.getarg(i))
             args[i] = arg
         args[n] = ConstInt(op.getopnum())
         args[n + 1] = op.getdescr()
diff --git a/rpython/jit/metainterp/optimizeopt/pure.py b/rpython/jit/metainterp/optimizeopt/pure.py
--- a/rpython/jit/metainterp/optimizeopt/pure.py
+++ b/rpython/jit/metainterp/optimizeopt/pure.py
@@ -26,6 +26,7 @@
             nextop = None
 
         args = None
+        remember = None
         if canfold:
             for i in range(op.numargs()):
                 if self.get_constant_box(op.getarg(i)) is None:
@@ -45,7 +46,7 @@
                 self.optimizer.make_equal_to(op.result, oldvalue, True)
                 return
             else:
-                self.remember_emitting_pure(op)
+                remember = op
 
         # otherwise, the operation remains
         self.emit_operation(op)
@@ -55,6 +56,8 @@
             self.emit_operation(nextop)
         if args is not None:
             self.pure_operations[args] = self.getvalue(op.result)
+        if remember:
+            self.remember_emitting_pure(remember)
 
     def optimize_CALL_PURE(self, op):
         # Step 1: check if all arguments are constant
@@ -77,12 +80,12 @@
             return
         else:
             self.pure_operations[args] = self.getvalue(op.result)
-            self.remember_emitting_pure(op)
 
         # replace CALL_PURE with just CALL
         args = op.getarglist()
         self.emit_operation(ResOperation(rop.CALL, args, op.result,
                                          op.getdescr()))
+        self.remember_emitting_pure(op)
 
     def optimize_GUARD_NO_EXCEPTION(self, op):
         if self.last_emitted_operation is REMOVED:
@@ -112,6 +115,7 @@
         return self.pure_operations.get(key, None)
 
     def remember_emitting_pure(self, op):
+        op = self.optimizer.get_op_replacement(op)
         self.emitted_pure_operations[op] = True
 
     def produce_potential_short_preamble_ops(self, sb):
diff --git a/rpython/jit/metainterp/optimizeopt/rewrite.py b/rpython/jit/metainterp/optimizeopt/rewrite.py
--- a/rpython/jit/metainterp/optimizeopt/rewrite.py
+++ b/rpython/jit/metainterp/optimizeopt/rewrite.py
@@ -317,6 +317,7 @@
                         args = [old_guard_op.getarg(0), op.getarg(1)],
                         descr = descr)
             self.optimizer.replace_guard(op, value)
+            descr.make_a_counter_per_value(op)
             # to be safe
             if isinstance(value, PtrOptValue):
                 value.last_guard_pos = -1
@@ -364,8 +365,13 @@
                             args = [old_guard_op.getarg(0), op.getarg(1)],
                             descr=descr)
                 self.optimizer.replace_guard(op, value)
+                # not emitting the guard, so we have to pass None to
+                # make_constant_class, so last_guard_pos is not updated
+                self.emit_operation(op)
+                value.make_constant_class(None, expectedclassbox)
+                return
+        self.emit_operation(op)
         value.make_constant_class(self.optimizer, expectedclassbox)
-        self.emit_operation(op)
 
     def optimize_GUARD_NONNULL_CLASS(self, op):
         value = self.getvalue(op.getarg(0))
diff --git a/rpython/jit/metainterp/optimizeopt/test/test_virtualstate.py b/rpython/jit/metainterp/optimizeopt/test/test_virtualstate.py
--- a/rpython/jit/metainterp/optimizeopt/test/test_virtualstate.py
+++ b/rpython/jit/metainterp/optimizeopt/test/test_virtualstate.py
@@ -125,12 +125,12 @@
 
         ptr = PtrOptValue(BoxPtr())
         nonnull = PtrOptValue(BoxPtr())
-        nonnull.make_nonnull(0)
+        nonnull.make_nonnull(None)
         knownclass = PtrOptValue(BoxPtr())
         clsbox = self.cpu.ts.cls_of_box(BoxPtr(self.myptr))
-        knownclass.make_constant_class(clsbox, 0)
+        knownclass.make_constant_class(None, clsbox)
         const = PtrOptValue(BoxPtr)
-        const.make_constant_class(clsbox, 0)
+        const.make_constant_class(None, clsbox)
         const.make_constant(ConstPtr(self.myptr))
         inorder = [ptr, nonnull, knownclass, const]
         for i in range(len(inorder)):
@@ -181,18 +181,18 @@
 
     def test_known_class_generalization(self):
         knownclass1 = PtrOptValue(BoxPtr())
-        knownclass1.make_constant_class(ConstPtr(self.myptr), 0)
+        knownclass1.make_constant_class(None, ConstPtr(self.myptr))
         info1 = NotVirtualStateInfo(knownclass1)
         info1.position = 0
         knownclass2 = PtrOptValue(BoxPtr())
-        knownclass2.make_constant_class(ConstPtr(self.myptr), 0)
+        knownclass2.make_constant_class(None, ConstPtr(self.myptr))
         info2 = NotVirtualStateInfo(knownclass2)
         info2.position = 0
         self.check_no_guards(info1, info2)
         self.check_no_guards(info2, info1)
 
         knownclass3 = PtrOptValue(BoxPtr())
-        knownclass3.make_constant_class(ConstPtr(self.myptr2), 0)
+        knownclass3.make_constant_class(None, ConstPtr(self.myptr2))
         info3 = NotVirtualStateInfo(knownclass3)
         info3.position = 0
         self.check_invalid(info1, info3)
@@ -221,11 +221,11 @@
 
         knownclass_val = PtrOptValue(self.nodebox)
         classbox = self.cpu.ts.cls_of_box(self.nodebox)
-        knownclass_val.make_constant_class(classbox, -1)
+        knownclass_val.make_constant_class(None, classbox,)
         knownclass_info = NotVirtualStateInfo(knownclass_val)
         knownclass2_val = PtrOptValue(self.nodebox2)
         classbox = self.cpu.ts.cls_of_box(self.nodebox2)
-        knownclass2_val.make_constant_class(classbox, -1)
+        knownclass2_val.make_constant_class(None, classbox)
         knownclass2_info = NotVirtualStateInfo(knownclass2_val)
 
         constant_val = IntOptValue(BoxInt())
@@ -385,7 +385,7 @@
     def test_known_class(self):
         value1 = PtrOptValue(self.nodebox)
         classbox = self.cpu.ts.cls_of_box(self.nodebox)
-        value1.make_constant_class(classbox, -1)
+        value1.make_constant_class(None, classbox)
         info1 = NotVirtualStateInfo(value1)
         info2 = NotVirtualStateInfo(PtrOptValue(self.nodebox))
         expected = """
@@ -399,7 +399,7 @@
     def test_known_class_value(self):
         value1 = PtrOptValue(self.nodebox)
         classbox = self.cpu.ts.cls_of_box(self.nodebox)
-        value1.make_constant_class(classbox, -1)
+        value1.make_constant_class(None, classbox)
         box = self.nodebox
         guards = value1.make_guards(box)
         expected = """
@@ -423,7 +423,7 @@
     def test_equal_inputargs(self):
         value = PtrOptValue(self.nodebox)
         classbox = self.cpu.ts.cls_of_box(self.nodebox)
-        value.make_constant_class(classbox, -1)
+        value.make_constant_class(None, classbox)
         knownclass_info = NotVirtualStateInfo(value)
         vstate1 = VirtualState([knownclass_info, knownclass_info])
         assert vstate1.generalization_of(vstate1)
@@ -461,7 +461,7 @@
     def test_generate_guards_on_virtual_fields_matches_array(self):
         innervalue1 = PtrOptValue(self.nodebox)
         constclassbox = self.cpu.ts.cls_of_box(self.nodebox)
-        innervalue1.make_constant_class(constclassbox, -1)
+        innervalue1.make_constant_class(None, constclassbox)
         innerinfo1 = NotVirtualStateInfo(innervalue1)
         innerinfo1.position = 1
         innerinfo2 = NotVirtualStateInfo(PtrOptValue(self.nodebox))
@@ -488,7 +488,7 @@
     def test_generate_guards_on_virtual_fields_matches_instance(self):
         innervalue1 = PtrOptValue(self.nodebox)
         constclassbox = self.cpu.ts.cls_of_box(self.nodebox)
-        innervalue1.make_constant_class(constclassbox, -1)
+        innervalue1.make_constant_class(None, constclassbox)
         innerinfo1 = NotVirtualStateInfo(innervalue1)
         innerinfo1.position = 1
         innerinfo2 = NotVirtualStateInfo(PtrOptValue(self.nodebox))
@@ -513,7 +513,7 @@
     def test_generate_guards_on_virtual_fields_matches_struct(self):
         innervalue1 = PtrOptValue(self.nodebox)
         constclassbox = self.cpu.ts.cls_of_box(self.nodebox)
-        innervalue1.make_constant_class(constclassbox, -1)
+        innervalue1.make_constant_class(None, constclassbox)
         innerinfo1 = NotVirtualStateInfo(innervalue1)
         innerinfo1.position = 1
         innerinfo2 = NotVirtualStateInfo(PtrOptValue(self.nodebox))
@@ -540,7 +540,7 @@
     def test_generate_guards_on_virtual_fields_matches_arraystruct(self):
         innervalue1 = PtrOptValue(self.nodebox)
         constclassbox = self.cpu.ts.cls_of_box(self.nodebox)
-        innervalue1.make_constant_class(constclassbox, -1)
+        innervalue1.make_constant_class(None, constclassbox)
         innerinfo1 = NotVirtualStateInfo(innervalue1)
         innerinfo1.position = 1
         innerinfo2 = NotVirtualStateInfo(PtrOptValue(self.nodebox))
@@ -572,7 +572,7 @@
         info1 = VirtualStateInfo(ConstInt(42), [1, 2])
         value = PtrOptValue(self.nodebox)
         classbox = self.cpu.ts.cls_of_box(self.nodebox)
-        value.make_constant_class(classbox, -1)
+        value.make_constant_class(None, classbox)
         knownclass_info = NotVirtualStateInfo(value)
         info1.fieldstate = [knownclass_info, knownclass_info]
         vstate1 = VirtualState([info1])
@@ -600,7 +600,7 @@
         info1 = VirtualStateInfo(ConstInt(42), [1, 2])
         value = PtrOptValue(self.nodebox)
         classbox = self.cpu.ts.cls_of_box(self.nodebox)
-        value.make_constant_class(classbox, -1)
+        value.make_constant_class(None, classbox)
         knownclass_info = NotVirtualStateInfo(value)
         info1.fieldstate = [knownclass_info, knownclass_info]
         vstate1 = VirtualState([info1])
@@ -609,7 +609,7 @@
         info2 = VirtualStateInfo(ConstInt(42), [1, 2])
         value = PtrOptValue(self.nodebox2)
         classbox = self.cpu.ts.cls_of_box(self.nodebox2)
-        value.make_constant_class(classbox, -1)
+        value.make_constant_class(None, classbox)
         knownclass_info = NotVirtualStateInfo(value)
         info2.fieldstate = [knownclass_info, knownclass_info]
         vstate2 = VirtualState([info2])
@@ -622,7 +622,7 @@
         info1 = VirtualStateInfo(ConstInt(42), [10, 20])
         value = PtrOptValue(self.nodebox)
         classbox = self.cpu.ts.cls_of_box(self.nodebox)
-        value.make_constant_class(classbox, -1)
+        value.make_constant_class(None, classbox)
         knownclass_info = NotVirtualStateInfo(value)
         info1.fieldstate = [knownclass_info, knownclass_info]
         vstate1 = VirtualState([info1])
@@ -631,7 +631,7 @@
         info2 = VirtualStateInfo(ConstInt(42), [1, 2])
         value = PtrOptValue(self.nodebox2)
         classbox = self.cpu.ts.cls_of_box(self.nodebox2)
-        value.make_constant_class(classbox, -1)
+        value.make_constant_class(None, classbox)
         knownclass_info = NotVirtualStateInfo(value)
         info2.fieldstate = [knownclass_info, knownclass_info]
         vstate2 = VirtualState([info2])
@@ -644,7 +644,7 @@
         info1 = VirtualStateInfo(ConstInt(42), [1, 2])
         value = PtrOptValue(self.nodebox)
         classbox = self.cpu.ts.cls_of_box(self.nodebox)
-        value.make_constant_class(classbox, -1)
+        value.make_constant_class(None, classbox)
         knownclass_info = NotVirtualStateInfo(value)
         info1.fieldstate = [knownclass_info, knownclass_info]
         vstate1 = VirtualState([info1])
@@ -653,7 +653,7 @@
         info2 = VirtualStateInfo(ConstInt(7), [1, 2])
         value = PtrOptValue(self.nodebox2)
         classbox = self.cpu.ts.cls_of_box(self.nodebox2)
-        value.make_constant_class(classbox, -1)
+        value.make_constant_class(None, classbox)
         knownclass_info = NotVirtualStateInfo(value)
         info2.fieldstate = [knownclass_info, knownclass_info]
         vstate2 = VirtualState([info2])
@@ -666,7 +666,7 @@
         info1 = VirtualStateInfo(ConstInt(42), [1, 2])
         value = PtrOptValue(self.nodebox)
         classbox = self.cpu.ts.cls_of_box(self.nodebox)
-        value.make_constant_class(classbox, -1)
+        value.make_constant_class(None, classbox)
         knownclass_info = NotVirtualStateInfo(value)
         info1.fieldstate = [knownclass_info, knownclass_info]
         vstate1 = VirtualState([info1])
@@ -683,7 +683,7 @@
         info1 = VArrayStateInfo(42)
         value = PtrOptValue(self.nodebox)
         classbox = self.cpu.ts.cls_of_box(self.nodebox)
-        value.make_constant_class(classbox, -1)
+        value.make_constant_class(None, classbox)
         knownclass_info = NotVirtualStateInfo(value)
         info1.fieldstate = [knownclass_info, knownclass_info]
         vstate1 = VirtualState([info1])
@@ -692,7 +692,7 @@
         info2 = VArrayStateInfo(42)
         value = PtrOptValue(self.nodebox2)
         classbox = self.cpu.ts.cls_of_box(self.nodebox2)
-        value.make_constant_class(classbox, -1)
+        value.make_constant_class(None, classbox)
         knownclass_info = NotVirtualStateInfo(value)
         info2.fieldstate = [knownclass_info, knownclass_info]
         vstate2 = VirtualState([info2])
@@ -705,7 +705,7 @@
         info1 = VArrayStateInfo(42)
         value = PtrOptValue(self.nodebox)
         classbox = self.cpu.ts.cls_of_box(self.nodebox)
-        value.make_constant_class(classbox, -1)
+        value.make_constant_class(None, classbox)
         knownclass_info = NotVirtualStateInfo(value)
         info1.fieldstate = [knownclass_info, knownclass_info]
         vstate1 = VirtualState([info1])
@@ -714,7 +714,7 @@
         info2 = VArrayStateInfo(42)
         value = PtrOptValue(self.nodebox)
         classbox = self.cpu.ts.cls_of_box(self.nodebox)
-        value.make_constant_class(classbox, -1)
+        value.make_constant_class(None, classbox)
         knownclass_info = NotVirtualStateInfo(value)
         info2.fieldstate = [knownclass_info]
         vstate2 = VirtualState([info2])
@@ -727,7 +727,7 @@
         info1 = VArrayStateInfo(42)
         value = PtrOptValue(self.nodebox)
         classbox = self.cpu.ts.cls_of_box(self.nodebox)
-        value.make_constant_class(classbox, -1)
+        value.make_constant_class(None, classbox)
         knownclass_info = NotVirtualStateInfo(value)
         info1.fieldstate = [knownclass_info, knownclass_info]
         vstate1 = VirtualState([info1])
@@ -736,7 +736,7 @@
         info2 = VArrayStateInfo(7)
         value = PtrOptValue(self.nodebox2)
         classbox = self.cpu.ts.cls_of_box(self.nodebox2)
-        value.make_constant_class(classbox, -1)
+        value.make_constant_class(None, classbox)
         knownclass_info = NotVirtualStateInfo(value)
         info2.fieldstate = [knownclass_info, knownclass_info]
         vstate2 = VirtualState([info2])
@@ -749,7 +749,7 @@
         info1 = VArrayStateInfo(42)
         value = PtrOptValue(self.nodebox)
         classbox = self.cpu.ts.cls_of_box(self.nodebox)
-        value.make_constant_class(classbox, -1)
+        value.make_constant_class(None, classbox)
         knownclass_info = NotVirtualStateInfo(value)
         info1.fieldstate = [knownclass_info, knownclass_info]
         vstate1 = VirtualState([info1])
@@ -766,7 +766,7 @@
     def test_crash_varay_clear(self):
         innervalue1 = PtrOptValue(self.nodebox)
         constclassbox = self.cpu.ts.cls_of_box(self.nodebox)
-        innervalue1.make_constant_class(constclassbox, -1)
+        innervalue1.make_constant_class(None, constclassbox)
         innerinfo1 = NotVirtualStateInfo(innervalue1)
         innerinfo1.position = 1
         innerinfo1.position_in_notvirtuals = 0


More information about the pypy-commit mailing list