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

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

Issue 332663003: 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
« no previous file with comments | « src/hydrogen.cc ('k') | src/ia32/code-stubs-ia32.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 #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 ForMapAsInteger32() { 6052 static HObjectAccess ForMapInstanceSize() {
6053 return HObjectAccess(kMaps, JSObject::kMapOffset,
6054 Representation::Integer32());
6055 }
6056
6057 static HObjectAccess ForMapInObjectProperties() {
6058 return HObjectAccess(kInobject, 6053 return HObjectAccess(kInobject,
6059 Map::kInObjectPropertiesOffset, 6054 Map::kInstanceSizeOffset,
6060 Representation::UInteger8()); 6055 Representation::UInteger8());
6061 } 6056 }
6062 6057
6063 static HObjectAccess ForMapInstanceType() { 6058 static HObjectAccess ForMapInstanceType() {
6064 return HObjectAccess(kInobject, 6059 return HObjectAccess(kInobject,
6065 Map::kInstanceTypeOffset, 6060 Map::kInstanceTypeOffset,
6066 Representation::UInteger8()); 6061 Representation::UInteger8());
6067 } 6062 }
6068 6063
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);
6095 STATIC_ASSERT(Map::kBitFieldOffset == Map::kInstanceTypeOffset + 1);
6096 return HObjectAccess(kInobject,
6097 Map::kInstanceTypeOffset,
6098 Representation::UInteger16());
6099 }
6100
6101 static HObjectAccess ForPropertyCellValue() { 6064 static HObjectAccess ForPropertyCellValue() {
6102 return HObjectAccess(kInobject, PropertyCell::kValueOffset); 6065 return HObjectAccess(kInobject, PropertyCell::kValueOffset);
6103 } 6066 }
6104 6067
6105 static HObjectAccess ForCellValue() { 6068 static HObjectAccess ForCellValue() {
6106 return HObjectAccess(kInobject, Cell::kValueOffset); 6069 return HObjectAccess(kInobject, Cell::kValueOffset);
6107 } 6070 }
6108 6071
6109 static HObjectAccess ForAllocationMementoSite() { 6072 static HObjectAccess ForAllocationMementoSite() {
6110 return HObjectAccess(kInobject, AllocationMemento::kAllocationSiteOffset); 6073 return HObjectAccess(kInobject, AllocationMemento::kAllocationSiteOffset);
(...skipping 372 matching lines...) Expand 10 before | Expand all | Expand 10 after
6483 } 6446 }
6484 HValue* elements() { return OperandAt(0); } 6447 HValue* elements() { return OperandAt(0); }
6485 HValue* key() { return OperandAt(1); } 6448 HValue* key() { return OperandAt(1); }
6486 HValue* dependency() { 6449 HValue* dependency() {
6487 ASSERT(HasDependency()); 6450 ASSERT(HasDependency());
6488 return OperandAt(2); 6451 return OperandAt(2);
6489 } 6452 }
6490 bool HasDependency() const { return OperandAt(0) != OperandAt(2); } 6453 bool HasDependency() const { return OperandAt(0) != OperandAt(2); }
6491 uint32_t base_offset() { return BaseOffsetField::decode(bit_field_); } 6454 uint32_t base_offset() { return BaseOffsetField::decode(bit_field_); }
6492 void IncreaseBaseOffset(uint32_t base_offset) { 6455 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)
6497 base_offset += BaseOffsetField::decode(bit_field_); 6456 base_offset += BaseOffsetField::decode(bit_field_);
6498 bit_field_ = BaseOffsetField::update(bit_field_, base_offset); 6457 bit_field_ = BaseOffsetField::update(bit_field_, base_offset);
6499 } 6458 }
6500 virtual int MaxBaseOffsetBits() { 6459 virtual int MaxBaseOffsetBits() {
6501 return kBitsForBaseOffset; 6460 return kBitsForBaseOffset;
6502 } 6461 }
6503 HValue* GetKey() { return key(); } 6462 HValue* GetKey() { return key(); }
6504 void SetKey(HValue* key) { SetOperandAt(1, key); } 6463 void SetKey(HValue* key) { SetOperandAt(1, key); }
6505 bool IsDehoisted() { return IsDehoistedField::decode(bit_field_); } 6464 bool IsDehoisted() { return IsDehoistedField::decode(bit_field_); }
6506 void SetDehoisted(bool is_dehoisted) { 6465 void SetDehoisted(bool is_dehoisted) {
6507 bit_field_ = IsDehoistedField::update(bit_field_, is_dehoisted); 6466 bit_field_ = IsDehoistedField::update(bit_field_, is_dehoisted);
6508 } 6467 }
6509 virtual ElementsKind elements_kind() const V8_OVERRIDE { 6468 ElementsKind elements_kind() const {
6510 return ElementsKindField::decode(bit_field_); 6469 return ElementsKindField::decode(bit_field_);
6511 } 6470 }
6512 LoadKeyedHoleMode hole_mode() const { 6471 LoadKeyedHoleMode hole_mode() const {
6513 return HoleModeField::decode(bit_field_); 6472 return HoleModeField::decode(bit_field_);
6514 } 6473 }
6515 6474
6516 virtual Representation RequiredInputRepresentation(int index) V8_OVERRIDE { 6475 virtual Representation RequiredInputRepresentation(int index) V8_OVERRIDE {
6517 // kind_fast: tagged[int32] (none) 6476 // kind_fast: tagged[int32] (none)
6518 // kind_double: tagged[int32] (none) 6477 // kind_double: tagged[int32] (none)
6519 // kind_fixed_typed_array: tagged[int32] (none) 6478 // kind_fixed_typed_array: tagged[int32] (none)
(...skipping 437 matching lines...) Expand 10 before | Expand all | Expand 10 after
6957 HValue* elements() const { return OperandAt(0); } 6916 HValue* elements() const { return OperandAt(0); }
6958 HValue* key() const { return OperandAt(1); } 6917 HValue* key() const { return OperandAt(1); }
6959 HValue* value() const { return OperandAt(2); } 6918 HValue* value() const { return OperandAt(2); }
6960 bool value_is_smi() const { 6919 bool value_is_smi() const {
6961 return IsFastSmiElementsKind(elements_kind_); 6920 return IsFastSmiElementsKind(elements_kind_);
6962 } 6921 }
6963 StoreFieldOrKeyedMode store_mode() const { return store_mode_; } 6922 StoreFieldOrKeyedMode store_mode() const { return store_mode_; }
6964 ElementsKind elements_kind() const { return elements_kind_; } 6923 ElementsKind elements_kind() const { return elements_kind_; }
6965 uint32_t base_offset() { return base_offset_; } 6924 uint32_t base_offset() { return base_offset_; }
6966 void IncreaseBaseOffset(uint32_t base_offset) { 6925 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)
6971 base_offset_ += base_offset; 6926 base_offset_ += base_offset;
6972 } 6927 }
6973 virtual int MaxBaseOffsetBits() { 6928 virtual int MaxBaseOffsetBits() {
6974 return 31 - ElementsKindToShiftSize(elements_kind_); 6929 return 31 - ElementsKindToShiftSize(elements_kind_);
6975 } 6930 }
6976 HValue* GetKey() { return key(); } 6931 HValue* GetKey() { return key(); }
6977 void SetKey(HValue* key) { SetOperandAt(1, key); } 6932 void SetKey(HValue* key) { SetOperandAt(1, key); }
6978 bool IsDehoisted() { return is_dehoisted_; } 6933 bool IsDehoisted() { return is_dehoisted_; }
6979 void SetDehoisted(bool is_dehoisted) { is_dehoisted_ = is_dehoisted; } 6934 void SetDehoisted(bool is_dehoisted) { is_dehoisted_ = is_dehoisted; }
6980 bool IsUninitialized() { return is_uninitialized_; } 6935 bool IsUninitialized() { return is_uninitialized_; }
(...skipping 821 matching lines...) Expand 10 before | Expand all | Expand 10 after
7802 }; 7757 };
7803 7758
7804 7759
7805 7760
7806 #undef DECLARE_INSTRUCTION 7761 #undef DECLARE_INSTRUCTION
7807 #undef DECLARE_CONCRETE_INSTRUCTION 7762 #undef DECLARE_CONCRETE_INSTRUCTION
7808 7763
7809 } } // namespace v8::internal 7764 } } // namespace v8::internal
7810 7765
7811 #endif // V8_HYDROGEN_INSTRUCTIONS_H_ 7766 #endif // V8_HYDROGEN_INSTRUCTIONS_H_
OLDNEW
« no previous file with comments | « src/hydrogen.cc ('k') | src/ia32/code-stubs-ia32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698