| Index: src/x64/codegen-x64.cc
|
| ===================================================================
|
| --- src/x64/codegen-x64.cc (revision 6941)
|
| +++ src/x64/codegen-x64.cc (working copy)
|
| @@ -627,10 +627,10 @@
|
|
|
| Comment cmnt(masm_, "[ store arguments object");
|
| if (mode == LAZY_ARGUMENTS_ALLOCATION && initial) {
|
| - // When using lazy arguments allocation, we store the hole value
|
| + // When using lazy arguments allocation, we store the arguments marker value
|
| // as a sentinel indicating that the arguments object hasn't been
|
| // allocated yet.
|
| - frame_->Push(FACTORY->the_hole_value());
|
| + frame_->Push(FACTORY->arguments_marker());
|
| } else {
|
| ArgumentsAccessStub stub(ArgumentsAccessStub::NEW_OBJECT);
|
| frame_->PushFunction();
|
| @@ -655,9 +655,9 @@
|
| if (probe.is_constant()) {
|
| // We have to skip updating the arguments object if it has
|
| // been assigned a proper value.
|
| - skip_arguments = !probe.handle()->IsTheHole();
|
| + skip_arguments = !probe.handle()->IsArgumentsMarker();
|
| } else {
|
| - __ CompareRoot(probe.reg(), Heap::kTheHoleValueRootIndex);
|
| + __ CompareRoot(probe.reg(), Heap::kArgumentsMarkerRootIndex);
|
| probe.Unuse();
|
| done.Branch(not_equal);
|
| }
|
| @@ -2516,9 +2516,9 @@
|
| Label slow, done;
|
| bool try_lazy = true;
|
| if (probe.is_constant()) {
|
| - try_lazy = probe.handle()->IsTheHole();
|
| + try_lazy = probe.handle()->IsArgumentsMarker();
|
| } else {
|
| - __ CompareRoot(probe.reg(), Heap::kTheHoleValueRootIndex);
|
| + __ CompareRoot(probe.reg(), Heap::kArgumentsMarkerRootIndex);
|
| probe.Unuse();
|
| __ j(not_equal, &slow);
|
| }
|
| @@ -4418,7 +4418,7 @@
|
| // If the loaded value is a constant, we know if the arguments
|
| // object has been lazily loaded yet.
|
| if (value.is_constant()) {
|
| - if (value.handle()->IsTheHole()) {
|
| + if (value.handle()->IsArgumentsMarker()) {
|
| Result arguments = StoreArgumentsObject(false);
|
| frame_->Push(&arguments);
|
| } else {
|
| @@ -4431,7 +4431,7 @@
|
| // indicates that we haven't loaded the arguments object yet, we
|
| // need to do it now.
|
| JumpTarget exit;
|
| - __ CompareRoot(value.reg(), Heap::kTheHoleValueRootIndex);
|
| + __ CompareRoot(value.reg(), Heap::kArgumentsMarkerRootIndex);
|
| frame_->Push(&value);
|
| exit.Branch(not_equal);
|
| Result arguments = StoreArgumentsObject(false);
|
| @@ -6814,12 +6814,8 @@
|
| // (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();
|
| @@ -8816,11 +8812,6 @@
|
|
|
| #undef __
|
|
|
| -void RecordWriteStub::Generate(MacroAssembler* masm) {
|
| - masm->RecordWriteHelper(object_, addr_, scratch_);
|
| - masm->ret(0);
|
| -}
|
| -
|
| } } // namespace v8::internal
|
|
|
| #endif // V8_TARGET_ARCH_X64
|
|
|