Index: src/compiler/ast-graph-builder.cc |
diff --git a/src/compiler/ast-graph-builder.cc b/src/compiler/ast-graph-builder.cc |
index 63696e45cd2e7f2dbe932a2ac415e1c76e30053e..de01e24ab8fd226c59fe0538d72e2a3fd0313eab 100644 |
--- a/src/compiler/ast-graph-builder.cc |
+++ b/src/compiler/ast-graph-builder.cc |
@@ -1307,9 +1307,10 @@ void AstGraphBuilder::VisitTryFinallyStatement(TryFinallyStatement* stmt) { |
// The result value, dispatch token and message is expected on the operand |
// stack (this is in sync with FullCodeGenerator::EnterFinallyBlock). |
+ Node* message = BuildLoadExternal(message_object, kMachAnyTagged); |
environment()->Push(token); // TODO(mstarzinger): Cook token! |
environment()->Push(result); |
- environment()->Push(BuildLoadExternal(message_object, kMachAnyTagged)); |
+ environment()->Push(message); |
// Evaluate the finally-block. |
Visit(stmt->finally_block()); |
@@ -1317,9 +1318,10 @@ void AstGraphBuilder::VisitTryFinallyStatement(TryFinallyStatement* stmt) { |
// The result value, dispatch token and message is restored from the operand |
// stack (this is in sync with FullCodeGenerator::ExitFinallyBlock). |
- BuildStoreExternal(message_object, kMachAnyTagged, environment()->Pop()); |
+ message = environment()->Pop(); |
result = environment()->Pop(); |
token = environment()->Pop(); // TODO(mstarzinger): Uncook token! |
+ BuildStoreExternal(message_object, kMachAnyTagged, message); |
// Dynamic dispatch after the finally-block. |
commands->ApplyDeferredCommands(token, result); |
@@ -1650,8 +1652,9 @@ void AstGraphBuilder::VisitObjectLiteral(ObjectLiteral* expr) { |
environment()->Push(literal); // Duplicate receiver. |
VisitForValue(property->key()); |
- environment()->Push(BuildToName(environment()->Pop(), |
- expr->GetIdForProperty(property_index))); |
+ Node* name = BuildToName(environment()->Pop(), |
+ expr->GetIdForProperty(property_index)); |
+ environment()->Push(name); |
// TODO(mstarzinger): For ObjectLiteral::Property::PROTOTYPE the key should |
// not be on the operand stack while the value is being evaluated. Come up |
// with a repro for this and fix it. Also find a nice way to do so. :) |
@@ -2475,7 +2478,8 @@ Node* AstGraphBuilder::BuildPatchReceiverToGlobalProxy(Node* receiver) { |
Node* check = NewNode(javascript()->StrictEqual(), receiver, undefined); |
receiver_check.If(check); |
receiver_check.Then(); |
- environment()->Push(BuildLoadGlobalProxy()); |
+ Node* proxy = BuildLoadGlobalProxy(); |
+ environment()->Push(proxy); |
receiver_check.Else(); |
environment()->Push(receiver); |
receiver_check.End(); |
@@ -2574,7 +2578,8 @@ Node* AstGraphBuilder::BuildHoleCheckThrow(Node* value, Variable* variable, |
Node* check = NewNode(javascript()->StrictEqual(), value, the_hole); |
hole_check.If(check); |
hole_check.Then(); |
- environment()->Push(BuildThrowReferenceError(variable, bailout_id)); |
+ Node* error = BuildThrowReferenceError(variable, bailout_id); |
+ environment()->Push(error); |
hole_check.Else(); |
environment()->Push(not_hole); |
hole_check.End(); |