From: palfia@homejinni.com Date: Thu, 18 Apr 2013 23:48:42 +0000 (+0000) Subject: MIPS: Add infrastructure to automatucally generate IC miss stubs X-Git-Tag: upstream/4.7.83~14517 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ab695a2bd7a20cde71976d4f038bf82bf7784e16;p=platform%2Fupstream%2Fv8.git 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 --- diff --git a/src/mips/code-stubs-mips.cc b/src/mips/code-stubs-mips.cc index 27fd732..46bf1ae 100644 --- a/src/mips/code-stubs-mips.cc +++ b/src/mips/code-stubs-mips.cc @@ -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;