Commit f74501c6 authored by plind44@gmail.com's avatar plind44@gmail.com

MIPS: swap in global proxy on accessors.

Port r19142 (087bc3e)

BUG=
R=plind44@gmail.com

Review URL: https://codereview.chromium.org/140893011

Patch from Balazs Kilvady <kilvadyb@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19168 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent 01f56011
......@@ -1270,6 +1270,7 @@ Handle<Code> StoreStubCompiler::CompileStoreCallback(
void StoreStubCompiler::GenerateStoreViaSetter(
MacroAssembler* masm,
Handle<HeapType> type,
Handle<JSFunction> setter) {
// ----------- S t a t e -------------
// -- a0 : value
......@@ -1279,13 +1280,21 @@ void StoreStubCompiler::GenerateStoreViaSetter(
// -----------------------------------
{
FrameScope scope(masm, StackFrame::INTERNAL);
Register receiver = a1;
Register value = a0;
// Save value register, so we can restore it later.
__ push(a0);
__ push(value);
if (!setter.is_null()) {
// Call the JavaScript setter with receiver and value on the stack.
__ Push(a1, a0);
if (IC::TypeToMap(*type, masm->isolate())->IsJSGlobalObjectMap()) {
// Swap in the global receiver.
__ lw(receiver,
FieldMemOperand(
receiver, JSGlobalObject::kGlobalReceiverOffset));
}
__ Push(receiver, value);
ParameterCount actual(1);
ParameterCount expected(setter);
__ InvokeFunction(setter, expected, actual,
......@@ -1391,6 +1400,7 @@ Register* KeyedStoreStubCompiler::registers() {
void LoadStubCompiler::GenerateLoadViaGetter(MacroAssembler* masm,
Handle<HeapType> type,
Register receiver,
Handle<JSFunction> getter) {
// ----------- S t a t e -------------
......@@ -1403,6 +1413,12 @@ void LoadStubCompiler::GenerateLoadViaGetter(MacroAssembler* masm,
if (!getter.is_null()) {
// Call the JavaScript getter with the receiver on the stack.
if (IC::TypeToMap(*type, masm->isolate())->IsJSGlobalObjectMap()) {
// Swap in the global receiver.
__ lw(receiver,
FieldMemOperand(
receiver, JSGlobalObject::kGlobalReceiverOffset));
}
__ push(receiver);
ParameterCount actual(0);
ParameterCount expected(getter);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment