| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "src/code-stubs.h" | 5 #include "src/code-stubs.h" |
| 6 | 6 |
| 7 #include <sstream> | 7 #include <sstream> |
| 8 | 8 |
| 9 #include "src/bootstrapper.h" | 9 #include "src/bootstrapper.h" |
| 10 #include "src/cpu-profiler.h" | 10 #include "src/cpu-profiler.h" |
| (...skipping 13 matching lines...) Expand all Loading... |
| 24 return Smi::FromInt(0); | 24 return Smi::FromInt(0); |
| 25 } | 25 } |
| 26 | 26 |
| 27 | 27 |
| 28 CodeStubDescriptor::CodeStubDescriptor(CodeStub* stub) | 28 CodeStubDescriptor::CodeStubDescriptor(CodeStub* stub) |
| 29 : call_descriptor_(stub->GetCallInterfaceDescriptor()), | 29 : call_descriptor_(stub->GetCallInterfaceDescriptor()), |
| 30 stack_parameter_count_(no_reg), | 30 stack_parameter_count_(no_reg), |
| 31 hint_stack_parameter_count_(-1), | 31 hint_stack_parameter_count_(-1), |
| 32 function_mode_(NOT_JS_FUNCTION_STUB_MODE), | 32 function_mode_(NOT_JS_FUNCTION_STUB_MODE), |
| 33 deoptimization_handler_(NULL), | 33 deoptimization_handler_(NULL), |
| 34 handler_arguments_mode_(DONT_PASS_ARGUMENTS), | |
| 35 miss_handler_(), | 34 miss_handler_(), |
| 36 has_miss_handler_(false) { | 35 has_miss_handler_(false) { |
| 37 stub->InitializeDescriptor(this); | 36 stub->InitializeDescriptor(this); |
| 38 } | 37 } |
| 39 | 38 |
| 40 | 39 |
| 41 CodeStubDescriptor::CodeStubDescriptor(Isolate* isolate, uint32_t stub_key) | 40 CodeStubDescriptor::CodeStubDescriptor(Isolate* isolate, uint32_t stub_key) |
| 42 : stack_parameter_count_(no_reg), | 41 : stack_parameter_count_(no_reg), |
| 43 hint_stack_parameter_count_(-1), | 42 hint_stack_parameter_count_(-1), |
| 44 function_mode_(NOT_JS_FUNCTION_STUB_MODE), | 43 function_mode_(NOT_JS_FUNCTION_STUB_MODE), |
| 45 deoptimization_handler_(NULL), | 44 deoptimization_handler_(NULL), |
| 46 handler_arguments_mode_(DONT_PASS_ARGUMENTS), | |
| 47 miss_handler_(), | 45 miss_handler_(), |
| 48 has_miss_handler_(false) { | 46 has_miss_handler_(false) { |
| 49 CodeStub::InitializeDescriptor(isolate, stub_key, this); | 47 CodeStub::InitializeDescriptor(isolate, stub_key, this); |
| 50 } | 48 } |
| 51 | 49 |
| 52 | 50 |
| 53 void CodeStubDescriptor::Initialize(Address deoptimization_handler, | 51 void CodeStubDescriptor::Initialize(Address deoptimization_handler, |
| 54 int hint_stack_parameter_count, | 52 int hint_stack_parameter_count, |
| 55 StubFunctionMode function_mode) { | 53 StubFunctionMode function_mode) { |
| 56 deoptimization_handler_ = deoptimization_handler; | 54 deoptimization_handler_ = deoptimization_handler; |
| 57 hint_stack_parameter_count_ = hint_stack_parameter_count; | 55 hint_stack_parameter_count_ = hint_stack_parameter_count; |
| 58 function_mode_ = function_mode; | 56 function_mode_ = function_mode; |
| 59 } | 57 } |
| 60 | 58 |
| 61 | 59 |
| 62 void CodeStubDescriptor::Initialize(Register stack_parameter_count, | 60 void CodeStubDescriptor::Initialize(Register stack_parameter_count, |
| 63 Address deoptimization_handler, | 61 Address deoptimization_handler, |
| 64 int hint_stack_parameter_count, | 62 int hint_stack_parameter_count, |
| 65 StubFunctionMode function_mode, | 63 StubFunctionMode function_mode) { |
| 66 HandlerArgumentsMode handler_mode) { | |
| 67 Initialize(deoptimization_handler, hint_stack_parameter_count, function_mode); | 64 Initialize(deoptimization_handler, hint_stack_parameter_count, function_mode); |
| 68 stack_parameter_count_ = stack_parameter_count; | 65 stack_parameter_count_ = stack_parameter_count; |
| 69 handler_arguments_mode_ = handler_mode; | |
| 70 } | 66 } |
| 71 | 67 |
| 72 | 68 |
| 73 bool CodeStub::FindCodeInCache(Code** code_out) { | 69 bool CodeStub::FindCodeInCache(Code** code_out) { |
| 74 UnseededNumberDictionary* stubs = isolate()->heap()->code_stubs(); | 70 UnseededNumberDictionary* stubs = isolate()->heap()->code_stubs(); |
| 75 int index = stubs->FindEntry(GetKey()); | 71 int index = stubs->FindEntry(GetKey()); |
| 76 if (index != UnseededNumberDictionary::kNotFound) { | 72 if (index != UnseededNumberDictionary::kNotFound) { |
| 77 *code_out = Code::cast(stubs->ValueAt(index)); | 73 *code_out = Code::cast(stubs->ValueAt(index)); |
| 78 return true; | 74 return true; |
| 79 } | 75 } |
| (...skipping 1004 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1084 | 1080 |
| 1085 if (type->Is(Type::UntaggedPointer())) { | 1081 if (type->Is(Type::UntaggedPointer())) { |
| 1086 return Representation::External(); | 1082 return Representation::External(); |
| 1087 } | 1083 } |
| 1088 | 1084 |
| 1089 DCHECK(!type->Is(Type::Untagged())); | 1085 DCHECK(!type->Is(Type::Untagged())); |
| 1090 return Representation::Tagged(); | 1086 return Representation::Tagged(); |
| 1091 } | 1087 } |
| 1092 } // namespace internal | 1088 } // namespace internal |
| 1093 } // namespace v8 | 1089 } // namespace v8 |
| OLD | NEW |