MIPS: Generate StoreGlobal stubs with Hydrogen.
Port r15512 (bdf9918) Original commit message: - Constants globals are inlined into Hydrogen code using code dependencies that invalidate the Crankshafted code when global PropertyCells or the global object change. - The more general case generates code that is just as good as the hand-written assembly stubs on all platforms. BUG= Review URL: https://codereview.chromium.org/18277005 Patch from Balazs Kilvady <kilvadyb@homejinni.com>. git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15525 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
075863538b
commit
79ce581420
@ -238,6 +238,17 @@ void UnaryOpStub::InitializeInterfaceDescriptor(
|
||||
}
|
||||
|
||||
|
||||
void StoreGlobalStub::InitializeInterfaceDescriptor(
|
||||
Isolate* isolate,
|
||||
CodeStubInterfaceDescriptor* descriptor) {
|
||||
static Register registers[] = { a1, a2, a0 };
|
||||
descriptor->register_param_count_ = 3;
|
||||
descriptor->register_params_ = registers;
|
||||
descriptor->deoptimization_handler_ =
|
||||
FUNCTION_ADDR(StoreIC_MissFromStubFailure);
|
||||
}
|
||||
|
||||
|
||||
#define __ ACCESS_MASM(masm)
|
||||
|
||||
|
||||
|
@ -222,7 +222,6 @@ void LGapResolver::EmitMove(int index) {
|
||||
ASSERT(destination->IsStackSlot());
|
||||
__ sw(source_register, cgen_->ToMemOperand(destination));
|
||||
}
|
||||
|
||||
} else if (source->IsStackSlot()) {
|
||||
MemOperand source_operand = cgen_->ToMemOperand(source);
|
||||
if (destination->IsRegister()) {
|
||||
@ -259,6 +258,10 @@ void LGapResolver::EmitMove(int index) {
|
||||
} else {
|
||||
__ LoadObject(dst, cgen_->ToHandle(constant_source));
|
||||
}
|
||||
} else if (source->IsDoubleRegister()) {
|
||||
DoubleRegister result = cgen_->ToDoubleRegister(destination);
|
||||
double v = cgen_->ToDouble(constant_source);
|
||||
__ Move(result, v);
|
||||
} else {
|
||||
ASSERT(destination->IsStackSlot());
|
||||
ASSERT(!in_cycle_); // Constant moves happen after all cycles are gone.
|
||||
|
Loading…
Reference in New Issue
Block a user