comparison src/cpu/sparc/vm/templateTable_sparc.cpp @ 10458:63e44cdabb91

fixed SPARC interpreter
author twisti
date Thu, 20 Jun 2013 10:56:34 -0700
parents 9500809ceead
children 6b0fd0964b87
comparison
equal deleted inserted replaced
10457:fb95519008d6 10458:63e44cdabb91
2981 Register Rcall = Rindex; 2981 Register Rcall = Rindex;
2982 assert_different_registers(Rcall, G5_method, Gargs, Rret); 2982 assert_different_registers(Rcall, G5_method, Gargs, Rret);
2983 2983
2984 // get target Method* & entry point 2984 // get target Method* & entry point
2985 __ lookup_virtual_method(Rrecv, Rindex, G5_method); 2985 __ lookup_virtual_method(Rrecv, Rindex, G5_method);
2986 #ifdef GRAAL
2987 __ profile_called_method(G5_method, Rtemp);
2988 #endif
2986 __ call_from_interpreter(Rcall, Gargs, Rret); 2989 __ call_from_interpreter(Rcall, Gargs, Rret);
2987 } 2990 }
2988 2991
2989 void TemplateTable::invokevirtual(int byte_no) { 2992 void TemplateTable::invokevirtual(int byte_no) {
2990 transition(vtos, vtos); 2993 transition(vtos, vtos);
3229 __ bind(ok); 3232 __ bind(ok);
3230 } 3233 }
3231 3234
3232 Register Rcall = Rinterface; 3235 Register Rcall = Rinterface;
3233 assert_different_registers(Rcall, G5_method, Gargs, Rret); 3236 assert_different_registers(Rcall, G5_method, Gargs, Rret);
3237
3238 #ifdef GRAAL
3239 __ profile_called_method(G5_method, Rscratch);
3240 #endif
3234 3241
3235 __ call_from_interpreter(Rcall, Gargs, Rret); 3242 __ call_from_interpreter(Rcall, Gargs, Rret);
3236 } 3243 }
3237 3244
3238 void TemplateTable::invokehandle(int byte_no) { 3245 void TemplateTable::invokehandle(int byte_no) {
3522 Register Roffset = G1_scratch; 3529 Register Roffset = G1_scratch;
3523 Register RobjKlass = O5; 3530 Register RobjKlass = O5;
3524 Register RspecifiedKlass = O4; 3531 Register RspecifiedKlass = O4;
3525 3532
3526 // Check for casting a NULL 3533 // Check for casting a NULL
3527 __ br_null_short(Otos_i, Assembler::pn, is_null); 3534 __ br_null(Otos_i, false, Assembler::pn, is_null);
3535 __ delayed()->nop();
3528 3536
3529 // Get value klass in RobjKlass 3537 // Get value klass in RobjKlass
3530 __ load_klass(Otos_i, RobjKlass); // get value klass 3538 __ load_klass(Otos_i, RobjKlass); // get value klass
3531 3539
3532 // Get constant pool tag 3540 // Get constant pool tag
3578 Register Roffset = G1_scratch; 3586 Register Roffset = G1_scratch;
3579 Register RobjKlass = O5; 3587 Register RobjKlass = O5;
3580 Register RspecifiedKlass = O4; 3588 Register RspecifiedKlass = O4;
3581 3589
3582 // Check for casting a NULL 3590 // Check for casting a NULL
3583 __ br_null_short(Otos_i, Assembler::pt, is_null); 3591 __ br_null(Otos_i, false, Assembler::pt, is_null);
3592 __ delayed()->nop();
3584 3593
3585 // Get value klass in RobjKlass 3594 // Get value klass in RobjKlass
3586 __ load_klass(Otos_i, RobjKlass); // get value klass 3595 __ load_klass(Otos_i, RobjKlass); // get value klass
3587 3596
3588 // Get constant pool tag 3597 // Get constant pool tag