Chromium Code Reviews| Index: src/arm/codegen-arm.cc |
| =================================================================== |
| --- src/arm/codegen-arm.cc (revision 2383) |
| +++ src/arm/codegen-arm.cc (working copy) |
| @@ -2424,13 +2424,23 @@ |
| JumpTarget exit; |
| LoadConditionAndSpill(node->condition(), NOT_INSIDE_TYPEOF, |
| &then, &else_, true); |
| - Branch(false, &else_); |
| - then.Bind(); |
| - LoadAndSpill(node->then_expression(), typeof_state()); |
| - exit.Jump(); |
| - else_.Bind(); |
| - LoadAndSpill(node->else_expression(), typeof_state()); |
| - exit.Bind(); |
| + if (frame_ != NULL) { |
| + Branch(false, &else_); |
| + } |
| + if (frame_ != NULL || then.is_linked()) { |
| + then.Bind(); |
| + LoadAndSpill(node->then_expression(), typeof_state()); |
| + } |
| + if (frame_ != NULL) { |
|
Kevin Millikin (Chromium)
2009/07/09 01:20:31
You only need to jump around the else part if you
Mads Ager (chromium)
2009/07/09 04:11:08
Done. I left the binding of the else_ JumpTarget
|
| + exit.Jump(); |
| + } |
| + if (else_.is_linked()) { |
| + else_.Bind(); |
| + LoadAndSpill(node->else_expression(), typeof_state()); |
| + } |
| + if (exit.is_linked()) { |
| + exit.Bind(); |
| + } |
| ASSERT(frame_->height() == original_height + 1); |
| } |