| OLD | NEW |
| 1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 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_LOOKUP_INL_H_ | 5 #ifndef V8_LOOKUP_INL_H_ |
| 6 #define V8_LOOKUP_INL_H_ | 6 #define V8_LOOKUP_INL_H_ |
| 7 | 7 |
| 8 #include "src/lookup.h" | 8 #include "src/lookup.h" |
| 9 | 9 |
| 10 namespace v8 { | 10 namespace v8 { |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 65 property_details_ = PropertyDetails(attributes, v8::internal::DATA, 0, | 65 property_details_ = PropertyDetails(attributes, v8::internal::DATA, 0, |
| 66 PropertyCellType::kNoCell); | 66 PropertyCellType::kNoCell); |
| 67 } else { | 67 } else { |
| 68 JSObject* js_object = JSObject::cast(holder); | 68 JSObject* js_object = JSObject::cast(holder); |
| 69 if (js_object->elements() == isolate()->heap()->empty_fixed_array()) { | 69 if (js_object->elements() == isolate()->heap()->empty_fixed_array()) { |
| 70 return NOT_FOUND; | 70 return NOT_FOUND; |
| 71 } | 71 } |
| 72 | 72 |
| 73 ElementsAccessor* accessor = js_object->GetElementsAccessor(); | 73 ElementsAccessor* accessor = js_object->GetElementsAccessor(); |
| 74 FixedArrayBase* backing_store = js_object->elements(); | 74 FixedArrayBase* backing_store = js_object->elements(); |
| 75 number_ = accessor->GetIndexForKey(backing_store, index_); | 75 number_ = accessor->GetIndexForKey(js_object, backing_store, index_); |
| 76 if (number_ == kMaxUInt32) return NOT_FOUND; | 76 if (number_ == kMaxUInt32) return NOT_FOUND; |
| 77 if (accessor->GetAttributes(js_object, index_, backing_store) == | |
| 78 ABSENT) { | |
| 79 return NOT_FOUND; | |
| 80 } | |
| 81 property_details_ = accessor->GetDetails(backing_store, number_); | 77 property_details_ = accessor->GetDetails(backing_store, number_); |
| 82 } | 78 } |
| 83 } else if (holder->IsGlobalObject()) { | 79 } else if (holder->IsGlobalObject()) { |
| 84 GlobalDictionary* dict = JSObject::cast(holder)->global_dictionary(); | 80 GlobalDictionary* dict = JSObject::cast(holder)->global_dictionary(); |
| 85 int number = dict->FindEntry(name_); | 81 int number = dict->FindEntry(name_); |
| 86 if (number == GlobalDictionary::kNotFound) return NOT_FOUND; | 82 if (number == GlobalDictionary::kNotFound) return NOT_FOUND; |
| 87 number_ = static_cast<uint32_t>(number); | 83 number_ = static_cast<uint32_t>(number); |
| 88 DCHECK(dict->ValueAt(number_)->IsPropertyCell()); | 84 DCHECK(dict->ValueAt(number_)->IsPropertyCell()); |
| 89 PropertyCell* cell = PropertyCell::cast(dict->ValueAt(number_)); | 85 PropertyCell* cell = PropertyCell::cast(dict->ValueAt(number_)); |
| 90 if (cell->value()->IsTheHole()) return NOT_FOUND; | 86 if (cell->value()->IsTheHole()) return NOT_FOUND; |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 134 default: | 130 default: |
| 135 return NOT_FOUND; | 131 return NOT_FOUND; |
| 136 } | 132 } |
| 137 UNREACHABLE(); | 133 UNREACHABLE(); |
| 138 return state_; | 134 return state_; |
| 139 } | 135 } |
| 140 } | 136 } |
| 141 } // namespace v8::internal | 137 } // namespace v8::internal |
| 142 | 138 |
| 143 #endif // V8_LOOKUP_INL_H_ | 139 #endif // V8_LOOKUP_INL_H_ |
| OLD | NEW |