Chromium Code Reviews| Index: src/hydrogen.cc | 
| diff --git a/src/hydrogen.cc b/src/hydrogen.cc | 
| index f61485040a9a5e5f27dd07da33958cf9f1112f24..697956b56b35925539debeb6430809364340e7be 100644 | 
| --- a/src/hydrogen.cc | 
| +++ b/src/hydrogen.cc | 
| @@ -6352,7 +6352,12 @@ void HGraphBuilder::VisitProperty(Property* expr) { | 
| Handle<AccessorPair> accessors; | 
| Handle<JSObject> holder; | 
| if (LookupAccessorPair(map, name, &accessors, &holder)) { | 
| - instr = BuildCallGetter(Pop(), map, accessors, holder); | 
| + AddCheckConstantFunction(holder, Top(), map, true); | 
| + Handle<JSFunction> getter(JSFunction::cast(accessors->getter())); | 
| + if (FLAG_inline_accessors && | 
| + TryInlineGetter(getter, expr->id(), expr->ReturnId())) return; | 
| + AddInstruction(new(zone()) HPushArgument(Pop())); | 
| + instr = new(zone()) HCallConstantFunction(getter, 1); | 
| } else { | 
| instr = BuildLoadNamedMonomorphic(Pop(), name, expr, map); | 
| } | 
| @@ -6920,6 +6925,19 @@ bool HGraphBuilder::TryInlineConstruct(CallNew* expr, HValue* receiver) { | 
| } | 
| +bool HGraphBuilder::TryInlineGetter(Handle<JSFunction> getter, | 
| 
 
Michael Starzinger
2012/07/30 09:38:43
It might be better to pass the "Property* expr" as
 
Sven Panne
2012/07/30 10:41:55
Done.
 
 | 
| + int ast_id, | 
| + int return_id) { | 
| + return TryInline(CALL_AS_METHOD, | 
| + getter, | 
| + 0, | 
| + NULL, | 
| + ast_id, | 
| + return_id, | 
| + NORMAL_RETURN); | 
| +} | 
| + | 
| + | 
| bool HGraphBuilder::TryInlineBuiltinFunctionCall(Call* expr, bool drop_extra) { | 
| if (!expr->target()->shared()->HasBuiltinFunctionId()) return false; | 
| BuiltinFunctionId id = expr->target()->shared()->builtin_function_id(); |