Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(137)

Side by Side Diff: src/code-stubs.cc

Issue 1250563004: HydrogenCodeStubs consume stack arguments via descriptor. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: REBASE. Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/code-stubs.h ('k') | src/code-stubs-hydrogen.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
OLDNEW
« no previous file with comments | « src/code-stubs.h ('k') | src/code-stubs-hydrogen.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698