| Index: src/hydrogen.cc
|
| ===================================================================
|
| --- src/hydrogen.cc (revision 10143)
|
| +++ src/hydrogen.cc (working copy)
|
| @@ -2756,10 +2756,13 @@
|
| }
|
|
|
| // 2. Build all the tests, with dangling true branches
|
| + int default_id = AstNode::kNoNumber;
|
| for (int i = 0; i < clause_count; ++i) {
|
| CaseClause* clause = clauses->at(i);
|
| - if (clause->is_default()) continue;
|
| -
|
| + if (clause->is_default()) {
|
| + default_id = clause->EntryId();
|
| + continue;
|
| + }
|
| if (switch_type == SMI_SWITCH) {
|
| clause->RecordTypeFeedback(oracle());
|
| }
|
| @@ -2806,7 +2809,10 @@
|
| HBasicBlock* last_block = current_block();
|
|
|
| if (not_string_block != NULL) {
|
| - last_block = CreateJoin(last_block, not_string_block, stmt->ExitId());
|
| + int join_id = (default_id != AstNode::kNoNumber)
|
| + ? default_id
|
| + : stmt->ExitId();
|
| + last_block = CreateJoin(last_block, not_string_block, join_id);
|
| }
|
|
|
| // 3. Loop over the clauses and the linked list of tests in lockstep,
|
|
|