| Index: src/ia32/code-stubs-ia32.cc
|
| diff --git a/src/ia32/code-stubs-ia32.cc b/src/ia32/code-stubs-ia32.cc
|
| index 84fe688f72f7ba5a290ddb01add099e351612080..e29d834de110d0b616732f725ea8d8b51b84fa73 100644
|
| --- a/src/ia32/code-stubs-ia32.cc
|
| +++ b/src/ia32/code-stubs-ia32.cc
|
| @@ -141,6 +141,31 @@ void ArrayNArgumentsConstructorStub::InitializeInterfaceDescriptor(
|
|
|
| #define __ ACCESS_MASM(masm)
|
|
|
| +
|
| +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 ||
|
| + eax.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(0);
|
| +}
|
| +
|
| +
|
| void ToNumberStub::Generate(MacroAssembler* masm) {
|
| // The ToNumber stub takes one argument in eax.
|
| Label check_heap_number, call_builtin;
|
|
|