| Index: src/codegen-ia32.cc
|
| ===================================================================
|
| --- src/codegen-ia32.cc (revision 1034)
|
| +++ src/codegen-ia32.cc (working copy)
|
| @@ -2288,6 +2288,8 @@
|
|
|
| // Remove the exception from the stack.
|
| frame_->Drop();
|
| + // Dropping a reference can leave the stack in an unspilled state.
|
| + frame_->SpillAll();
|
|
|
| VisitStatementsAndSpill(node->catch_block()->statements());
|
| if (has_valid_frame()) {
|
| @@ -3076,7 +3078,7 @@
|
| var->mode() == Variable::CONST &&
|
| node->op() != Token::INIT_VAR && node->op() != Token::INIT_CONST) {
|
| // Assignment ignored - leave the value on the stack.
|
| - } else {
|
| + } else {
|
| CodeForSourcePosition(node->position());
|
| if (node->op() == Token::INIT_CONST) {
|
| // Dynamic constant initializations must use the function context
|
| @@ -3227,6 +3229,9 @@
|
| // Call the function.
|
| CallWithArguments(args, node->position());
|
| }
|
| + // Needed because of the Reference destructor in the else case.
|
| + // Does nothing in the then case.
|
| + frame_->SpillAll();
|
|
|
| } else {
|
| // ----------------------------------
|
|
|