From 2c45989333f0a52627870296b039c39c4aa01160 Mon Sep 17 00:00:00 2001 From: "weiliang.lin@intel.com" Date: Thu, 26 Jun 2014 07:32:17 +0000 Subject: [PATCH] X87: Cleanup CallInterfaceDescriptor port r22014 original commit message: Make CallInterfaceDescriptor work like CodeStubInterfaceDescriptor, owning it's register and representation arrays. This also eliminates a host of TSAN warnings xfor static arrays This CL depends on https://codereview.chromium.org/352583002 landing first (a conceptual dependency at least). BUG= R=weiliang.lin@intel.com Review URL: https://codereview.chromium.org/343563006 Patch from Chunyang Dai . git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22030 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/x87/code-stubs-x87.cc | 60 ++++++++++++++++++++--------------------------- 1 file changed, 25 insertions(+), 35 deletions(-) diff --git a/src/x87/code-stubs-x87.cc b/src/x87/code-stubs-x87.cc index e5a0c9b..8fb57f0 100644 --- a/src/x87/code-stubs-x87.cc +++ b/src/x87/code-stubs-x87.cc @@ -309,82 +309,72 @@ void CallDescriptors::InitializeForIsolate(Isolate* isolate) { { CallInterfaceDescriptor* descriptor = isolate->call_descriptor(Isolate::ArgumentAdaptorCall); - static Register registers[] = { edi, // JSFunction - esi, // context - eax, // actual number of arguments - ebx, // expected number of arguments + Register registers[] = { edi, // JSFunction + esi, // context + eax, // actual number of arguments + ebx, // expected number of arguments }; - static Representation representations[] = { + Representation representations[] = { Representation::Tagged(), // JSFunction Representation::Tagged(), // context Representation::Integer32(), // actual number of arguments Representation::Integer32(), // expected number of arguments }; - descriptor->register_param_count_ = 4; - descriptor->register_params_ = registers; - descriptor->param_representations_ = representations; + descriptor->Initialize(ARRAY_SIZE(registers), registers, representations); } { CallInterfaceDescriptor* descriptor = isolate->call_descriptor(Isolate::KeyedCall); - static Register registers[] = { esi, // context - ecx, // key + Register registers[] = { esi, // context + ecx, // key }; - static Representation representations[] = { + Representation representations[] = { Representation::Tagged(), // context Representation::Tagged(), // key }; - descriptor->register_param_count_ = 2; - descriptor->register_params_ = registers; - descriptor->param_representations_ = representations; + descriptor->Initialize(ARRAY_SIZE(registers), registers, representations); } { CallInterfaceDescriptor* descriptor = isolate->call_descriptor(Isolate::NamedCall); - static Register registers[] = { esi, // context - ecx, // name + Register registers[] = { esi, // context + ecx, // name }; - static Representation representations[] = { + Representation representations[] = { Representation::Tagged(), // context Representation::Tagged(), // name }; - descriptor->register_param_count_ = 2; - descriptor->register_params_ = registers; - descriptor->param_representations_ = representations; + descriptor->Initialize(ARRAY_SIZE(registers), registers, representations); } { CallInterfaceDescriptor* descriptor = isolate->call_descriptor(Isolate::CallHandler); - static Register registers[] = { esi, // context - edx, // receiver + Register registers[] = { esi, // context + edx, // receiver }; - static Representation representations[] = { + Representation representations[] = { Representation::Tagged(), // context Representation::Tagged(), // receiver }; - descriptor->register_param_count_ = 2; - descriptor->register_params_ = registers; - descriptor->param_representations_ = representations; + descriptor->Initialize(ARRAY_SIZE(registers), registers, representations); } { CallInterfaceDescriptor* descriptor = isolate->call_descriptor(Isolate::ApiFunctionCall); - static Register registers[] = { eax, // callee - ebx, // call_data - ecx, // holder - edx, // api_function_address - esi, // context + Register registers[] = { eax, // callee + ebx, // call_data + ecx, // holder + edx, // api_function_address + esi, // context }; - static Representation representations[] = { + Representation representations[] = { Representation::Tagged(), // callee Representation::Tagged(), // call_data Representation::Tagged(), // holder Representation::External(), // api_function_address Representation::Tagged(), // context }; - descriptor->register_param_count_ = 5; - descriptor->register_params_ = registers; - descriptor->param_representations_ = representations; + descriptor->Initialize(ARRAY_SIZE(registers), registers, representations); } } -- 2.7.4