From: weiliang.lin@intel.com Date: Fri, 12 Sep 2014 06:41:13 +0000 (+0000) Subject: X87: Get CallInterfaceDescriptor directly from CodeStub. X-Git-Tag: upstream/4.7.83~6964 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e3ab5b5824043c149d56a8acfbee54cd212b12a4;p=platform%2Fupstream%2Fv8.git X87: Get CallInterfaceDescriptor directly from CodeStub. port r23778. original commit message: Get CallInterfaceDescriptor directly from CodeStub. BUG= R=weiliang.lin@intel.com Review URL: https://codereview.chromium.org/562983003 Patch from Jing Bao . git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23894 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- diff --git a/src/x87/code-stubs-x87.cc b/src/x87/code-stubs-x87.cc index 7fd43b8..eab7338 100644 --- a/src/x87/code-stubs-x87.cc +++ b/src/x87/code-stubs-x87.cc @@ -21,8 +21,7 @@ namespace internal { static void InitializeArrayConstructorDescriptor( - Isolate* isolate, CodeStub::Major major, - CodeStubInterfaceDescriptor* descriptor, + Isolate* isolate, CodeStubDescriptor* descriptor, int constant_stack_parameter_count) { // register state // eax -- number of arguments @@ -32,22 +31,17 @@ static void InitializeArrayConstructorDescriptor( Runtime::kArrayConstructor)->entry; if (constant_stack_parameter_count == 0) { - ArrayConstructorConstantArgCountDescriptor call_descriptor(isolate); - descriptor->Initialize(major, call_descriptor, deopt_handler, - constant_stack_parameter_count, + descriptor->Initialize(deopt_handler, constant_stack_parameter_count, JS_FUNCTION_STUB_MODE); } else { - ArrayConstructorDescriptor call_descriptor(isolate); - descriptor->Initialize(major, call_descriptor, eax, deopt_handler, - constant_stack_parameter_count, + descriptor->Initialize(eax, deopt_handler, constant_stack_parameter_count, JS_FUNCTION_STUB_MODE, PASS_ARGUMENTS); } } static void InitializeInternalArrayConstructorDescriptor( - Isolate* isolate, CodeStub::Major major, - CodeStubInterfaceDescriptor* descriptor, + Isolate* isolate, CodeStubDescriptor* descriptor, int constant_stack_parameter_count) { // register state // eax -- number of arguments @@ -56,66 +50,60 @@ static void InitializeInternalArrayConstructorDescriptor( Runtime::kInternalArrayConstructor)->entry; if (constant_stack_parameter_count == 0) { - InternalArrayConstructorConstantArgCountDescriptor call_descriptor(isolate); - descriptor->Initialize(major, call_descriptor, deopt_handler, - constant_stack_parameter_count, + descriptor->Initialize(deopt_handler, constant_stack_parameter_count, JS_FUNCTION_STUB_MODE); } else { - InternalArrayConstructorDescriptor call_descriptor(isolate); - descriptor->Initialize(major, call_descriptor, eax, deopt_handler, - constant_stack_parameter_count, + descriptor->Initialize(eax, deopt_handler, constant_stack_parameter_count, JS_FUNCTION_STUB_MODE, PASS_ARGUMENTS); } } -void ArrayNoArgumentConstructorStub::InitializeInterfaceDescriptor( - CodeStubInterfaceDescriptor* descriptor) { - InitializeArrayConstructorDescriptor(isolate(), MajorKey(), descriptor, 0); +void ArrayNoArgumentConstructorStub::InitializeDescriptor( + CodeStubDescriptor* descriptor) { + InitializeArrayConstructorDescriptor(isolate(), descriptor, 0); } -void ArraySingleArgumentConstructorStub::InitializeInterfaceDescriptor( - CodeStubInterfaceDescriptor* descriptor) { - InitializeArrayConstructorDescriptor(isolate(), MajorKey(), descriptor, 1); +void ArraySingleArgumentConstructorStub::InitializeDescriptor( + CodeStubDescriptor* descriptor) { + InitializeArrayConstructorDescriptor(isolate(), descriptor, 1); } -void ArrayNArgumentsConstructorStub::InitializeInterfaceDescriptor( - CodeStubInterfaceDescriptor* descriptor) { - InitializeArrayConstructorDescriptor(isolate(), MajorKey(), descriptor, -1); +void ArrayNArgumentsConstructorStub::InitializeDescriptor( + CodeStubDescriptor* descriptor) { + InitializeArrayConstructorDescriptor(isolate(), descriptor, -1); } -void InternalArrayNoArgumentConstructorStub::InitializeInterfaceDescriptor( - CodeStubInterfaceDescriptor* descriptor) { - InitializeInternalArrayConstructorDescriptor(isolate(), MajorKey(), - descriptor, 0); +void InternalArrayNoArgumentConstructorStub::InitializeDescriptor( + CodeStubDescriptor* descriptor) { + InitializeInternalArrayConstructorDescriptor(isolate(), descriptor, 0); } -void InternalArraySingleArgumentConstructorStub::InitializeInterfaceDescriptor( - CodeStubInterfaceDescriptor* descriptor) { - InitializeInternalArrayConstructorDescriptor(isolate(), MajorKey(), - descriptor, 1); +void InternalArraySingleArgumentConstructorStub::InitializeDescriptor( + CodeStubDescriptor* descriptor) { + InitializeInternalArrayConstructorDescriptor(isolate(), descriptor, 1); } -void InternalArrayNArgumentsConstructorStub::InitializeInterfaceDescriptor( - CodeStubInterfaceDescriptor* descriptor) { - InitializeInternalArrayConstructorDescriptor(isolate(), MajorKey(), - descriptor, -1); +void InternalArrayNArgumentsConstructorStub::InitializeDescriptor( + CodeStubDescriptor* descriptor) { + InitializeInternalArrayConstructorDescriptor(isolate(), descriptor, -1); } #define __ ACCESS_MASM(masm) -void HydrogenCodeStub::GenerateLightweightMiss(MacroAssembler* masm) { +void HydrogenCodeStub::GenerateLightweightMiss(MacroAssembler* masm, + ExternalReference miss) { // Update the static counter each time a new code stub is generated. isolate()->counters()->code_stubs()->Increment(); - CodeStubInterfaceDescriptor descriptor(this); + CallInterfaceDescriptor descriptor = GetCallInterfaceDescriptor(); int param_count = descriptor.GetEnvironmentParameterCount(); { // Call the runtime system in a fresh internal frame. @@ -126,7 +114,6 @@ void HydrogenCodeStub::GenerateLightweightMiss(MacroAssembler* masm) { for (int i = 0; i < param_count; ++i) { __ push(descriptor.GetEnvironmentParameterRegister(i)); } - ExternalReference miss = descriptor.miss_handler(); __ CallExternalReference(miss, param_count); } diff --git a/src/x87/deoptimizer-x87.cc b/src/x87/deoptimizer-x87.cc index 96698a1..e873ac5 100644 --- a/src/x87/deoptimizer-x87.cc +++ b/src/x87/deoptimizer-x87.cc @@ -194,7 +194,7 @@ void Deoptimizer::FillInputFrame(Address tos, JavaScriptFrame* frame) { void Deoptimizer::SetPlatformCompiledStubRegisters( - FrameDescription* output_frame, CodeStubInterfaceDescriptor* descriptor) { + FrameDescription* output_frame, CodeStubDescriptor* descriptor) { intptr_t handler = reinterpret_cast(descriptor->deoptimization_handler()); int params = descriptor->GetHandlerParameterCount(); diff --git a/src/x87/lithium-x87.cc b/src/x87/lithium-x87.cc index 61aebdf..b9488d9 100644 --- a/src/x87/lithium-x87.cc +++ b/src/x87/lithium-x87.cc @@ -2490,7 +2490,8 @@ LInstruction* LChunkBuilder::DoParameter(HParameter* instr) { return DefineAsSpilled(result, spill_index); } else { DCHECK(info()->IsStub()); - CodeStubInterfaceDescriptor descriptor(info()->code_stub()); + CallInterfaceDescriptor descriptor = + info()->code_stub()->GetCallInterfaceDescriptor(); int index = static_cast(instr->index()); Register reg = descriptor.GetEnvironmentParameterRegister(index); return DefineFixed(result, reg);