| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 5808 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5819 } | 5819 } |
| 5820 | 5820 |
| 5821 static HObjectAccess ForNextFunctionLinkPointer() { | 5821 static HObjectAccess ForNextFunctionLinkPointer() { |
| 5822 return HObjectAccess(kInobject, JSFunction::kNextFunctionLinkOffset); | 5822 return HObjectAccess(kInobject, JSFunction::kNextFunctionLinkOffset); |
| 5823 } | 5823 } |
| 5824 | 5824 |
| 5825 static HObjectAccess ForArrayLength(ElementsKind elements_kind) { | 5825 static HObjectAccess ForArrayLength(ElementsKind elements_kind) { |
| 5826 return HObjectAccess( | 5826 return HObjectAccess( |
| 5827 kArrayLengths, | 5827 kArrayLengths, |
| 5828 JSArray::kLengthOffset, | 5828 JSArray::kLengthOffset, |
| 5829 IsFastElementsKind(elements_kind) && | 5829 IsFastElementsKind(elements_kind) |
| 5830 FLAG_track_fields | 5830 ? Representation::Smi() : Representation::Tagged()); |
| 5831 ? Representation::Smi() : Representation::Tagged()); | |
| 5832 } | 5831 } |
| 5833 | 5832 |
| 5834 static HObjectAccess ForAllocationSiteOffset(int offset); | 5833 static HObjectAccess ForAllocationSiteOffset(int offset); |
| 5835 | 5834 |
| 5836 static HObjectAccess ForAllocationSiteList() { | 5835 static HObjectAccess ForAllocationSiteList() { |
| 5837 return HObjectAccess(kExternalMemory, 0, Representation::Tagged(), | 5836 return HObjectAccess(kExternalMemory, 0, Representation::Tagged(), |
| 5838 Handle<String>::null(), false, false); | 5837 Handle<String>::null(), false, false); |
| 5839 } | 5838 } |
| 5840 | 5839 |
| 5841 static HObjectAccess ForFixedArrayLength() { | 5840 static HObjectAccess ForFixedArrayLength() { |
| 5842 return HObjectAccess( | 5841 return HObjectAccess( |
| 5843 kArrayLengths, | 5842 kArrayLengths, |
| 5844 FixedArray::kLengthOffset, | 5843 FixedArray::kLengthOffset, |
| 5845 FLAG_track_fields ? Representation::Smi() : Representation::Tagged()); | 5844 Representation::Smi()); |
| 5846 } | 5845 } |
| 5847 | 5846 |
| 5848 static HObjectAccess ForStringHashField() { | 5847 static HObjectAccess ForStringHashField() { |
| 5849 return HObjectAccess(kInobject, | 5848 return HObjectAccess(kInobject, |
| 5850 String::kHashFieldOffset, | 5849 String::kHashFieldOffset, |
| 5851 Representation::Integer32()); | 5850 Representation::Integer32()); |
| 5852 } | 5851 } |
| 5853 | 5852 |
| 5854 static HObjectAccess ForStringLength() { | 5853 static HObjectAccess ForStringLength() { |
| 5855 STATIC_ASSERT(String::kMaxLength <= Smi::kMaxValue); | 5854 STATIC_ASSERT(String::kMaxLength <= Smi::kMaxValue); |
| 5856 return HObjectAccess( | 5855 return HObjectAccess( |
| 5857 kStringLengths, | 5856 kStringLengths, |
| 5858 String::kLengthOffset, | 5857 String::kLengthOffset, |
| 5859 FLAG_track_fields ? Representation::Smi() : Representation::Tagged()); | 5858 Representation::Smi()); |
| 5860 } | 5859 } |
| 5861 | 5860 |
| 5862 static HObjectAccess ForConsStringFirst() { | 5861 static HObjectAccess ForConsStringFirst() { |
| 5863 return HObjectAccess(kInobject, ConsString::kFirstOffset); | 5862 return HObjectAccess(kInobject, ConsString::kFirstOffset); |
| 5864 } | 5863 } |
| 5865 | 5864 |
| 5866 static HObjectAccess ForConsStringSecond() { | 5865 static HObjectAccess ForConsStringSecond() { |
| 5867 return HObjectAccess(kInobject, ConsString::kSecondOffset); | 5866 return HObjectAccess(kInobject, ConsString::kSecondOffset); |
| 5868 } | 5867 } |
| 5869 | 5868 |
| (...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6140 set_type(HType::Smi()); | 6139 set_type(HType::Smi()); |
| 6141 if (SmiValuesAre32Bits()) { | 6140 if (SmiValuesAre32Bits()) { |
| 6142 set_representation(Representation::Integer32()); | 6141 set_representation(Representation::Integer32()); |
| 6143 } else { | 6142 } else { |
| 6144 set_representation(representation); | 6143 set_representation(representation); |
| 6145 } | 6144 } |
| 6146 } else if (representation.IsDouble() || | 6145 } else if (representation.IsDouble() || |
| 6147 representation.IsExternal() || | 6146 representation.IsExternal() || |
| 6148 representation.IsInteger32()) { | 6147 representation.IsInteger32()) { |
| 6149 set_representation(representation); | 6148 set_representation(representation); |
| 6150 } else if (FLAG_track_heap_object_fields && | 6149 } else if (representation.IsHeapObject()) { |
| 6151 representation.IsHeapObject()) { | |
| 6152 set_type(HType::NonPrimitive()); | 6150 set_type(HType::NonPrimitive()); |
| 6153 set_representation(Representation::Tagged()); | 6151 set_representation(Representation::Tagged()); |
| 6154 } else { | 6152 } else { |
| 6155 set_representation(Representation::Tagged()); | 6153 set_representation(Representation::Tagged()); |
| 6156 } | 6154 } |
| 6157 access.SetGVNFlags(this, LOAD); | 6155 access.SetGVNFlags(this, LOAD); |
| 6158 } | 6156 } |
| 6159 | 6157 |
| 6160 virtual bool IsDeletable() const V8_OVERRIDE { return true; } | 6158 virtual bool IsDeletable() const V8_OVERRIDE { return true; } |
| 6161 | 6159 |
| (...skipping 377 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6539 ASSERT(!has_transition()); // Only set once. | 6537 ASSERT(!has_transition()); // Only set once. |
| 6540 Handle<Map> map = Handle<Map>::cast(map_constant->handle(info->isolate())); | 6538 Handle<Map> map = Handle<Map>::cast(map_constant->handle(info->isolate())); |
| 6541 if (map->CanBeDeprecated()) { | 6539 if (map->CanBeDeprecated()) { |
| 6542 map->AddDependentCompilationInfo(DependentCode::kTransitionGroup, info); | 6540 map->AddDependentCompilationInfo(DependentCode::kTransitionGroup, info); |
| 6543 } | 6541 } |
| 6544 SetOperandAt(2, map_constant); | 6542 SetOperandAt(2, map_constant); |
| 6545 has_transition_ = true; | 6543 has_transition_ = true; |
| 6546 } | 6544 } |
| 6547 | 6545 |
| 6548 bool NeedsWriteBarrier() { | 6546 bool NeedsWriteBarrier() { |
| 6549 ASSERT(!(FLAG_track_double_fields && field_representation().IsDouble()) || | 6547 ASSERT(!field_representation().IsDouble() || !has_transition()); |
| 6550 !has_transition()); | |
| 6551 if (IsSkipWriteBarrier()) return false; | 6548 if (IsSkipWriteBarrier()) return false; |
| 6552 if (field_representation().IsDouble()) return false; | 6549 if (field_representation().IsDouble()) return false; |
| 6553 if (field_representation().IsSmi()) return false; | 6550 if (field_representation().IsSmi()) return false; |
| 6554 if (field_representation().IsInteger32()) return false; | 6551 if (field_representation().IsInteger32()) return false; |
| 6555 if (field_representation().IsExternal()) return false; | 6552 if (field_representation().IsExternal()) return false; |
| 6556 return StoringValueNeedsWriteBarrier(value()) && | 6553 return StoringValueNeedsWriteBarrier(value()) && |
| 6557 ReceiverObjectNeedsWriteBarrier(object(), value(), | 6554 ReceiverObjectNeedsWriteBarrier(object(), value(), |
| 6558 new_space_dominator()); | 6555 new_space_dominator()); |
| 6559 } | 6556 } |
| 6560 | 6557 |
| (...skipping 921 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7482 virtual bool IsDeletable() const V8_OVERRIDE { return true; } | 7479 virtual bool IsDeletable() const V8_OVERRIDE { return true; } |
| 7483 }; | 7480 }; |
| 7484 | 7481 |
| 7485 | 7482 |
| 7486 #undef DECLARE_INSTRUCTION | 7483 #undef DECLARE_INSTRUCTION |
| 7487 #undef DECLARE_CONCRETE_INSTRUCTION | 7484 #undef DECLARE_CONCRETE_INSTRUCTION |
| 7488 | 7485 |
| 7489 } } // namespace v8::internal | 7486 } } // namespace v8::internal |
| 7490 | 7487 |
| 7491 #endif // V8_HYDROGEN_INSTRUCTIONS_H_ | 7488 #endif // V8_HYDROGEN_INSTRUCTIONS_H_ |
| OLD | NEW |