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

Side by Side Diff: src/hydrogen-instructions.h

Issue 398053002: Introduce FLAG_vector_ics. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Register passed in hydrogen, fixed some test failures. Created 6 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 | Annotate | Revision Log
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 #ifndef V8_HYDROGEN_INSTRUCTIONS_H_ 5 #ifndef V8_HYDROGEN_INSTRUCTIONS_H_
6 #define V8_HYDROGEN_INSTRUCTIONS_H_ 6 #define V8_HYDROGEN_INSTRUCTIONS_H_
7 7
8 #include "src/v8.h" 8 #include "src/v8.h"
9 9
10 #include "src/allocation.h" 10 #include "src/allocation.h"
(...skipping 5387 matching lines...) Expand 10 before | Expand all | Expand 10 after
5398 5398
5399 class HLoadGlobalGeneric V8_FINAL : public HTemplateInstruction<2> { 5399 class HLoadGlobalGeneric V8_FINAL : public HTemplateInstruction<2> {
5400 public: 5400 public:
5401 DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P3(HLoadGlobalGeneric, HValue*, 5401 DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P3(HLoadGlobalGeneric, HValue*,
5402 Handle<Object>, bool); 5402 Handle<Object>, bool);
5403 5403
5404 HValue* context() { return OperandAt(0); } 5404 HValue* context() { return OperandAt(0); }
5405 HValue* global_object() { return OperandAt(1); } 5405 HValue* global_object() { return OperandAt(1); }
5406 Handle<Object> name() const { return name_; } 5406 Handle<Object> name() const { return name_; }
5407 bool for_typeof() const { return for_typeof_; } 5407 bool for_typeof() const { return for_typeof_; }
5408 int slot() const {
5409 ASSERT(FLAG_vector_ics && slot_ != -1);
Toon Verwaest 2014/07/18 09:52:16 != kInvalidFeedbackSlot
mvstanton 2014/07/18 13:35:05 Done.
5410 return slot_;
5411 }
5412 void set_slot(int slot) {
5413 ASSERT(FLAG_vector_ics);
5414 slot_ = slot;
5415 }
5408 5416
5409 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE; 5417 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
5410 5418
5411 virtual Representation RequiredInputRepresentation(int index) V8_OVERRIDE { 5419 virtual Representation RequiredInputRepresentation(int index) V8_OVERRIDE {
5412 return Representation::Tagged(); 5420 return Representation::Tagged();
5413 } 5421 }
5414 5422
5415 DECLARE_CONCRETE_INSTRUCTION(LoadGlobalGeneric) 5423 DECLARE_CONCRETE_INSTRUCTION(LoadGlobalGeneric)
5416 5424
5417 private: 5425 private:
5418 HLoadGlobalGeneric(HValue* context, 5426 HLoadGlobalGeneric(HValue* context,
5419 HValue* global_object, 5427 HValue* global_object,
5420 Handle<Object> name, 5428 Handle<Object> name,
5421 bool for_typeof) 5429 bool for_typeof)
5422 : name_(name), 5430 : name_(name),
5423 for_typeof_(for_typeof) { 5431 for_typeof_(for_typeof),
5432 slot_(-1) {
Toon Verwaest 2014/07/18 09:52:16 kInvalidFeedbackSlot
mvstanton 2014/07/18 13:35:05 Done.
5424 SetOperandAt(0, context); 5433 SetOperandAt(0, context);
5425 SetOperandAt(1, global_object); 5434 SetOperandAt(1, global_object);
5426 set_representation(Representation::Tagged()); 5435 set_representation(Representation::Tagged());
5427 SetAllSideEffects(); 5436 SetAllSideEffects();
5428 } 5437 }
5429 5438
5430 Handle<Object> name_; 5439 Handle<Object> name_;
5431 bool for_typeof_; 5440 bool for_typeof_;
5441 int slot_;
5432 }; 5442 };
5433 5443
5434 5444
5435 class HAllocate V8_FINAL : public HTemplateInstruction<2> { 5445 class HAllocate V8_FINAL : public HTemplateInstruction<2> {
5436 public: 5446 public:
5437 static bool CompatibleInstanceTypes(InstanceType type1, 5447 static bool CompatibleInstanceTypes(InstanceType type1,
5438 InstanceType type2) { 5448 InstanceType type2) {
5439 return ComputeFlags(TENURED, type1) == ComputeFlags(TENURED, type2) && 5449 return ComputeFlags(TENURED, type1) == ComputeFlags(TENURED, type2) &&
5440 ComputeFlags(NOT_TENURED, type1) == ComputeFlags(NOT_TENURED, type2); 5450 ComputeFlags(NOT_TENURED, type1) == ComputeFlags(NOT_TENURED, type2);
5441 } 5451 }
(...skipping 946 matching lines...) Expand 10 before | Expand all | Expand 10 after
6388 6398
6389 class HLoadNamedGeneric V8_FINAL : public HTemplateInstruction<2> { 6399 class HLoadNamedGeneric V8_FINAL : public HTemplateInstruction<2> {
6390 public: 6400 public:
6391 DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P2(HLoadNamedGeneric, HValue*, 6401 DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P2(HLoadNamedGeneric, HValue*,
6392 Handle<Object>); 6402 Handle<Object>);
6393 6403
6394 HValue* context() { return OperandAt(0); } 6404 HValue* context() { return OperandAt(0); }
6395 HValue* object() { return OperandAt(1); } 6405 HValue* object() { return OperandAt(1); }
6396 Handle<Object> name() const { return name_; } 6406 Handle<Object> name() const { return name_; }
6397 6407
6408 int slot() const {
6409 ASSERT(FLAG_vector_ics && slot_ != -1);
Toon Verwaest 2014/07/18 09:52:16 kInvalidFeedbackSlot
mvstanton 2014/07/18 13:35:05 Done.
6410 return slot_;
6411 }
6412 void set_slot(int slot) {
6413 ASSERT(FLAG_vector_ics);
6414 slot_ = slot;
6415 }
6416
6398 virtual Representation RequiredInputRepresentation(int index) V8_OVERRIDE { 6417 virtual Representation RequiredInputRepresentation(int index) V8_OVERRIDE {
6399 return Representation::Tagged(); 6418 return Representation::Tagged();
6400 } 6419 }
6401 6420
6402 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE; 6421 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
6403 6422
6404 DECLARE_CONCRETE_INSTRUCTION(LoadNamedGeneric) 6423 DECLARE_CONCRETE_INSTRUCTION(LoadNamedGeneric)
6405 6424
6406 private: 6425 private:
6407 HLoadNamedGeneric(HValue* context, HValue* object, Handle<Object> name) 6426 HLoadNamedGeneric(HValue* context, HValue* object, Handle<Object> name)
6408 : name_(name) { 6427 : name_(name),
6428 slot_(-1) {
Toon Verwaest 2014/07/18 09:52:16 kInvalidFeedbackSlot
mvstanton 2014/07/18 13:35:05 Done.
6409 SetOperandAt(0, context); 6429 SetOperandAt(0, context);
6410 SetOperandAt(1, object); 6430 SetOperandAt(1, object);
6411 set_representation(Representation::Tagged()); 6431 set_representation(Representation::Tagged());
6412 SetAllSideEffects(); 6432 SetAllSideEffects();
6413 } 6433 }
6414 6434
6415 Handle<Object> name_; 6435 Handle<Object> name_;
6436 int slot_;
6416 }; 6437 };
6417 6438
6418 6439
6419 class HLoadFunctionPrototype V8_FINAL : public HUnaryOperation { 6440 class HLoadFunctionPrototype V8_FINAL : public HUnaryOperation {
6420 public: 6441 public:
6421 DECLARE_INSTRUCTION_FACTORY_P1(HLoadFunctionPrototype, HValue*); 6442 DECLARE_INSTRUCTION_FACTORY_P1(HLoadFunctionPrototype, HValue*);
6422 6443
6423 HValue* function() { return OperandAt(0); } 6444 HValue* function() { return OperandAt(0); }
6424 6445
6425 virtual Representation RequiredInputRepresentation(int index) V8_OVERRIDE { 6446 virtual Representation RequiredInputRepresentation(int index) V8_OVERRIDE {
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after
6651 }; 6672 };
6652 6673
6653 6674
6654 class HLoadKeyedGeneric V8_FINAL : public HTemplateInstruction<3> { 6675 class HLoadKeyedGeneric V8_FINAL : public HTemplateInstruction<3> {
6655 public: 6676 public:
6656 DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P2(HLoadKeyedGeneric, HValue*, 6677 DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P2(HLoadKeyedGeneric, HValue*,
6657 HValue*); 6678 HValue*);
6658 HValue* object() { return OperandAt(0); } 6679 HValue* object() { return OperandAt(0); }
6659 HValue* key() { return OperandAt(1); } 6680 HValue* key() { return OperandAt(1); }
6660 HValue* context() { return OperandAt(2); } 6681 HValue* context() { return OperandAt(2); }
6682 int slot() const {
6683 ASSERT(FLAG_vector_ics && slot_ != -1);
6684 return slot_;
6685 }
6686 void set_slot(int slot) {
6687 ASSERT(FLAG_vector_ics);
6688 slot_ = slot;
6689 }
6661 6690
6662 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE; 6691 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
6663 6692
6664 virtual Representation RequiredInputRepresentation(int index) V8_OVERRIDE { 6693 virtual Representation RequiredInputRepresentation(int index) V8_OVERRIDE {
6665 // tagged[tagged] 6694 // tagged[tagged]
6666 return Representation::Tagged(); 6695 return Representation::Tagged();
6667 } 6696 }
6668 6697
6669 virtual HValue* Canonicalize() V8_OVERRIDE; 6698 virtual HValue* Canonicalize() V8_OVERRIDE;
6670 6699
6671 DECLARE_CONCRETE_INSTRUCTION(LoadKeyedGeneric) 6700 DECLARE_CONCRETE_INSTRUCTION(LoadKeyedGeneric)
6672 6701
6673 private: 6702 private:
6674 HLoadKeyedGeneric(HValue* context, HValue* obj, HValue* key) { 6703 HLoadKeyedGeneric(HValue* context, HValue* obj, HValue* key)
6704 : slot_(-1) {
6675 set_representation(Representation::Tagged()); 6705 set_representation(Representation::Tagged());
6676 SetOperandAt(0, obj); 6706 SetOperandAt(0, obj);
6677 SetOperandAt(1, key); 6707 SetOperandAt(1, key);
6678 SetOperandAt(2, context); 6708 SetOperandAt(2, context);
6679 SetAllSideEffects(); 6709 SetAllSideEffects();
6680 } 6710 }
6711
6712 int slot_;
6681 }; 6713 };
6682 6714
6683 6715
6684 // Indicates whether the store is a store to an entry that was previously 6716 // Indicates whether the store is a store to an entry that was previously
6685 // initialized or not. 6717 // initialized or not.
6686 enum StoreFieldOrKeyedMode { 6718 enum StoreFieldOrKeyedMode {
6687 // The entry could be either previously initialized or not. 6719 // The entry could be either previously initialized or not.
6688 INITIALIZING_STORE, 6720 INITIALIZING_STORE,
6689 // At the time of this store it is guaranteed that the entry is already 6721 // At the time of this store it is guaranteed that the entry is already
6690 // initialized. 6722 // initialized.
(...skipping 1096 matching lines...) Expand 10 before | Expand all | Expand 10 after
7787 }; 7819 };
7788 7820
7789 7821
7790 7822
7791 #undef DECLARE_INSTRUCTION 7823 #undef DECLARE_INSTRUCTION
7792 #undef DECLARE_CONCRETE_INSTRUCTION 7824 #undef DECLARE_CONCRETE_INSTRUCTION
7793 7825
7794 } } // namespace v8::internal 7826 } } // namespace v8::internal
7795 7827
7796 #endif // V8_HYDROGEN_INSTRUCTIONS_H_ 7828 #endif // V8_HYDROGEN_INSTRUCTIONS_H_
OLDNEW
« src/flag-definitions.h ('K') | « src/hydrogen.cc ('k') | src/ia32/builtins-ia32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698