Index: src/runtime.cc |
diff --git a/src/runtime.cc b/src/runtime.cc |
index fe5d15f6be3ed5140c607d2f450d70426dd98c2e..5e9d9d80097516ca6387bbc0449e24678324ed1f 100644 |
--- a/src/runtime.cc |
+++ b/src/runtime.cc |
@@ -5216,23 +5216,23 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_GetDataProperty) { |
CONVERT_ARG_HANDLE_CHECKED(Name, key, 1); |
LookupResult lookup(isolate); |
object->LookupRealNamedProperty(*key, &lookup); |
- if (!lookup.IsFound()) return isolate->heap()->undefined_value(); |
- switch (lookup.type()) { |
- case NORMAL: |
- return lookup.holder()->GetNormalizedProperty(&lookup); |
- case FIELD: |
- return lookup.holder()->FastPropertyAt( |
- lookup.representation(), |
- lookup.GetFieldIndex().field_index()); |
- case CONSTANT: |
- return lookup.GetConstant(); |
- case CALLBACKS: |
- case HANDLER: |
- case INTERCEPTOR: |
- case TRANSITION: |
- return isolate->heap()->undefined_value(); |
- case NONEXISTENT: |
- UNREACHABLE(); |
+ if (lookup.IsFound() && !lookup.IsTransition()) { |
+ switch (lookup.type()) { |
+ case NORMAL: |
+ return lookup.holder()->GetNormalizedProperty(&lookup); |
+ case FIELD: |
+ return lookup.holder()->FastPropertyAt( |
+ lookup.representation(), |
+ lookup.GetFieldIndex().field_index()); |
+ case CONSTANT: |
+ return lookup.GetConstant(); |
+ case CALLBACKS: |
+ case HANDLER: |
+ case INTERCEPTOR: |
+ break; |
+ case NONEXISTENT: |
+ UNREACHABLE(); |
+ } |
} |
return isolate->heap()->undefined_value(); |
} |
@@ -10780,6 +10780,7 @@ static MaybeObject* DebugLookupResultValue(Heap* heap, |
LookupResult* result, |
bool* caught_exception) { |
Object* value; |
+ if (result->IsTransition()) return heap->undefined_value(); |
switch (result->type()) { |
case NORMAL: |
value = result->holder()->GetNormalizedProperty(result); |
@@ -10823,7 +10824,6 @@ static MaybeObject* DebugLookupResultValue(Heap* heap, |
} |
} |
case INTERCEPTOR: |
- case TRANSITION: |
return heap->undefined_value(); |
case HANDLER: |
case NONEXISTENT: |