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

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

Issue 553833002: Initialize CodeStubInterfaceDescriptor in the constructor. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 3 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 | Annotate | Revision Log
« no previous file with comments | « src/code-stubs.cc ('k') | src/compiler/js-generic-lowering.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/v8.h" 5 #include "src/v8.h"
6 6
7 #include "src/code-stubs.h" 7 #include "src/code-stubs.h"
8 #include "src/field-index.h" 8 #include "src/field-index.h"
9 #include "src/hydrogen.h" 9 #include "src/hydrogen.h"
10 #include "src/lithium.h" 10 #include "src/lithium.h"
(...skipping 19 matching lines...) Expand all
30 return chunk; 30 return chunk;
31 } 31 }
32 32
33 33
34 class CodeStubGraphBuilderBase : public HGraphBuilder { 34 class CodeStubGraphBuilderBase : public HGraphBuilder {
35 public: 35 public:
36 CodeStubGraphBuilderBase(Isolate* isolate, HydrogenCodeStub* stub) 36 CodeStubGraphBuilderBase(Isolate* isolate, HydrogenCodeStub* stub)
37 : HGraphBuilder(&info_), 37 : HGraphBuilder(&info_),
38 arguments_length_(NULL), 38 arguments_length_(NULL),
39 info_(stub, isolate), 39 info_(stub, isolate),
40 descriptor_(stub),
40 context_(NULL) { 41 context_(NULL) {
41 stub->InitializeInterfaceDescriptor(&descriptor_);
42 int parameter_count = descriptor_.GetEnvironmentParameterCount(); 42 int parameter_count = descriptor_.GetEnvironmentParameterCount();
43 parameters_.Reset(new HParameter*[parameter_count]); 43 parameters_.Reset(new HParameter*[parameter_count]);
44 } 44 }
45 virtual bool BuildGraph(); 45 virtual bool BuildGraph();
46 46
47 protected: 47 protected:
48 virtual HValue* BuildCodeStub() = 0; 48 virtual HValue* BuildCodeStub() = 0;
49 HParameter* GetParameter(int parameter) { 49 HParameter* GetParameter(int parameter) {
50 DCHECK(parameter < descriptor_.GetEnvironmentParameterCount()); 50 DCHECK(parameter < descriptor_.GetEnvironmentParameterCount());
51 return parameters_[parameter]; 51 return parameters_[parameter];
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
244 GetStubType()); 244 GetStubType());
245 Handle<Code> new_object = factory->NewCode( 245 Handle<Code> new_object = factory->NewCode(
246 desc, flags, masm.CodeObject(), NeedsImmovableCode()); 246 desc, flags, masm.CodeObject(), NeedsImmovableCode());
247 return new_object; 247 return new_object;
248 } 248 }
249 249
250 250
251 template <class Stub> 251 template <class Stub>
252 static Handle<Code> DoGenerateCode(Stub* stub) { 252 static Handle<Code> DoGenerateCode(Stub* stub) {
253 Isolate* isolate = stub->isolate(); 253 Isolate* isolate = stub->isolate();
254 CodeStubInterfaceDescriptor descriptor; 254 CodeStubInterfaceDescriptor descriptor(stub);
255 stub->InitializeInterfaceDescriptor(&descriptor);
256 255
257 // If we are uninitialized we can use a light-weight stub to enter 256 // If we are uninitialized we can use a light-weight stub to enter
258 // the runtime that is significantly faster than using the standard 257 // the runtime that is significantly faster than using the standard
259 // stub-failure deopt mechanism. 258 // stub-failure deopt mechanism.
260 if (stub->IsUninitialized() && descriptor.has_miss_handler()) { 259 if (stub->IsUninitialized() && descriptor.has_miss_handler()) {
261 DCHECK(!descriptor.stack_parameter_count().is_valid()); 260 DCHECK(!descriptor.stack_parameter_count().is_valid());
262 return stub->GenerateLightweightMissCode(); 261 return stub->GenerateLightweightMissCode();
263 } 262 }
264 base::ElapsedTimer timer; 263 base::ElapsedTimer timer;
265 if (FLAG_profile_hydrogen_code_stub_compilation) { 264 if (FLAG_profile_hydrogen_code_stub_compilation) {
(...skipping 1536 matching lines...) Expand 10 before | Expand all | Expand 10 after
1802 HValue* receiver = GetParameter(VectorLoadICDescriptor::kReceiverIndex); 1801 HValue* receiver = GetParameter(VectorLoadICDescriptor::kReceiverIndex);
1803 Add<HDeoptimize>("Always deopt", Deoptimizer::EAGER); 1802 Add<HDeoptimize>("Always deopt", Deoptimizer::EAGER);
1804 return receiver; 1803 return receiver;
1805 } 1804 }
1806 1805
1807 1806
1808 Handle<Code> VectorKeyedLoadStub::GenerateCode() { 1807 Handle<Code> VectorKeyedLoadStub::GenerateCode() {
1809 return DoGenerateCode(this); 1808 return DoGenerateCode(this);
1810 } 1809 }
1811 } } // namespace v8::internal 1810 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/code-stubs.cc ('k') | src/compiler/js-generic-lowering.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698