MIPS: Add infrastructure to automatucally generate IC miss stubs
Port r14342 (24df6264) BUG= Review URL: https://codereview.chromium.org/13896016 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14345 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
5197ab0548
commit
ab695a2bd7
@ -161,6 +161,30 @@ static void EmitCheckForHeapNumber(MacroAssembler* masm, Register operand,
|
||||
}
|
||||
|
||||
|
||||
void HydrogenCodeStub::GenerateLightweightMiss(MacroAssembler* masm) {
|
||||
// Update the static counter each time a new code stub is generated.
|
||||
Isolate* isolate = masm->isolate();
|
||||
isolate->counters()->code_stubs()->Increment();
|
||||
|
||||
CodeStubInterfaceDescriptor* descriptor = GetInterfaceDescriptor(isolate);
|
||||
int param_count = descriptor->register_param_count_;
|
||||
{
|
||||
// Call the runtime system in a fresh internal frame.
|
||||
FrameScope scope(masm, StackFrame::INTERNAL);
|
||||
ASSERT(descriptor->register_param_count_ == 0 ||
|
||||
a0.is(descriptor->register_params_[param_count - 1]));
|
||||
// Push arguments
|
||||
for (int i = 0; i < param_count; ++i) {
|
||||
__ push(descriptor->register_params_[i]);
|
||||
}
|
||||
ExternalReference miss = descriptor->miss_handler_;
|
||||
__ CallExternalReference(miss, descriptor->register_param_count_);
|
||||
}
|
||||
|
||||
__ Ret();
|
||||
}
|
||||
|
||||
|
||||
void ToNumberStub::Generate(MacroAssembler* masm) {
|
||||
// The ToNumber stub takes one argument in a0.
|
||||
Label check_heap_number, call_builtin;
|
||||
|
Loading…
Reference in New Issue
Block a user