void RelocInfo::set_target_cell(Cell* cell,
WriteBarrierMode write_barrier_mode,
ICacheFlushMode icache_flush_mode) {
+ DCHECK(cell->IsCell());
DCHECK(rmode_ == RelocInfo::CELL);
Address address = cell->address() + Cell::kValueOffset;
Memory::Address_at(pc_) = address;
}
__ mov(scratch, Operand(scratch, kDeltaToCmpImmediate));
__ mov(Operand(scratch, 0), map);
+ __ push(map);
+ // Scratch points at the cell payload. Calculate the start of the object.
+ __ sub(scratch, Immediate(Cell::kValueOffset - 1));
+ __ RecordWriteField(scratch, Cell::kValueOffset, map, function,
+ kDontSaveFPRegs, OMIT_REMEMBERED_SET, OMIT_SMI_CHECK);
+ __ pop(map);
}
// Loop through the prototype chain of the object looking for the function