< prev index next >

src/cpu/x86/vm/templateTable_x86.cpp

Print this page
rev 13993 : [mq]: refactor-acmp.patch


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() {


< prev index next >