| OLD | NEW |
| 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/base/bits.h" | 7 #include "src/base/bits.h" |
| 8 #include "src/double.h" | 8 #include "src/double.h" |
| 9 #include "src/factory.h" | 9 #include "src/factory.h" |
| 10 #include "src/hydrogen-infer-representation.h" | 10 #include "src/hydrogen-infer-representation.h" |
| (...skipping 4585 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4596 return HObjectAccess(kInobject, offset, representation, name, false, true); | 4596 return HObjectAccess(kInobject, offset, representation, name, false, true); |
| 4597 } else { | 4597 } else { |
| 4598 // Non-negative property indices are in the properties array. | 4598 // Non-negative property indices are in the properties array. |
| 4599 int offset = (index * kPointerSize) + FixedArray::kHeaderSize; | 4599 int offset = (index * kPointerSize) + FixedArray::kHeaderSize; |
| 4600 return HObjectAccess(kBackingStore, offset, representation, name, | 4600 return HObjectAccess(kBackingStore, offset, representation, name, |
| 4601 false, false); | 4601 false, false); |
| 4602 } | 4602 } |
| 4603 } | 4603 } |
| 4604 | 4604 |
| 4605 | 4605 |
| 4606 HObjectAccess HObjectAccess::ForCellPayload(Isolate* isolate) { | |
| 4607 return HObjectAccess(kInobject, Cell::kValueOffset, Representation::Tagged(), | |
| 4608 isolate->factory()->cell_value_string()); | |
| 4609 } | |
| 4610 | |
| 4611 | |
| 4612 void HObjectAccess::SetGVNFlags(HValue *instr, PropertyAccessType access_type) { | 4606 void HObjectAccess::SetGVNFlags(HValue *instr, PropertyAccessType access_type) { |
| 4613 // set the appropriate GVN flags for a given load or store instruction | 4607 // set the appropriate GVN flags for a given load or store instruction |
| 4614 if (access_type == STORE) { | 4608 if (access_type == STORE) { |
| 4615 // track dominating allocations in order to eliminate write barriers | 4609 // track dominating allocations in order to eliminate write barriers |
| 4616 instr->SetDependsOnFlag(::v8::internal::kNewSpacePromotion); | 4610 instr->SetDependsOnFlag(::v8::internal::kNewSpacePromotion); |
| 4617 instr->SetFlag(HValue::kTrackSideEffectDominators); | 4611 instr->SetFlag(HValue::kTrackSideEffectDominators); |
| 4618 } else { | 4612 } else { |
| 4619 // try to GVN loads, but don't hoist above map changes | 4613 // try to GVN loads, but don't hoist above map changes |
| 4620 instr->SetFlag(HValue::kUseGVN); | 4614 instr->SetFlag(HValue::kUseGVN); |
| 4621 instr->SetDependsOnFlag(::v8::internal::kMaps); | 4615 instr->SetDependsOnFlag(::v8::internal::kMaps); |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4711 break; | 4705 break; |
| 4712 case HObjectAccess::kExternalMemory: | 4706 case HObjectAccess::kExternalMemory: |
| 4713 os << "[external-memory]"; | 4707 os << "[external-memory]"; |
| 4714 break; | 4708 break; |
| 4715 } | 4709 } |
| 4716 | 4710 |
| 4717 return os << "@" << access.offset(); | 4711 return os << "@" << access.offset(); |
| 4718 } | 4712 } |
| 4719 | 4713 |
| 4720 } } // namespace v8::internal | 4714 } } // namespace v8::internal |
| OLD | NEW |