From 73fc21c40d9d708a37850b01c677c602facc85b7 Mon Sep 17 00:00:00 2001 From: "kilvadyb@homejinni.com" Date: Wed, 25 Jun 2014 18:43:06 +0000 Subject: [PATCH] MIPS: Cleanup CallInterfaceDescriptor. Port r22014 (234866c) Original commit message: Make CallInterfaceDescriptor work like CodeStubInterfaceDescriptor, owning it's register and representation arrays. This also eliminates a host of TSAN warnings for static arrays. This CL depends on https://codereview.chromium.org/352583002 landing first (a conceptual dependency at least). BUG= R=palfia@homejinni.com Review URL: https://codereview.chromium.org/356773003 git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22023 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/mips/code-stubs-mips.cc | 60 +++++++++++++++++++-------------------------- 1 file changed, 25 insertions(+), 35 deletions(-) diff --git a/src/mips/code-stubs-mips.cc b/src/mips/code-stubs-mips.cc index d4e2707..2a6f982 100644 --- a/src/mips/code-stubs-mips.cc +++ b/src/mips/code-stubs-mips.cc @@ -306,82 +306,72 @@ void CallDescriptors::InitializeForIsolate(Isolate* isolate) { { CallInterfaceDescriptor* descriptor = isolate->call_descriptor(Isolate::ArgumentAdaptorCall); - static Register registers[] = { a1, // JSFunction - cp, // context - a0, // actual number of arguments - a2, // expected number of arguments + Register registers[] = { a1, // JSFunction + cp, // context + a0, // actual number of arguments + a2, // 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[] = { cp, // context - a2, // key + Register registers[] = { cp, // context + a2, // 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[] = { cp, // context - a2, // name + Register registers[] = { cp, // context + a2, // 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[] = { cp, // context - a0, // receiver + Register registers[] = { cp, // context + a0, // 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[] = { a0, // callee - t0, // call_data - a2, // holder - a1, // api_function_address - cp, // context + Register registers[] = { a0, // callee + t0, // call_data + a2, // holder + a1, // api_function_address + cp, // 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