Index: src/crankshaft/hydrogen.cc |
diff --git a/src/crankshaft/hydrogen.cc b/src/crankshaft/hydrogen.cc |
index d97461b1a9582d103736bd6902b6d6f9d82d7c0b..93cbcfe37e3b6e40da0a1093b6c554202e9c458c 100644 |
--- a/src/crankshaft/hydrogen.cc |
+++ b/src/crankshaft/hydrogen.cc |
@@ -5340,6 +5340,7 @@ void HOptimizedGraphBuilder::VisitVariableProxy(VariableProxy* expr) { |
} |
LookupIterator it(global, variable->name(), LookupIterator::OWN); |
+ it.TryLookupCachedProperty(); |
if (CanInlineGlobalPropertyAccess(variable, &it, LOAD)) { |
InlineGlobalPropertyLoad(&it, expr->id()); |
return; |
@@ -6151,6 +6152,17 @@ HValue* HOptimizedGraphBuilder::BuildMonomorphicAccess( |
} |
if (info->IsAccessorConstant()) { |
+ MaybeHandle<Name> maybe_name = |
+ FunctionTemplateInfo::TryGetCachedPropertyName(isolate(), |
+ info->accessor()); |
+ if (!maybe_name.is_null()) { |
+ Handle<Name> name = maybe_name.ToHandleChecked(); |
+ PropertyAccessInfo cache_info(this, LOAD, info->map(), name); |
+ // Load new target. |
+ if (cache_info.CanAccessMonomorphic()) |
Toon Verwaest
2016/11/04 10:19:52
Use {} if multi-line
vogelheim
2016/11/04 12:34:42
Done.
|
+ return BuildLoadNamedField(&cache_info, checked_object); |
+ } |
+ |
Push(checked_object); |
int argument_count = 1; |
if (!info->IsLoad()) { |