Example #1
0
 def handle_write_barrier_setarrayitem(self, op):
     val = op.getarg(0)
     if val not in self.write_barrier_applied:
         v = op.getarg(2)
         if isinstance(v, BoxPtr) or (isinstance(v, ConstPtr) and rgc.needs_write_barrier(v.value)):
             self.gen_write_barrier_array(val, op.getarg(1))
             # op = op.copy_and_change(rop.SET{ARRAYITEM,INTERIORFIELD}_RAW)
     self.newops.append(op)
Example #2
0
 def handle_write_barrier_setfield(self, op):
     val = op.getarg(0)
     if val not in self.write_barrier_applied:
         v = op.getarg(1)
         if isinstance(v, BoxPtr) or (isinstance(v, ConstPtr) and rgc.needs_write_barrier(v.value)):
             self.gen_write_barrier(val)
             # op = op.copy_and_change(rop.SETFIELD_RAW)
     self.newops.append(op)
Example #3
0
 def handle_write_barrier_setarrayitem(self, op):
     val = op.getarg(0)
     if not self.write_barrier_applied(val):
         v = op.getarg(2)
         if (v.type == 'r' and (not isinstance(v, ConstPtr)
                                or rgc.needs_write_barrier(v.value))):
             self.gen_write_barrier_array(val, op.getarg(1))
             #op = op.copy_and_change(rop.SET{ARRAYITEM,INTERIORFIELD}_RAW)
     self.emit_op(op)
Example #4
0
 def handle_write_barrier_setfield(self, op):
     val = op.getarg(0)
     if not self.write_barrier_applied(val):
         v = op.getarg(1)
         if (v.type == 'r' and (not isinstance(v, ConstPtr)
                                or rgc.needs_write_barrier(v.value))):
             self.gen_write_barrier(val)
             #op = op.copy_and_change(rop.SETFIELD_RAW)
     self.emit_op(op)
Example #5
0
 def handle_write_barrier_setarrayitem(self, op):
     val = op.getarg(0)
     if not self.write_barrier_applied(val):
         v = op.getarg(2)
         if (v.type == 'r' and (not isinstance(v, ConstPtr) or
             rgc.needs_write_barrier(v.value))):
             self.gen_write_barrier_array(val, op.getarg(1))
             #op = op.copy_and_change(rop.SET{ARRAYITEM,INTERIORFIELD}_RAW)
     self.emit_op(op)
Example #6
0
 def handle_write_barrier_setfield(self, op):
     val = op.getarg(0)
     if not self.write_barrier_applied(val):
         v = op.getarg(1)
         if (v.type == 'r' and (not isinstance(v, ConstPtr) or
             rgc.needs_write_barrier(v.value))):
             self.gen_write_barrier(val)
             #op = op.copy_and_change(rop.SETFIELD_RAW)
     self.emit_op(op)
Example #7
0
 def handle_write_barrier_setarrayitem(self, op):
     val = op.getarg(0)
     if val not in self.write_barrier_applied:
         v = op.getarg(2)
         if (isinstance(v, BoxPtr)
                 or (isinstance(v, ConstPtr)
                     and rgc.needs_write_barrier(v.value))):
             self.gen_write_barrier_array(val, op.getarg(1))
             #op = op.copy_and_change(rop.SET{ARRAYITEM,INTERIORFIELD}_RAW)
     self.newops.append(op)
Example #8
0
 def handle_write_barrier_setfield(self, op):
     val = op.getarg(0)
     if val not in self.write_barrier_applied:
         v = op.getarg(1)
         if (isinstance(v, BoxPtr)
                 or (isinstance(v, ConstPtr)
                     and rgc.needs_write_barrier(v.value))):
             self.gen_write_barrier(val)
             #op = op.copy_and_change(rop.SETFIELD_RAW)
     self.newops.append(op)