Chromium Code Reviews| Index: src/code-stubs.h |
| diff --git a/src/code-stubs.h b/src/code-stubs.h |
| index c0ab7e9e5a17cdb243db3224d5636aef572e8880..525e1a1053dcff339d0174b0a03c051f905e8f39 100644 |
| --- a/src/code-stubs.h |
| +++ b/src/code-stubs.h |
| @@ -271,7 +271,61 @@ class PlatformCodeStub : public CodeStub { |
| enum StubFunctionMode { NOT_JS_FUNCTION_STUB_MODE, JS_FUNCTION_STUB_MODE }; |
| enum HandlerArgumentsMode { DONT_PASS_ARGUMENTS, PASS_ARGUMENTS }; |
| -class CodeStubInterfaceDescriptor { |
| +class InterfaceDescriptor { |
|
danno
2014/07/15 07:48:31
In general, could more stuff in this class be priv
|
| + public: |
| + static const Register ContextRegister(); |
|
danno
2014/07/15 07:48:31
Can you make this a virtual register that returns
|
| + |
| + InterfaceDescriptor(); |
| + virtual ~InterfaceDescriptor() {} |
| + |
| + bool initialized() const { return register_param_count_ >= 0; } |
| + |
| + int environment_length() const { |
|
danno
2014/07/15 07:48:31
Since this is not an accessor with an indentical n
mvstanton
2014/07/16 09:43:26
Done.
|
| + return register_param_count_; |
| + } |
| + |
| + int register_param_count() const { return register_param_count_; } |
| + |
| + Register GetParameterRegister(int index) const { |
| + return register_params_[index]; |
| + } |
| + |
| + Representation GetParameterRepresentation(int index) const { |
| + ASSERT(index < register_param_count_); |
| + if (register_param_representations_.get() == NULL) { |
| + return Representation::Tagged(); |
| + } |
| + |
| + return register_param_representations_[index]; |
| + } |
| + |
| + Representation* register_param_representations() const { |
|
danno
2014/07/15 07:48:31
Does this have to be public?
mvstanton
2014/07/16 09:43:26
No, it is gone, good catch.
|
| + return register_param_representations_.get(); |
| + } |
| + |
| + virtual bool needs_context_register() const { return true; } |
|
danno
2014/07/15 07:48:31
NeedsContextRegister
mvstanton
2014/07/16 09:43:26
Done.
|
| + |
| + protected: |
| + void Initialize(int register_parameter_count, Register* registers, |
| + Representation* register_param_representations); |
| + |
| + private: |
| + int register_param_count_; |
| + |
| + // The Register params are allocated dynamically by the |
| + // CodeStubInterfaceDescriptor, and freed on destruction. This is because |
| + // static arrays of Registers cause creation of runtime static initializers |
| + // which we don't want. |
| + SmartArrayPointer<Register> register_params_; |
| + // Specifies Representations for the stub's parameter. Points to an array of |
| + // Representations of the same length of the numbers of parameters to the |
| + // stub, or if NULL (the default value), Representation of each parameter |
| + // assumed to be Tagged(). |
| + SmartArrayPointer<Representation> register_param_representations_; |
| +}; |
| + |
| + |
| +class CodeStubInterfaceDescriptor: public InterfaceDescriptor { |
| public: |
| CodeStubInterfaceDescriptor(); |
| @@ -287,11 +341,6 @@ class CodeStubInterfaceDescriptor { |
| int hint_stack_parameter_count = -1, |
| StubFunctionMode function_mode = NOT_JS_FUNCTION_STUB_MODE, |
| HandlerArgumentsMode handler_mode = DONT_PASS_ARGUMENTS); |
| - bool initialized() const { return register_param_count_ >= 0; } |
| - |
| - int environment_length() const { |
| - return register_param_count_; |
| - } |
| void SetMissHandler(ExternalReference handler) { |
| miss_handler_ = handler; |
| @@ -310,19 +359,6 @@ class CodeStubInterfaceDescriptor { |
| return has_miss_handler_; |
| } |
| - Register GetParameterRegister(int index) const { |
| - return register_params_[index]; |
| - } |
| - |
| - Representation GetRegisterParameterRepresentation(int index) const { |
| - ASSERT(index < register_param_count_); |
| - if (register_param_representations_.get() == NULL) { |
| - return Representation::Tagged(); |
| - } |
| - |
| - return register_param_representations_[index]; |
| - } |
| - |
| bool IsParameterCountRegister(int index) const { |
| return GetParameterRegister(index).is(stack_parameter_count_); |
| } |
| @@ -335,33 +371,17 @@ class CodeStubInterfaceDescriptor { |
| return params; |
| } |
| - int register_param_count() const { return register_param_count_; } |
| int hint_stack_parameter_count() const { return hint_stack_parameter_count_; } |
| Register stack_parameter_count() const { return stack_parameter_count_; } |
| StubFunctionMode function_mode() const { return function_mode_; } |
| Address deoptimization_handler() const { return deoptimization_handler_; } |
| - Representation* register_param_representations() const { |
| - return register_param_representations_.get(); |
| - } |
| private: |
| - int register_param_count_; |
| - |
| Register stack_parameter_count_; |
| // If hint_stack_parameter_count_ > 0, the code stub can optimize the |
| // return sequence. Default value is -1, which means it is ignored. |
| int hint_stack_parameter_count_; |
| StubFunctionMode function_mode_; |
| - // The Register params are allocated dynamically by the |
| - // CodeStubInterfaceDescriptor, and freed on destruction. This is because |
| - // static arrays of Registers cause creation of runtime static initializers |
| - // which we don't want. |
| - SmartArrayPointer<Register> register_params_; |
| - // Specifies Representations for the stub's parameter. Points to an array of |
| - // Representations of the same length of the numbers of parameters to the |
| - // stub, or if NULL (the default value), Representation of each parameter |
| - // assumed to be Tagged(). |
| - SmartArrayPointer<Representation> register_param_representations_; |
| Address deoptimization_handler_; |
| HandlerArgumentsMode handler_arguments_mode_; |
| @@ -375,13 +395,10 @@ class CodeStubInterfaceDescriptor { |
| class PlatformCallInterfaceDescriptor; |
| -class CallInterfaceDescriptor { |
| +class CallInterfaceDescriptor: public InterfaceDescriptor { |
| public: |
| CallInterfaceDescriptor() |
| - : register_param_count_(-1), |
| - register_params_(NULL), |
| - param_representations_(NULL), |
| - platform_specific_descriptor_(NULL) { } |
| + : platform_specific_descriptor_(NULL) { } |
| // A copy of the passed in registers and param_representations is made |
| // and owned by the CallInterfaceDescriptor. |
| @@ -394,28 +411,12 @@ class CallInterfaceDescriptor { |
| Representation* param_representations, |
| PlatformCallInterfaceDescriptor* platform_descriptor = NULL); |
| - bool initialized() const { return register_param_count_ >= 0; } |
| - |
| - int environment_length() const { |
| - return register_param_count_; |
| - } |
| - |
| - Representation GetParameterRepresentation(int index) const { |
| - return param_representations_[index]; |
| - } |
| - |
| - Register GetParameterRegister(int index) const { |
| - return register_params_[index]; |
| - } |
| - |
| PlatformCallInterfaceDescriptor* platform_specific_descriptor() const { |
| return platform_specific_descriptor_; |
| } |
| private: |
| int register_param_count_; |
| - SmartArrayPointer<Register> register_params_; |
| - SmartArrayPointer<Representation> param_representations_; |
| PlatformCallInterfaceDescriptor* platform_specific_descriptor_; |
| }; |