Remove RecordWriteStub from X64 and ARM platforms.
Review URL: http://codereview.chromium.org/5986014 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6136 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
04bf6c5c61
commit
3d7d258339
@ -917,13 +917,6 @@ void NumberToStringStub::Generate(MacroAssembler* masm) {
|
||||
}
|
||||
|
||||
|
||||
void RecordWriteStub::Generate(MacroAssembler* masm) {
|
||||
__ add(offset_, object_, Operand(offset_));
|
||||
__ RecordWriteHelper(object_, offset_, scratch_);
|
||||
__ Ret();
|
||||
}
|
||||
|
||||
|
||||
// On entry lhs_ and rhs_ are the values to be compared.
|
||||
// On exit r0 is 0, positive or negative to indicate the result of
|
||||
// the comparison.
|
||||
|
@ -437,43 +437,6 @@ class NumberToStringStub: public CodeStub {
|
||||
};
|
||||
|
||||
|
||||
class RecordWriteStub : public CodeStub {
|
||||
public:
|
||||
RecordWriteStub(Register object, Register offset, Register scratch)
|
||||
: object_(object), offset_(offset), scratch_(scratch) { }
|
||||
|
||||
void Generate(MacroAssembler* masm);
|
||||
|
||||
private:
|
||||
Register object_;
|
||||
Register offset_;
|
||||
Register scratch_;
|
||||
|
||||
// Minor key encoding in 12 bits. 4 bits for each of the three
|
||||
// registers (object, offset and scratch) OOOOAAAASSSS.
|
||||
class ScratchBits: public BitField<uint32_t, 0, 4> {};
|
||||
class OffsetBits: public BitField<uint32_t, 4, 4> {};
|
||||
class ObjectBits: public BitField<uint32_t, 8, 4> {};
|
||||
|
||||
Major MajorKey() { return RecordWrite; }
|
||||
|
||||
int MinorKey() {
|
||||
// Encode the registers.
|
||||
return ObjectBits::encode(object_.code()) |
|
||||
OffsetBits::encode(offset_.code()) |
|
||||
ScratchBits::encode(scratch_.code());
|
||||
}
|
||||
|
||||
#ifdef DEBUG
|
||||
void Print() {
|
||||
PrintF("RecordWriteStub (object reg %d), (offset reg %d),"
|
||||
" (scratch reg %d)\n",
|
||||
object_.code(), offset_.code(), scratch_.code());
|
||||
}
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
// Enter C code from generated RegExp code in a way that allows
|
||||
// the C code to fix the return address in case of a GC.
|
||||
// Currently only needed on ARM.
|
||||
|
@ -5618,12 +5618,10 @@ void CodeGenerator::GenerateSwapElements(ZoneList<Expression*>* args) {
|
||||
// (or them and test against Smi mask.)
|
||||
|
||||
__ mov(tmp2, tmp1);
|
||||
RecordWriteStub recordWrite1(tmp1, index1, tmp3);
|
||||
__ CallStub(&recordWrite1);
|
||||
|
||||
RecordWriteStub recordWrite2(tmp2, index2, tmp3);
|
||||
__ CallStub(&recordWrite2);
|
||||
|
||||
__ add(index1, index1, tmp1);
|
||||
__ add(index2, index2, tmp1);
|
||||
__ RecordWriteHelper(tmp1, index1, tmp3);
|
||||
__ RecordWriteHelper(tmp2, index2, tmp3);
|
||||
__ bind(&done);
|
||||
|
||||
deferred->BindExit();
|
||||
|
@ -87,7 +87,7 @@ class GenericBinaryOpStub: public CodeStub {
|
||||
ASSERT(OpBits::is_valid(Token::NUM_TOKENS));
|
||||
}
|
||||
|
||||
GenericBinaryOpStub(int key, BinaryOpIC::TypeInfo type_info)
|
||||
GenericBinaryOpStub(int key, BinaryOpIC::TypeInfo runtime_operands_type)
|
||||
: op_(OpBits::decode(key)),
|
||||
mode_(ModeBits::decode(key)),
|
||||
flags_(FlagBits::decode(key)),
|
||||
@ -95,7 +95,7 @@ class GenericBinaryOpStub: public CodeStub {
|
||||
args_reversed_(ArgsReversedBits::decode(key)),
|
||||
static_operands_type_(TypeInfo::ExpandedRepresentation(
|
||||
StaticTypeInfoBits::decode(key))),
|
||||
runtime_operands_type_(type_info),
|
||||
runtime_operands_type_(runtime_operands_type),
|
||||
name_(NULL) {
|
||||
}
|
||||
|
||||
@ -348,42 +348,6 @@ class NumberToStringStub: public CodeStub {
|
||||
};
|
||||
|
||||
|
||||
class RecordWriteStub : public CodeStub {
|
||||
public:
|
||||
RecordWriteStub(Register object, Register addr, Register scratch)
|
||||
: object_(object), addr_(addr), scratch_(scratch) { }
|
||||
|
||||
void Generate(MacroAssembler* masm);
|
||||
|
||||
private:
|
||||
Register object_;
|
||||
Register addr_;
|
||||
Register scratch_;
|
||||
|
||||
#ifdef DEBUG
|
||||
void Print() {
|
||||
PrintF("RecordWriteStub (object reg %d), (addr reg %d), (scratch reg %d)\n",
|
||||
object_.code(), addr_.code(), scratch_.code());
|
||||
}
|
||||
#endif
|
||||
|
||||
// Minor key encoding in 12 bits. 4 bits for each of the three
|
||||
// registers (object, address and scratch) OOOOAAAASSSS.
|
||||
class ScratchBits : public BitField<uint32_t, 0, 4> {};
|
||||
class AddressBits : public BitField<uint32_t, 4, 4> {};
|
||||
class ObjectBits : public BitField<uint32_t, 8, 4> {};
|
||||
|
||||
Major MajorKey() { return RecordWrite; }
|
||||
|
||||
int MinorKey() {
|
||||
// Encode the registers.
|
||||
return ObjectBits::encode(object_.code()) |
|
||||
AddressBits::encode(addr_.code()) |
|
||||
ScratchBits::encode(scratch_.code());
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
} } // namespace v8::internal
|
||||
|
||||
#endif // V8_X64_CODE_STUBS_X64_H_
|
||||
|
@ -6813,12 +6813,8 @@ void CodeGenerator::GenerateSwapElements(ZoneList<Expression*>* args) {
|
||||
// (or them and test against Smi mask.)
|
||||
|
||||
__ movq(tmp2.reg(), tmp1.reg());
|
||||
RecordWriteStub recordWrite1(tmp2.reg(), index1.reg(), object.reg());
|
||||
__ CallStub(&recordWrite1);
|
||||
|
||||
RecordWriteStub recordWrite2(tmp1.reg(), index2.reg(), object.reg());
|
||||
__ CallStub(&recordWrite2);
|
||||
|
||||
__ RecordWriteHelper(tmp1.reg(), index1.reg(), object.reg());
|
||||
__ RecordWriteHelper(tmp2.reg(), index2.reg(), object.reg());
|
||||
__ bind(&done);
|
||||
|
||||
deferred->BindExit();
|
||||
@ -8812,11 +8808,6 @@ ModuloFunction CreateModuloFunction() {
|
||||
|
||||
#undef __
|
||||
|
||||
void RecordWriteStub::Generate(MacroAssembler* masm) {
|
||||
masm->RecordWriteHelper(object_, addr_, scratch_);
|
||||
masm->ret(0);
|
||||
}
|
||||
|
||||
} } // namespace v8::internal
|
||||
|
||||
#endif // V8_TARGET_ARCH_X64
|
||||
|
@ -1248,8 +1248,7 @@ MaybeObject* CallStubCompiler::CompileArrayPushCall(Object* object,
|
||||
|
||||
__ InNewSpace(rbx, rcx, equal, &exit);
|
||||
|
||||
RecordWriteStub stub(rbx, rdx, rcx);
|
||||
__ CallStub(&stub);
|
||||
__ RecordWriteHelper(rbx, rdx, rcx);
|
||||
|
||||
__ ret((argc + 1) * kPointerSize);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user