Fix crash in arm conditional expression code generation.

Review URL: http://codereview.chromium.org/155234

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2399 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
ager@chromium.org 2009-07-08 19:43:22 +00:00
parent 8f73ae0325
commit 0be6a72cc1

View File

@ -2424,13 +2424,23 @@ void CodeGenerator::VisitConditional(Conditional* node) {
JumpTarget exit; JumpTarget exit;
LoadConditionAndSpill(node->condition(), NOT_INSIDE_TYPEOF, LoadConditionAndSpill(node->condition(), NOT_INSIDE_TYPEOF,
&then, &else_, true); &then, &else_, true);
Branch(false, &else_); if (frame_ != NULL) {
then.Bind(); Branch(false, &else_);
LoadAndSpill(node->then_expression(), typeof_state()); }
exit.Jump(); if (frame_ != NULL || then.is_linked()) {
else_.Bind(); then.Bind();
LoadAndSpill(node->else_expression(), typeof_state()); LoadAndSpill(node->then_expression(), typeof_state());
exit.Bind(); }
if (frame_ != NULL) {
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); ASSERT(frame_->height() == original_height + 1);
} }