Index: src/ic/s390/handler-compiler-s390.cc |
diff --git a/src/ic/s390/handler-compiler-s390.cc b/src/ic/s390/handler-compiler-s390.cc |
index 40a8c310d8fbd294926f091f78fd8fd7625ef127..f958cc10fe3b3236007951ef4da437455d2e3d90 100644 |
--- a/src/ic/s390/handler-compiler-s390.cc |
+++ b/src/ic/s390/handler-compiler-s390.cc |
@@ -194,24 +194,18 @@ void PropertyHandlerCompiler::GenerateCheckPropertyCell( |
__ bne(miss); |
} |
-static void PushInterceptorArguments(MacroAssembler* masm, Register receiver, |
- Register holder, Register name, |
- Handle<JSObject> holder_obj) { |
- STATIC_ASSERT(NamedLoadHandlerCompiler::kInterceptorArgsNameIndex == 0); |
- STATIC_ASSERT(NamedLoadHandlerCompiler::kInterceptorArgsThisIndex == 1); |
- STATIC_ASSERT(NamedLoadHandlerCompiler::kInterceptorArgsHolderIndex == 2); |
- STATIC_ASSERT(NamedLoadHandlerCompiler::kInterceptorArgsLength == 3); |
- __ Push(name); |
- __ Push(receiver); |
- __ Push(holder); |
-} |
- |
static void CompileCallLoadPropertyWithInterceptor( |
MacroAssembler* masm, Register receiver, Register holder, Register name, |
Handle<JSObject> holder_obj, Runtime::FunctionId id) { |
DCHECK(NamedLoadHandlerCompiler::kInterceptorArgsLength == |
Runtime::FunctionForId(id)->nargs); |
- PushInterceptorArguments(masm, receiver, holder, name, holder_obj); |
+ |
+ STATIC_ASSERT(NamedLoadHandlerCompiler::kInterceptorArgsNameIndex == 0); |
+ STATIC_ASSERT(NamedLoadHandlerCompiler::kInterceptorArgsThisIndex == 1); |
+ STATIC_ASSERT(NamedLoadHandlerCompiler::kInterceptorArgsHolderIndex == 2); |
+ STATIC_ASSERT(NamedLoadHandlerCompiler::kInterceptorArgsLength == 3); |
+ __ Push(name, receiver, holder); |
+ |
__ CallRuntime(id); |
} |
@@ -508,8 +502,18 @@ void NamedLoadHandlerCompiler::GenerateLoadInterceptor(Register holder_reg) { |
// Call the runtime system to load the interceptor. |
DCHECK(holder()->HasNamedInterceptor()); |
DCHECK(!holder()->GetNamedInterceptor()->getter()->IsUndefined(isolate())); |
- PushInterceptorArguments(masm(), receiver(), holder_reg, this->name(), |
- holder()); |
+ |
+ STATIC_ASSERT(NamedLoadHandlerCompiler::kInterceptorArgsNameIndex == 0); |
+ STATIC_ASSERT(NamedLoadHandlerCompiler::kInterceptorArgsThisIndex == 1); |
+ STATIC_ASSERT(NamedLoadHandlerCompiler::kInterceptorArgsHolderIndex == 2); |
+ STATIC_ASSERT(NamedLoadHandlerCompiler::kInterceptorArgsLength == 3); |
+ __ Push(name(), receiver(), holder_reg); |
+ // See NamedLoadHandlerCompiler::InterceptorVectorSlotPop() for details. |
+ if (holder_reg.is(receiver())) { |
+ __ Push(slot(), vector()); |
+ } else { |
+ __ Push(scratch3(), scratch2()); // slot, vector |
+ } |
__ TailCallRuntime(Runtime::kLoadPropertyWithInterceptor); |
} |