Index: src/hydrogen.cc |
diff --git a/src/hydrogen.cc b/src/hydrogen.cc |
index ceeca282056abb1f05c63498f7ea73be4c0439f3..c4afafa2d8500b2bffc377d946bddd32eef40bd0 100644 |
--- a/src/hydrogen.cc |
+++ b/src/hydrogen.cc |
@@ -6284,7 +6284,7 @@ void HGraphBuilder::VisitProperty(Property* expr) { |
} |
-void HGraphBuilder::AddCheckConstantFunction(Call* expr, |
+void HGraphBuilder::AddCheckConstantFunction(Handle<JSObject> holder, |
HValue* receiver, |
Handle<Map> receiver_map, |
bool smi_and_map_check) { |
@@ -6296,10 +6296,9 @@ void HGraphBuilder::AddCheckConstantFunction(Call* expr, |
AddInstruction(HCheckMaps::NewWithTransitions(receiver, receiver_map, |
zone())); |
} |
- if (!expr->holder().is_null()) { |
+ if (!holder.is_null()) { |
AddInstruction(new(zone()) HCheckPrototypeMaps( |
- Handle<JSObject>(JSObject::cast(receiver_map->prototype())), |
- expr->holder())); |
+ Handle<JSObject>(JSObject::cast(receiver_map->prototype())), holder)); |
} |
} |
@@ -6382,7 +6381,7 @@ void HGraphBuilder::HandlePolymorphicCallNamed(Call* expr, |
set_current_block(if_true); |
expr->ComputeTarget(map, name); |
- AddCheckConstantFunction(expr, receiver, map, false); |
+ AddCheckConstantFunction(expr->holder(), receiver, map, false); |
if (FLAG_trace_inlining && FLAG_polymorphic_inlining) { |
Handle<JSFunction> caller = info()->closure(); |
SmartArrayPointer<char> caller_name = |
@@ -6889,7 +6888,7 @@ bool HGraphBuilder::TryInlineBuiltinMethodCall(Call* expr, |
case kMathCos: |
case kMathTan: |
if (argument_count == 2 && check_type == RECEIVER_MAP_CHECK) { |
- AddCheckConstantFunction(expr, receiver, receiver_map, true); |
+ AddCheckConstantFunction(expr->holder(), receiver, receiver_map, true); |
HValue* argument = Pop(); |
HValue* context = environment()->LookupContext(); |
Drop(1); // Receiver. |
@@ -6902,7 +6901,7 @@ bool HGraphBuilder::TryInlineBuiltinMethodCall(Call* expr, |
break; |
case kMathPow: |
if (argument_count == 3 && check_type == RECEIVER_MAP_CHECK) { |
- AddCheckConstantFunction(expr, receiver, receiver_map, true); |
+ AddCheckConstantFunction(expr->holder(), receiver, receiver_map, true); |
HValue* right = Pop(); |
HValue* left = Pop(); |
Pop(); // Pop receiver. |
@@ -6944,7 +6943,7 @@ bool HGraphBuilder::TryInlineBuiltinMethodCall(Call* expr, |
break; |
case kMathRandom: |
if (argument_count == 1 && check_type == RECEIVER_MAP_CHECK) { |
- AddCheckConstantFunction(expr, receiver, receiver_map, true); |
+ AddCheckConstantFunction(expr->holder(), receiver, receiver_map, true); |
Drop(1); // Receiver. |
HValue* context = environment()->LookupContext(); |
HGlobalObject* global_object = new(zone()) HGlobalObject(context); |
@@ -6957,7 +6956,7 @@ bool HGraphBuilder::TryInlineBuiltinMethodCall(Call* expr, |
case kMathMax: |
case kMathMin: |
if (argument_count == 3 && check_type == RECEIVER_MAP_CHECK) { |
- AddCheckConstantFunction(expr, receiver, receiver_map, true); |
+ AddCheckConstantFunction(expr->holder(), receiver, receiver_map, true); |
HValue* right = Pop(); |
HValue* left = Pop(); |
Pop(); // Pop receiver. |
@@ -7073,7 +7072,7 @@ bool HGraphBuilder::TryCallApply(Call* expr) { |
VisitForValue(prop->obj()); |
if (HasStackOverflow() || current_block() == NULL) return true; |
HValue* function = Top(); |
- AddCheckConstantFunction(expr, function, function_map, true); |
+ AddCheckConstantFunction(expr->holder(), function, function_map, true); |
Drop(1); |
VisitForValue(args->at(0)); |
@@ -7192,7 +7191,7 @@ void HGraphBuilder::VisitCall(Call* expr) { |
call = PreProcessCall( |
new(zone()) HCallNamed(context, name, argument_count)); |
} else { |
- AddCheckConstantFunction(expr, receiver, receiver_map, true); |
+ AddCheckConstantFunction(expr->holder(), receiver, receiver_map, true); |
if (TryInlineCall(expr)) return; |
call = PreProcessCall( |