From 6eeb141a37fc0832672219dcaedf8a7f1ceb4c4c Mon Sep 17 00:00:00 2001 From: "dcarney@chromium.org" Date: Wed, 23 Oct 2013 08:46:46 +0000 Subject: [PATCH] force accessor pair accesses backed by simple api calls to be generic accesses when crankshafted R=mstarzinger@chromium.org BUG= Review URL: https://codereview.chromium.org/34773003 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17332 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/hydrogen.cc | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/hydrogen.cc b/src/hydrogen.cc index 9d990bf..da49992 100644 --- a/src/hydrogen.cc +++ b/src/hydrogen.cc @@ -4233,7 +4233,11 @@ static bool LookupSetter(Handle map, Handle accessors; if (LookupAccessorPair(map, name, &accessors, holder) && accessors->setter()->IsJSFunction()) { - *setter = Handle(JSFunction::cast(accessors->setter())); + Handle func(JSFunction::cast(accessors->setter())); + CallOptimization call_optimization(func); + // TODO(dcarney): temporary hack unless crankshaft can handle api calls. + if (call_optimization.is_simple_api_call()) return false; + *setter = func; return true; } return false; @@ -4746,7 +4750,11 @@ bool HOptimizedGraphBuilder::PropertyAccessInfo::LoadResult(Handle map) { if (!callback->IsAccessorPair()) return false; Object* getter = Handle::cast(callback)->getter(); if (!getter->IsJSFunction()) return false; - accessor_ = handle(JSFunction::cast(getter)); + Handle accessor = handle(JSFunction::cast(getter)); + CallOptimization call_optimization(accessor); + // TODO(dcarney): temporary hack unless crankshaft can handle api calls. + if (call_optimization.is_simple_api_call()) return false; + accessor_ = accessor; } else if (lookup_.IsConstant()) { constant_ = handle(lookup_.GetConstantFromMap(*map), isolate()); } -- 2.7.4