Mercurial > hg > graal-jvmci-8
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 |