Index: src/property.h |
diff --git a/src/property.h b/src/property.h |
index 272a0a5ab9155b2cc228bd2fc2f0d3c76edeed0c..a1e8011b53aa138fb022440e457d030c44c98e9a 100644 |
--- a/src/property.h |
+++ b/src/property.h |
@@ -146,10 +146,14 @@ class LookupResult V8_FINAL BASE_EMBEDDED { |
case FIELD: |
return value->FitsRepresentation(representation()) && |
GetFieldType()->NowContains(value); |
- case CONSTANT: |
- DCHECK(GetConstant() != *value || |
+ case CONSTANT: { |
+ Map* map = |
+ lookup_type_ == DESCRIPTOR_TYPE ? holder_->map() : transition_; |
+ Object* constant = GetConstantFromMap(map); |
+ DCHECK(constant != *value || |
value->FitsRepresentation(representation())); |
- return GetConstant() == *value; |
+ return constant == *value; |
+ } |
case CALLBACKS: |
case HANDLER: |
case INTERCEPTOR: |
@@ -262,10 +266,6 @@ class LookupResult V8_FINAL BASE_EMBEDDED { |
return IsDescriptorOrDictionary() && type() == CONSTANT; |
} |
- bool IsConstantFunction() const { |
- return IsConstant() && GetConstant()->IsJSFunction(); |
- } |
- |
bool IsDontDelete() const { return details_.IsDontDelete(); } |
bool IsDontEnum() const { return details_.IsDontEnum(); } |
bool IsFound() const { return lookup_type_ != NOT_FOUND; } |
@@ -281,76 +281,9 @@ class LookupResult V8_FINAL BASE_EMBEDDED { |
return IsFound() && !IsTransition(); |
} |
- bool IsDataProperty() const { |
- switch (lookup_type_) { |
- case NOT_FOUND: |
- case TRANSITION_TYPE: |
- case HANDLER_TYPE: |
- case INTERCEPTOR_TYPE: |
- return false; |
- |
- case DESCRIPTOR_TYPE: |
- case DICTIONARY_TYPE: |
- switch (type()) { |
- case FIELD: |
- case NORMAL: |
- case CONSTANT: |
- return true; |
- case CALLBACKS: { |
- Object* callback = GetCallbackObject(); |
- DCHECK(!callback->IsForeign()); |
- return callback->IsAccessorInfo(); |
- } |
- case HANDLER: |
- case INTERCEPTOR: |
- case NONEXISTENT: |
- UNREACHABLE(); |
- return false; |
- } |
- } |
- UNREACHABLE(); |
- return false; |
- } |
- |
bool IsCacheable() const { return cacheable_; } |
void DisallowCaching() { cacheable_ = false; } |
- Object* GetLazyValue() const { |
- switch (lookup_type_) { |
- case NOT_FOUND: |
- case TRANSITION_TYPE: |
- case HANDLER_TYPE: |
- case INTERCEPTOR_TYPE: |
- return isolate()->heap()->the_hole_value(); |
- |
- case DESCRIPTOR_TYPE: |
- case DICTIONARY_TYPE: |
- switch (type()) { |
- case FIELD: |
- return holder()->RawFastPropertyAt(GetFieldIndex()); |
- case NORMAL: { |
- Object* value = holder()->property_dictionary()->ValueAt( |
- GetDictionaryEntry()); |
- if (holder()->IsGlobalObject()) { |
- value = PropertyCell::cast(value)->value(); |
- } |
- return value; |
- } |
- case CONSTANT: |
- return GetConstant(); |
- case CALLBACKS: |
- return isolate()->heap()->the_hole_value(); |
- case HANDLER: |
- case INTERCEPTOR: |
- case NONEXISTENT: |
- UNREACHABLE(); |
- return NULL; |
- } |
- } |
- UNREACHABLE(); |
- return NULL; |
- } |
- |
Map* GetTransitionTarget() const { |
DCHECK(IsTransition()); |
return transition_; |
@@ -384,42 +317,11 @@ class LookupResult V8_FINAL BASE_EMBEDDED { |
return number_; |
} |
- JSFunction* GetConstantFunction() const { |
- DCHECK(type() == CONSTANT); |
- return JSFunction::cast(GetValue()); |
- } |
- |
Object* GetConstantFromMap(Map* map) const { |
DCHECK(type() == CONSTANT); |
return GetValueFromMap(map); |
} |
- JSFunction* GetConstantFunctionFromMap(Map* map) const { |
- return JSFunction::cast(GetConstantFromMap(map)); |
- } |
- |
- Object* GetConstant() const { |
- DCHECK(type() == CONSTANT); |
- return GetValue(); |
- } |
- |
- Object* GetCallbackObject() const { |
- DCHECK(!IsTransition()); |
- DCHECK(type() == CALLBACKS); |
- return GetValue(); |
- } |
- |
- Object* GetValue() const { |
- if (lookup_type_ == DESCRIPTOR_TYPE) { |
- return GetValueFromMap(holder()->map()); |
- } else if (lookup_type_ == TRANSITION_TYPE) { |
- return GetValueFromMap(transition_); |
- } |
- // In the dictionary case, the data is held in the value field. |
- DCHECK(lookup_type_ == DICTIONARY_TYPE); |
- return holder()->GetNormalizedProperty(this); |
- } |
- |
Object* GetValueFromMap(Map* map) const { |
DCHECK(lookup_type_ == DESCRIPTOR_TYPE || |
lookup_type_ == TRANSITION_TYPE); |