X87: Remove KeyedStoreIC::GenerateRuntimeSetProperty and move...

X87: Remove KeyedStoreIC::GenerateRuntimeSetProperty and move Store::GenerateRuntimeSetProperty to the PropertyICCompiler

port r23311.

original commit message:
  Remove KeyedStoreIC::GenerateRuntimeSetProperty and move Store::GenerateRuntimeSetProperty to the PropertyICCompiler

x

BUG=
R=verwaest@chromium.org, weiliang.lin@intel.com

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

Patch from Chunyang Dai <chunyang.dai@intel.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23344 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent aff1fefe
......@@ -981,6 +981,23 @@ void ElementHandlerCompiler::GenerateLoadDictionaryElement(
}
void PropertyICCompiler::GenerateRuntimeSetProperty(MacroAssembler* masm,
StrictMode strict_mode) {
// Return address is on the stack.
DCHECK(!ebx.is(StoreIC::ReceiverRegister()) &&
!ebx.is(StoreIC::NameRegister()) && !ebx.is(StoreIC::ValueRegister()));
__ pop(ebx);
__ push(StoreIC::ReceiverRegister());
__ push(StoreIC::NameRegister());
__ push(StoreIC::ValueRegister());
__ push(Immediate(Smi::FromInt(strict_mode)));
__ push(ebx); // return address
// Do tail-call to runtime routine.
__ TailCallRuntime(Runtime::kSetProperty, 4, 1);
}
#undef __
}
} // namespace v8::internal
......
......@@ -8,6 +8,7 @@
#include "src/codegen.h"
#include "src/ic/ic.h"
#include "src/ic/ic-compiler.h"
#include "src/ic/stub-cache.h"
namespace v8 {
......@@ -778,7 +779,7 @@ void KeyedStoreIC::GenerateGeneric(MacroAssembler* masm,
// Slow case: call runtime.
__ bind(&slow);
GenerateRuntimeSetProperty(masm, strict_mode);
PropertyICCompiler::GenerateRuntimeSetProperty(masm, strict_mode);
// Extra capacity case: Check if there is extra capacity to
// perform the store and update the length. Used for adding one
......@@ -1007,40 +1008,6 @@ void StoreIC::GenerateNormal(MacroAssembler* masm) {
}
void StoreIC::GenerateRuntimeSetProperty(MacroAssembler* masm,
StrictMode strict_mode) {
// Return address is on the stack.
DCHECK(!ebx.is(ReceiverRegister()) && !ebx.is(NameRegister()) &&
!ebx.is(ValueRegister()));
__ pop(ebx);
__ push(ReceiverRegister());
__ push(NameRegister());
__ push(ValueRegister());
__ push(Immediate(Smi::FromInt(strict_mode)));
__ push(ebx); // return address
// Do tail-call to runtime routine.
__ TailCallRuntime(Runtime::kSetProperty, 4, 1);
}
void KeyedStoreIC::GenerateRuntimeSetProperty(MacroAssembler* masm,
StrictMode strict_mode) {
// Return address is on the stack.
DCHECK(!ebx.is(ReceiverRegister()) && !ebx.is(NameRegister()) &&
!ebx.is(ValueRegister()));
__ pop(ebx);
__ push(ReceiverRegister());
__ push(NameRegister());
__ push(ValueRegister());
__ push(Immediate(Smi::FromInt(strict_mode)));
__ push(ebx); // return address
// Do tail-call to runtime routine.
__ TailCallRuntime(Runtime::kSetProperty, 4, 1);
}
void KeyedStoreIC::GenerateMiss(MacroAssembler* masm) {
// Return address is on the stack.
StoreIC_PushArgs(masm);
......
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