2331 __ bind(not_taken);
2332 __ profile_not_taken_branch(rax);
2333 }
2334
2335 void TemplateTable::if_nullcmp(Condition cc) {
2336 transition(atos, vtos);
2337 // assume branch is more often taken than not (loops use backward branches)
2338 Label not_taken;
2339 __ testptr(rax, rax);
2340 __ jcc(j_not(cc), not_taken);
2341 branch(false, false);
2342 __ bind(not_taken);
2343 __ profile_not_taken_branch(rax);
2344 }
2345
2346 void TemplateTable::if_acmp(Condition cc) {
2347 transition(atos, vtos);
2348 // assume branch is more often taken than not (loops use backward branches)
2349 Label not_taken;
2350 __ pop_ptr(rdx);
2351 __ cmpptr(rdx, rax);
2352 oopDesc::bs()->asm_acmp_barrier(_masm, rdx, rax);
2353 __ jcc(j_not(cc), not_taken);
2354 branch(false, false);
2355 __ bind(not_taken);
2356 __ profile_not_taken_branch(rax);
2357 }
2358
2359 void TemplateTable::ret() {
2360 transition(vtos, vtos);
2361 locals_index(rbx);
2362 LP64_ONLY(__ movslq(rbx, iaddress(rbx))); // get return bci, compute return bcp
2363 NOT_LP64(__ movptr(rbx, iaddress(rbx)));
2364 __ profile_ret(rbx, rcx);
2365 __ get_method(rax);
2366 __ movptr(rbcp, Address(rax, Method::const_offset()));
2367 __ lea(rbcp, Address(rbcp, rbx, Address::times_1,
2368 ConstMethod::codes_offset()));
2369 __ dispatch_next(vtos);
2370 }
2371
2372 void TemplateTable::wide_ret() {
|
2331 __ bind(not_taken);
2332 __ profile_not_taken_branch(rax);
2333 }
2334
2335 void TemplateTable::if_nullcmp(Condition cc) {
2336 transition(atos, vtos);
2337 // assume branch is more often taken than not (loops use backward branches)
2338 Label not_taken;
2339 __ testptr(rax, rax);
2340 __ jcc(j_not(cc), not_taken);
2341 branch(false, false);
2342 __ bind(not_taken);
2343 __ profile_not_taken_branch(rax);
2344 }
2345
2346 void TemplateTable::if_acmp(Condition cc) {
2347 transition(atos, vtos);
2348 // assume branch is more often taken than not (loops use backward branches)
2349 Label not_taken;
2350 __ pop_ptr(rdx);
2351 __ cmpoopptr(rdx, rax);
2352 __ jcc(j_not(cc), not_taken);
2353 branch(false, false);
2354 __ bind(not_taken);
2355 __ profile_not_taken_branch(rax);
2356 }
2357
2358 void TemplateTable::ret() {
2359 transition(vtos, vtos);
2360 locals_index(rbx);
2361 LP64_ONLY(__ movslq(rbx, iaddress(rbx))); // get return bci, compute return bcp
2362 NOT_LP64(__ movptr(rbx, iaddress(rbx)));
2363 __ profile_ret(rbx, rcx);
2364 __ get_method(rax);
2365 __ movptr(rbcp, Address(rax, Method::const_offset()));
2366 __ lea(rbcp, Address(rbcp, rbx, Address::times_1,
2367 ConstMethod::codes_offset()));
2368 __ dispatch_next(vtos);
2369 }
2370
2371 void TemplateTable::wide_ret() {
|