Author: Armin Rigo <[email protected]>
Branch: optimize-cond-call
Changeset: r79389:530e1bd01736
Date: 2015-09-03 11:39 +0200
http://bitbucket.org/pypy/pypy/changeset/530e1bd01736/

Log:    Rename last_cc to guard_success_cc to make it clearer what direction
        this condition is supposed to be read. Remove a dummy reg alloc in
        consider_cond_call().

diff --git a/rpython/jit/backend/x86/assembler.py 
b/rpython/jit/backend/x86/assembler.py
--- a/rpython/jit/backend/x86/assembler.py
+++ b/rpython/jit/backend/x86/assembler.py
@@ -726,10 +726,10 @@
 
     def _assemble(self, regalloc, inputargs, operations):
         self._regalloc = regalloc
-        self.last_cc = rx86.cond_none
+        self.guard_success_cc = rx86.cond_none
         regalloc.compute_hint_frame_locations(operations)
         regalloc.walk_operations(inputargs, operations)
-        assert self.last_cc == rx86.cond_none
+        assert self.guard_success_cc == rx86.cond_none
         if we_are_translated() or self.cpu.dont_keepalive_stuff:
             self._regalloc = None   # else keep it around for debugging
         frame_depth = regalloc.get_final_frame_depth()
@@ -977,9 +977,9 @@
         # "propagate it between this operation and the next guard by keeping
         # it in the cc".  In the uncommon case, result_loc is another
         # register, and we emit a load from the cc into this register.
-        assert self.last_cc == rx86.cond_none
+        assert self.guard_success_cc == rx86.cond_none
         if result_loc is ebp:
-            self.last_cc = cond
+            self.guard_success_cc = cond
         else:
             rl = result_loc.lowest8bits()
             self.mc.SET_ir(cond, rl.value)
@@ -1551,13 +1551,13 @@
     genop_guard_guard_nonnull = genop_guard_guard_true
 
     def genop_guard_guard_false(self, guard_op, guard_token, locs, resloc):
-        self.last_cc = rx86.invert_condition(self.last_cc)
+        self.guard_success_cc = rx86.invert_condition(self.guard_success_cc)
         self.implement_guard(guard_token)
     genop_guard_guard_isnull = genop_guard_guard_false
 
     def genop_guard_guard_no_exception(self, guard_op, guard_token, locs, ign):
         self.mc.CMP(heap(self.cpu.pos_exception()), imm0)
-        self.last_cc = rx86.Conditions['Z']
+        self.guard_success_cc = rx86.Conditions['Z']
         self.implement_guard(guard_token)
         # If the previous operation was a COND_CALL, overwrite its conditional
         # jump to jump over this GUARD_NO_EXCEPTION as well, if we can
@@ -1578,7 +1578,7 @@
         loc1 = locs[1]
         self.mc.MOV(loc1, heap(self.cpu.pos_exception()))
         self.mc.CMP(loc1, loc)
-        self.last_cc = rx86.Conditions['E']
+        self.guard_success_cc = rx86.Conditions['E']
         self.implement_guard(guard_token)
         self._store_and_reset_exception(self.mc, resloc)
 
@@ -1617,11 +1617,11 @@
     genop_int_mul_ovf = genop_int_mul
 
     def genop_guard_guard_no_overflow(self, guard_op, guard_token, locs, ign):
-        self.last_cc = rx86.Conditions['NO']
+        self.guard_success_cc = rx86.Conditions['NO']
         self.implement_guard(guard_token)
 
     def genop_guard_guard_overflow(self, guard_op, guard_token, locs, ign):
-        self.last_cc = rx86.Conditions['O']
+        self.guard_success_cc = rx86.Conditions['O']
         self.implement_guard(guard_token)
 
     def genop_guard_guard_value(self, guard_op, guard_token, locs, ign):
@@ -1630,7 +1630,7 @@
             self.mc.UCOMISD(locs[0], locs[1])
         else:
             self.mc.CMP(locs[0], locs[1])
-        self.last_cc = rx86.Conditions['E']
+        self.guard_success_cc = rx86.Conditions['E']
         self.implement_guard(guard_token)
 
     def _cmp_guard_class(self, locs):
@@ -1668,7 +1668,7 @@
 
     def genop_guard_guard_class(self, guard_op, guard_token, locs, ign):
         self._cmp_guard_class(locs)
-        self.last_cc = rx86.Conditions['E']
+        self.guard_success_cc = rx86.Conditions['E']
         self.implement_guard(guard_token)
 
     def genop_guard_guard_nonnull_class(self, guard_op, guard_token, locs, 
ign):
@@ -1682,7 +1682,7 @@
         assert 0 < offset <= 127
         self.mc.overwrite(jb_location-1, chr(offset))
         #
-        self.last_cc = rx86.Conditions['E']
+        self.guard_success_cc = rx86.Conditions['E']
         self.implement_guard(guard_token)
 
     def implement_guard_recovery(self, guard_opnum, faildescr, failargs,
@@ -1850,9 +1850,9 @@
 
     def implement_guard(self, guard_token):
         # These jumps are patched later.
-        assert self.last_cc >= 0
-        self.mc.J_il(rx86.invert_condition(self.last_cc), 0)
-        self.last_cc = rx86.cond_none
+        assert self.guard_success_cc >= 0
+        self.mc.J_il(rx86.invert_condition(self.guard_success_cc), 0)
+        self.guard_success_cc = rx86.cond_none
         guard_token.pos_jump_offset = self.mc.get_relative_pos() - 4
         self.pending_guard_tokens.append(guard_token)
 
@@ -1900,7 +1900,7 @@
     def genop_guard_guard_not_forced(self, guard_op, guard_token, locs, 
resloc):
         ofs = self.cpu.get_ofs_of_frame_field('jf_descr')
         self.mc.CMP_bi(ofs, 0)
-        self.last_cc = rx86.Conditions['E']
+        self.guard_success_cc = rx86.Conditions['E']
         self.implement_guard(guard_token)
 
     def genop_call_may_force(self, op, arglocs, result_loc):
@@ -2139,11 +2139,12 @@
     def label(self):
         self._check_frame_depth_debug(self.mc)
 
-    def cond_call(self, op, gcmap, loc_cond, imm_func, arglocs):
-        assert self.last_cc >= 0
-        self.mc.J_il8(rx86.invert_condition(self.last_cc), 0)  # patched later
+    def cond_call(self, op, gcmap, imm_func, arglocs):
+        assert self.guard_success_cc >= 0
+        self.mc.J_il8(rx86.invert_condition(self.guard_success_cc), 0)
+                                                            # patched later
         jmp_adr = self.mc.get_relative_pos()
-        self.last_cc = rx86.cond_none
+        self.guard_success_cc = rx86.cond_none
         #
         self.push_gcmap(self.mc, gcmap, store=True)
         #
diff --git a/rpython/jit/backend/x86/regalloc.py 
b/rpython/jit/backend/x86/regalloc.py
--- a/rpython/jit/backend/x86/regalloc.py
+++ b/rpython/jit/backend/x86/regalloc.py
@@ -362,9 +362,9 @@
         return self.rm.loc(v)
 
     def load_condition_into_cc(self, box):
-        if self.assembler.last_cc == rx86.cond_none:
+        if self.assembler.guard_success_cc == rx86.cond_none:
             self.assembler.test_location(self.loc(box))
-            self.assembler.last_cc = rx86.Conditions['NZ']
+            self.assembler.guard_success_cc = rx86.Conditions['NZ']
 
     def _consider_guard_cc(self, op):
         self.load_condition_into_cc(op.getarg(0))
@@ -848,14 +848,13 @@
         assert op.result is None
         args = op.getarglist()
         assert 2 <= len(args) <= 4 + 2     # maximum 4 arguments
-        loc_cond = self.make_sure_var_in_reg(args[0], args)
         v = args[1]
         assert isinstance(v, Const)
         imm_func = self.rm.convert_to_imm(v)
         arglocs = [self.loc(args[i]) for i in range(2, len(args))]
         gcmap = self.get_gcmap()
         self.load_condition_into_cc(op.getarg(0))
-        self.assembler.cond_call(op, gcmap, loc_cond, imm_func, arglocs)
+        self.assembler.cond_call(op, gcmap, imm_func, arglocs)
 
     def consider_call_malloc_nursery(self, op):
         size_box = op.getarg(0)
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to