Index: src/hydrogen.cc |
diff --git a/src/hydrogen.cc b/src/hydrogen.cc |
index 80eff3b552f86cfdaeb9eec6ee3e44320a135b81..24c2ab40b64445905df381b9213a3e8695b97b36 100644 |
--- a/src/hydrogen.cc |
+++ b/src/hydrogen.cc |
@@ -5488,16 +5488,11 @@ bool HOptimizedGraphBuilder::PropertyAccessInfo::LoadResult(Handle<Map> map) { |
Handle<JSFunction> accessor = handle(JSFunction::cast(raw_accessor)); |
if (accessor->shared()->IsApiFunction()) { |
CallOptimization call_optimization(accessor); |
- if (!call_optimization.is_simple_api_call()) return false; |
- CallOptimization::HolderLookup holder_lookup; |
- api_holder_ = call_optimization.LookupHolderOfExpectedType( |
- map, &holder_lookup); |
- switch (holder_lookup) { |
- case CallOptimization::kHolderNotFound: |
- return false; |
- case CallOptimization::kHolderIsReceiver: |
- case CallOptimization::kHolderFound: |
- break; |
+ if (call_optimization.is_simple_api_call()) { |
+ CallOptimization::HolderLookup holder_lookup; |
+ Handle<Map> receiver_map = this->map(); |
+ api_holder_ = call_optimization.LookupHolderOfExpectedType( |
+ receiver_map, &holder_lookup); |
} |
} |
accessor_ = accessor; |
@@ -7071,6 +7066,11 @@ int HOptimizedGraphBuilder::InliningAstSize(Handle<JSFunction> target) { |
return target_shared->inline_builtin() ? 0 : kNotInlinable; |
} |
+ if (target_shared->IsApiFunction()) { |
+ TraceInline(target, caller, "target is api function"); |
+ return kNotInlinable; |
+ } |
+ |
// Do a quick check on source code length to avoid parsing large |
// inlining candidates. |
if (target_shared->SourceSize() > |