Mercurial > hg > truffle
changeset 5925:4fabc16dc5bf
6910464: Lookupswitch and Tableswitch default branches not recognized as safepoints
Summary: C1 does not recognize the default branch of a lookupswitch or tableswitch bytecode to be a safepoint if backward.
Reviewed-by: kvn, never
author | roland |
---|---|
date | Fri, 02 Mar 2012 16:04:24 +0100 |
parents | 031df0387c09 |
children | e5f73be4c7f1 |
files | src/share/vm/c1/c1_GraphBuilder.cpp |
diffstat | 1 files changed, 2 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/share/vm/c1/c1_GraphBuilder.cpp Thu Mar 01 15:31:33 2012 -0800 +++ b/src/share/vm/c1/c1_GraphBuilder.cpp Fri Mar 02 16:04:24 2012 +0100 @@ -1306,6 +1306,7 @@ if (sw.dest_offset_at(i) < 0) has_bb = true; } // add default successor + if (sw.default_offset() < 0) has_bb = true; sux->at_put(i, block_at(bci() + sw.default_offset())); ValueStack* state_before = has_bb ? copy_state_before() : NULL; Instruction* res = append(new TableSwitch(ipop(), sux, sw.low_key(), state_before, has_bb)); @@ -1350,6 +1351,7 @@ keys->at_put(i, pair.match()); } // add default successor + if (sw.default_offset() < 0) has_bb = true; sux->at_put(i, block_at(bci() + sw.default_offset())); ValueStack* state_before = has_bb ? copy_state_before() : NULL; Instruction* res = append(new LookupSwitch(ipop(), sux, keys, state_before, has_bb));