Skip back edge creation for "do ... while(false)" loops
Drive-by fix: Fix disassembling "prefetch" instruction on ia32 R=titzer@chromium.org Review URL: https://codereview.chromium.org/131733002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18519 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
380aa6dc8d
commit
839297487f
@ -4336,12 +4336,17 @@ void HOptimizedGraphBuilder::VisitDoWhileStatement(DoWhileStatement* stmt) {
|
||||
HBasicBlock* loop_successor = NULL;
|
||||
if (body_exit != NULL && !stmt->cond()->ToBooleanIsTrue()) {
|
||||
set_current_block(body_exit);
|
||||
loop_successor = graph()->CreateBasicBlock();
|
||||
if (stmt->cond()->ToBooleanIsFalse()) {
|
||||
Goto(loop_successor);
|
||||
body_exit = NULL;
|
||||
} else {
|
||||
// The block for a true condition, the actual predecessor block of the
|
||||
// back edge.
|
||||
body_exit = graph()->CreateBasicBlock();
|
||||
loop_successor = graph()->CreateBasicBlock();
|
||||
CHECK_BAILOUT(VisitForControl(stmt->cond(), body_exit, loop_successor));
|
||||
if (body_exit->HasPredecessor()) {
|
||||
}
|
||||
if (body_exit != NULL && body_exit->HasPredecessor()) {
|
||||
body_exit->SetJoinId(stmt->BackEdgeId());
|
||||
} else {
|
||||
body_exit = NULL;
|
||||
|
@ -1007,6 +1007,7 @@ int DisassemblerIA32::InstructionDecode(v8::internal::Vector<char> out_buffer,
|
||||
{ byte f0byte = data[1];
|
||||
const char* f0mnem = F0Mnem(f0byte);
|
||||
if (f0byte == 0x18) {
|
||||
data += 2;
|
||||
int mod, regop, rm;
|
||||
get_modrm(*data, &mod, ®op, &rm);
|
||||
const char* suffix[] = {"nta", "1", "2", "3"};
|
||||
|
Loading…
Reference in New Issue
Block a user