Author: fijal
Branch: jit-leaner-frontend
Changeset: r83064:345cab5f0d0b
Date: 2016-03-15 10:15 +0200
http://bitbucket.org/pypy/pypy/changeset/345cab5f0d0b/

Log:    backpedal + be slightly more conscious

diff --git a/rpython/jit/metainterp/opencoder.py 
b/rpython/jit/metainterp/opencoder.py
--- a/rpython/jit/metainterp/opencoder.py
+++ b/rpython/jit/metainterp/opencoder.py
@@ -249,36 +249,37 @@
                 SMALL_INT_START <= box.getint() < SMALL_INT_STOP):
                 return tag(TAGINT, box.getint())
             elif isinstance(box, ConstInt):
-                #self._consts_bigint += 1
-                #if not isinstance(box.getint(), int):
-                #    # symbolics, for tests, don't worry about caching
-                #    v = len(self._bigints) << 1
-                #    self._bigints.append(box.getint())
-                #else:
-                #    v = self._bigints_dict.get(box.getint(), -1)
-                #    if v == -1:
-                v = len(self._bigints) << 1
-                #        self._bigints_dict[box.getint()] = v
-                self._bigints.append(box.getint())
+                self._consts_bigint += 1
+                if not isinstance(box.getint(), int):
+                    # symbolics, for tests, don't worry about caching
+                    v = len(self._bigints) << 1
+                    self._bigints.append(box.getint())
+                else:
+                    v = self._bigints_dict.get(box.getint(), -1)
+                    if v == -1:
+                        v = len(self._bigints) << 1
+                        self._bigints_dict[box.getint()] = v
+                        self._bigints.append(box.getint())
                 return tag(TAGCONSTOTHER, v)
             elif isinstance(box, ConstFloat):
                 self._consts_float += 1
-                #v = self._floats_dict.get(box.getfloat(), -1)
-                #if v == -1:
-                v = (len(self._floats) << 1) | 1
-                #self._floats_dict[box.getfloat()] = v
-                self._floats.append(box.getfloat())
+                v = self._floats_dict.get(box.getfloat(), -1)
+                if v == -1:
+                    v = (len(self._floats) << 1) | 1
+                    self._floats_dict[box.getfloat()] = v
+                    self._floats.append(box.getfloat())
                 return tag(TAGCONSTOTHER, v)
             else:
                 self._consts_ptr += 1
                 assert isinstance(box, ConstPtr)
                 if not box.getref_base():
                     return tag(TAGCONSTPTR, 0)
-                #v = self._refs_dict.get(addr, -1)
-                #if v == -1:
-                v = len(self._refs)
-                #    self._refs_dict[addr] = v
-                self._refs.append(box.getref_base())
+                addr = box.getref_base()
+                v = self._refs_dict.get(addr, -1)
+                if v == -1:
+                    v = len(self._refs)
+                    self._refs_dict[addr] = v
+                    self._refs.append(box.getref_base())
                 return tag(TAGCONSTPTR, v)
         elif isinstance(box, AbstractResOp):
             return tag(TAGBOX, box.get_position())
@@ -325,7 +326,10 @@
         return ResOperation(opnum, argboxes, pos, descr)
 
     def _list_of_boxes(self, boxes):
-        return [rffi.cast(rffi.SHORT, self._encode(box)) for box in boxes]
+        array = [rffi.cast(rffi.SHORT, 0)] * len(boxes)
+        for i in range(boxes):
+            array[i] = self._encode(boxes[i])
+        return array
 
     def create_top_snapshot(self, jitcode, pc, boxes, vable_boxes, vref_boxes):
         self._total_snapshots += 1
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to