2265 int taken = ((ciJumpData*)data)->taken(); 2266 taken = method()->scale_count(taken); 2267 target_block->set_count(taken); 2268 break; 2269 } 2270 2271 case Bytecodes::_ifnull: btest = BoolTest::eq; goto handle_if_null; 2272 case Bytecodes::_ifnonnull: btest = BoolTest::ne; goto handle_if_null; 2273 handle_if_null: 2274 // If this is a backwards branch in the bytecodes, add Safepoint 2275 maybe_add_safepoint(iter().get_dest()); 2276 a = null(); 2277 b = pop(); 2278 if (!_gvn.type(b)->speculative_maybe_null() && 2279 !too_many_traps(Deoptimization::Reason_speculate_null_check)) { 2280 inc_sp(1); 2281 Node* null_ctl = top(); 2282 b = null_check_oop(b, &null_ctl, true, true, true); 2283 assert(null_ctl->is_top(), "no null control here"); 2284 dec_sp(1); 2285 } 2286 c = _gvn.transform( new CmpPNode(b, a) ); 2287 do_ifnull(btest, c); 2288 break; 2289 2290 case Bytecodes::_if_acmpeq: btest = BoolTest::eq; goto handle_if_acmp; 2291 case Bytecodes::_if_acmpne: btest = BoolTest::ne; goto handle_if_acmp; 2292 handle_if_acmp: 2293 // If this is a backwards branch in the bytecodes, add Safepoint 2294 maybe_add_safepoint(iter().get_dest()); 2295 a = pop(); 2296 b = pop(); 2297 c = _gvn.transform( new CmpPNode(b, a) ); 2298 c = optimize_cmp_with_klass(c); 2299 do_if(btest, c); 2300 break; 2301 2302 case Bytecodes::_ifeq: btest = BoolTest::eq; goto handle_ifxx; 2303 case Bytecodes::_ifne: btest = BoolTest::ne; goto handle_ifxx; 2304 case Bytecodes::_iflt: btest = BoolTest::lt; goto handle_ifxx; | 2265 int taken = ((ciJumpData*)data)->taken(); 2266 taken = method()->scale_count(taken); 2267 target_block->set_count(taken); 2268 break; 2269 } 2270 2271 case Bytecodes::_ifnull: btest = BoolTest::eq; goto handle_if_null; 2272 case Bytecodes::_ifnonnull: btest = BoolTest::ne; goto handle_if_null; 2273 handle_if_null: 2274 // If this is a backwards branch in the bytecodes, add Safepoint 2275 maybe_add_safepoint(iter().get_dest()); 2276 a = null(); 2277 b = pop(); 2278 if (!_gvn.type(b)->speculative_maybe_null() && 2279 !too_many_traps(Deoptimization::Reason_speculate_null_check)) { 2280 inc_sp(1); 2281 Node* null_ctl = top(); 2282 b = null_check_oop(b, &null_ctl, true, true, true); 2283 assert(null_ctl->is_top(), "no null control here"); 2284 dec_sp(1); 2285 } else if (_gvn.type(b)->speculative_always_null() && 2286 !too_many_traps(Deoptimization::Reason_speculate_null_assert)) { 2287 inc_sp(1); 2288 b = null_assert(b); 2289 dec_sp(1); 2290 } 2291 c = _gvn.transform( new CmpPNode(b, a) ); 2292 do_ifnull(btest, c); 2293 break; 2294 2295 case Bytecodes::_if_acmpeq: btest = BoolTest::eq; goto handle_if_acmp; 2296 case Bytecodes::_if_acmpne: btest = BoolTest::ne; goto handle_if_acmp; 2297 handle_if_acmp: 2298 // If this is a backwards branch in the bytecodes, add Safepoint 2299 maybe_add_safepoint(iter().get_dest()); 2300 a = pop(); 2301 b = pop(); 2302 c = _gvn.transform( new CmpPNode(b, a) ); 2303 c = optimize_cmp_with_klass(c); 2304 do_if(btest, c); 2305 break; 2306 2307 case Bytecodes::_ifeq: btest = BoolTest::eq; goto handle_ifxx; 2308 case Bytecodes::_ifne: btest = BoolTest::ne; goto handle_ifxx; 2309 case Bytecodes::_iflt: btest = BoolTest::lt; goto handle_ifxx; |