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

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

Issue 331633002: Revert "Revert "Reland 21774: Generate KeyedLoadGeneric with Hydrogen"" (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 6 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 6031 matching lines...) Expand 10 before | Expand all | Expand 10 after
6042 } 6042 }
6043 6043
6044 static HObjectAccess ForFunctionContextPointer() { 6044 static HObjectAccess ForFunctionContextPointer() {
6045 return HObjectAccess(kInobject, JSFunction::kContextOffset); 6045 return HObjectAccess(kInobject, JSFunction::kContextOffset);
6046 } 6046 }
6047 6047
6048 static HObjectAccess ForMap() { 6048 static HObjectAccess ForMap() {
6049 return HObjectAccess(kMaps, JSObject::kMapOffset); 6049 return HObjectAccess(kMaps, JSObject::kMapOffset);
6050 } 6050 }
6051 6051
6052 static HObjectAccess ForMapInstanceSize() { 6052 static HObjectAccess ForMapAsInteger32() {
6053 return HObjectAccess(kMaps, JSObject::kMapOffset,
6054 Representation::Integer32());
6055 }
6056
6057 static HObjectAccess ForMapInObjectProperties() {
6053 return HObjectAccess(kInobject, 6058 return HObjectAccess(kInobject,
6054 Map::kInstanceSizeOffset, 6059 Map::kInObjectPropertiesOffset,
6055 Representation::UInteger8()); 6060 Representation::UInteger8());
6056 } 6061 }
6057 6062
6058 static HObjectAccess ForMapInstanceType() { 6063 static HObjectAccess ForMapInstanceType() {
6059 return HObjectAccess(kInobject, 6064 return HObjectAccess(kInobject,
6060 Map::kInstanceTypeOffset, 6065 Map::kInstanceTypeOffset,
6061 Representation::UInteger8()); 6066 Representation::UInteger8());
6062 } 6067 }
6063 6068
6069 static HObjectAccess ForMapInstanceSize() {
6070 return HObjectAccess(kInobject,
6071 Map::kInstanceSizeOffset,
6072 Representation::UInteger8());
6073 }
6074
6075 static HObjectAccess ForMapBitField() {
6076 return HObjectAccess(kInobject,
6077 Map::kBitFieldOffset,
6078 Representation::UInteger8());
6079 }
6080
6081 static HObjectAccess ForMapBitField2() {
6082 return HObjectAccess(kInobject,
6083 Map::kBitField2Offset,
6084 Representation::UInteger8());
6085 }
6086
6087 static HObjectAccess ForNameHashField() {
6088 return HObjectAccess(kInobject,
6089 Name::kHashFieldOffset,
6090 Representation::Integer32());
6091 }
6092
6093 static HObjectAccess ForMapInstanceTypeAndBitField() {
6094 STATIC_ASSERT((Map::kInstanceTypeOffset & 1) == 0);
mtbrandy 2014/06/17 13:45:40 These asserts are invalid on big endian platforms.
6095 STATIC_ASSERT(Map::kBitFieldOffset == Map::kInstanceTypeOffset + 1);
6096 return HObjectAccess(kInobject,
6097 Map::kInstanceTypeOffset,
6098 Representation::UInteger16());
6099 }
6100
6064 static HObjectAccess ForPropertyCellValue() { 6101 static HObjectAccess ForPropertyCellValue() {
6065 return HObjectAccess(kInobject, PropertyCell::kValueOffset); 6102 return HObjectAccess(kInobject, PropertyCell::kValueOffset);
6066 } 6103 }
6067 6104
6068 static HObjectAccess ForCellValue() { 6105 static HObjectAccess ForCellValue() {
6069 return HObjectAccess(kInobject, Cell::kValueOffset); 6106 return HObjectAccess(kInobject, Cell::kValueOffset);
6070 } 6107 }
6071 6108
6072 static HObjectAccess ForAllocationMementoSite() { 6109 static HObjectAccess ForAllocationMementoSite() {
6073 return HObjectAccess(kInobject, AllocationMemento::kAllocationSiteOffset); 6110 return HObjectAccess(kInobject, AllocationMemento::kAllocationSiteOffset);
(...skipping 372 matching lines...) Expand 10 before | Expand all | Expand 10 after
6446 } 6483 }
6447 HValue* elements() { return OperandAt(0); } 6484 HValue* elements() { return OperandAt(0); }
6448 HValue* key() { return OperandAt(1); } 6485 HValue* key() { return OperandAt(1); }
6449 HValue* dependency() { 6486 HValue* dependency() {
6450 ASSERT(HasDependency()); 6487 ASSERT(HasDependency());
6451 return OperandAt(2); 6488 return OperandAt(2);
6452 } 6489 }
6453 bool HasDependency() const { return OperandAt(0) != OperandAt(2); } 6490 bool HasDependency() const { return OperandAt(0) != OperandAt(2); }
6454 uint32_t base_offset() { return BaseOffsetField::decode(bit_field_); } 6491 uint32_t base_offset() { return BaseOffsetField::decode(bit_field_); }
6455 void IncreaseBaseOffset(uint32_t base_offset) { 6492 void IncreaseBaseOffset(uint32_t base_offset) {
6493 // The base offset is usually simply the size of the array header, except
6494 // with dehoisting adds an addition offset due to a array index key
6495 // manipulation, in which case it becomes (array header size +
6496 // constant-offset-from-key * kPointerSize)
6456 base_offset += BaseOffsetField::decode(bit_field_); 6497 base_offset += BaseOffsetField::decode(bit_field_);
6457 bit_field_ = BaseOffsetField::update(bit_field_, base_offset); 6498 bit_field_ = BaseOffsetField::update(bit_field_, base_offset);
6458 } 6499 }
6459 virtual int MaxBaseOffsetBits() { 6500 virtual int MaxBaseOffsetBits() {
6460 return kBitsForBaseOffset; 6501 return kBitsForBaseOffset;
6461 } 6502 }
6462 HValue* GetKey() { return key(); } 6503 HValue* GetKey() { return key(); }
6463 void SetKey(HValue* key) { SetOperandAt(1, key); } 6504 void SetKey(HValue* key) { SetOperandAt(1, key); }
6464 bool IsDehoisted() { return IsDehoistedField::decode(bit_field_); } 6505 bool IsDehoisted() { return IsDehoistedField::decode(bit_field_); }
6465 void SetDehoisted(bool is_dehoisted) { 6506 void SetDehoisted(bool is_dehoisted) {
6466 bit_field_ = IsDehoistedField::update(bit_field_, is_dehoisted); 6507 bit_field_ = IsDehoistedField::update(bit_field_, is_dehoisted);
6467 } 6508 }
6468 ElementsKind elements_kind() const { 6509 virtual ElementsKind elements_kind() const V8_OVERRIDE {
6469 return ElementsKindField::decode(bit_field_); 6510 return ElementsKindField::decode(bit_field_);
6470 } 6511 }
6471 LoadKeyedHoleMode hole_mode() const { 6512 LoadKeyedHoleMode hole_mode() const {
6472 return HoleModeField::decode(bit_field_); 6513 return HoleModeField::decode(bit_field_);
6473 } 6514 }
6474 6515
6475 virtual Representation RequiredInputRepresentation(int index) V8_OVERRIDE { 6516 virtual Representation RequiredInputRepresentation(int index) V8_OVERRIDE {
6476 // kind_fast: tagged[int32] (none) 6517 // kind_fast: tagged[int32] (none)
6477 // kind_double: tagged[int32] (none) 6518 // kind_double: tagged[int32] (none)
6478 // kind_fixed_typed_array: tagged[int32] (none) 6519 // kind_fixed_typed_array: tagged[int32] (none)
(...skipping 437 matching lines...) Expand 10 before | Expand all | Expand 10 after
6916 HValue* elements() const { return OperandAt(0); } 6957 HValue* elements() const { return OperandAt(0); }
6917 HValue* key() const { return OperandAt(1); } 6958 HValue* key() const { return OperandAt(1); }
6918 HValue* value() const { return OperandAt(2); } 6959 HValue* value() const { return OperandAt(2); }
6919 bool value_is_smi() const { 6960 bool value_is_smi() const {
6920 return IsFastSmiElementsKind(elements_kind_); 6961 return IsFastSmiElementsKind(elements_kind_);
6921 } 6962 }
6922 StoreFieldOrKeyedMode store_mode() const { return store_mode_; } 6963 StoreFieldOrKeyedMode store_mode() const { return store_mode_; }
6923 ElementsKind elements_kind() const { return elements_kind_; } 6964 ElementsKind elements_kind() const { return elements_kind_; }
6924 uint32_t base_offset() { return base_offset_; } 6965 uint32_t base_offset() { return base_offset_; }
6925 void IncreaseBaseOffset(uint32_t base_offset) { 6966 void IncreaseBaseOffset(uint32_t base_offset) {
6967 // The base offset is usually simply the size of the array header, except
6968 // with dehoisting adds an addition offset due to a array index key
6969 // manipulation, in which case it becomes (array header size +
6970 // constant-offset-from-key * kPointerSize)
6926 base_offset_ += base_offset; 6971 base_offset_ += base_offset;
6927 } 6972 }
6928 virtual int MaxBaseOffsetBits() { 6973 virtual int MaxBaseOffsetBits() {
6929 return 31 - ElementsKindToShiftSize(elements_kind_); 6974 return 31 - ElementsKindToShiftSize(elements_kind_);
6930 } 6975 }
6931 HValue* GetKey() { return key(); } 6976 HValue* GetKey() { return key(); }
6932 void SetKey(HValue* key) { SetOperandAt(1, key); } 6977 void SetKey(HValue* key) { SetOperandAt(1, key); }
6933 bool IsDehoisted() { return is_dehoisted_; } 6978 bool IsDehoisted() { return is_dehoisted_; }
6934 void SetDehoisted(bool is_dehoisted) { is_dehoisted_ = is_dehoisted; } 6979 void SetDehoisted(bool is_dehoisted) { is_dehoisted_ = is_dehoisted; }
6935 bool IsUninitialized() { return is_uninitialized_; } 6980 bool IsUninitialized() { return is_uninitialized_; }
(...skipping 821 matching lines...) Expand 10 before | Expand all | Expand 10 after
7757 }; 7802 };
7758 7803
7759 7804
7760 7805
7761 #undef DECLARE_INSTRUCTION 7806 #undef DECLARE_INSTRUCTION
7762 #undef DECLARE_CONCRETE_INSTRUCTION 7807 #undef DECLARE_CONCRETE_INSTRUCTION
7763 7808
7764 } } // namespace v8::internal 7809 } } // namespace v8::internal
7765 7810
7766 #endif // V8_HYDROGEN_INSTRUCTIONS_H_ 7811 #endif // V8_HYDROGEN_INSTRUCTIONS_H_
OLDNEW
« no previous file with comments | « src/hydrogen.cc ('k') | src/ia32/code-stubs-ia32.cc » ('j') | src/objects.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698