| Index: src/lookup.h
|
| diff --git a/src/lookup.h b/src/lookup.h
|
| index 01fa766879a70102b6921ff86be40b0b5e0dcb25..5a5466ebe4e991193be0aa7d790d71f5faab1d44 100644
|
| --- a/src/lookup.h
|
| +++ b/src/lookup.h
|
| @@ -88,7 +88,7 @@ class LookupIterator FINAL BASE_EMBEDDED {
|
| bool is_dictionary_holder() const { return holder_map_->is_dictionary_map(); }
|
| Handle<Map> transition_map() const {
|
| DCHECK_EQ(TRANSITION, state_);
|
| - return transition_map_;
|
| + return Handle<Map>::cast(transition_);
|
| }
|
| template <class T>
|
| Handle<T> GetHolder() const {
|
| @@ -107,13 +107,9 @@ class LookupIterator FINAL BASE_EMBEDDED {
|
| PropertyAttributes attributes,
|
| Object::StoreFromKeyed store_mode);
|
| bool IsCacheableTransition() {
|
| - bool cacheable =
|
| - state_ == TRANSITION && transition_map()->GetBackPointer()->IsMap();
|
| - if (cacheable) {
|
| - property_details_ = transition_map_->GetLastDescriptorDetails();
|
| - has_property_ = true;
|
| - }
|
| - return cacheable;
|
| + if (state_ != TRANSITION) return false;
|
| + return transition_->IsPropertyCell() ||
|
| + transition_map()->GetBackPointer()->IsMap();
|
| }
|
| void ApplyTransitionToDataProperty();
|
| void ReconfigureDataProperty(Handle<Object> value,
|
| @@ -135,6 +131,10 @@ class LookupIterator FINAL BASE_EMBEDDED {
|
| int GetAccessorIndex() const;
|
| int GetConstantIndex() const;
|
| Handle<PropertyCell> GetPropertyCell() const;
|
| + Handle<PropertyCell> GetTransitionPropertyCell() const {
|
| + DCHECK_EQ(TRANSITION, state_);
|
| + return Handle<PropertyCell>::cast(transition_);
|
| + }
|
| Handle<Object> GetAccessors() const;
|
| Handle<Object> GetDataValue() const;
|
| // Usually returns the value that was passed in, but may perform
|
| @@ -194,7 +194,7 @@ class LookupIterator FINAL BASE_EMBEDDED {
|
| Isolate* isolate_;
|
| Handle<Name> name_;
|
| Handle<Map> holder_map_;
|
| - Handle<Map> transition_map_;
|
| + Handle<Object> transition_;
|
| Handle<Object> receiver_;
|
| Handle<JSReceiver> holder_;
|
|
|
|
|