src/cpu/sparc/vm/templateTable_sparc.cpp

changeset 885
b22701a8b88f
parent 791
1ee8caae33af
child 1040
98cb887364d3
equal deleted inserted replaced
884:171e581e8161 885:b22701a8b88f
2083 if (is_static) { 2083 if (is_static) {
2084 __ clr(Otos_i); 2084 __ clr(Otos_i);
2085 } else { 2085 } else {
2086 if (has_tos) { 2086 if (has_tos) {
2087 // save object pointer before call_VM() clobbers it 2087 // save object pointer before call_VM() clobbers it
2088 __ mov(Otos_i, Lscratch); 2088 __ push_ptr(Otos_i); // put object on tos where GC wants it.
2089 } else { 2089 } else {
2090 // Load top of stack (do not pop the value off the stack); 2090 // Load top of stack (do not pop the value off the stack);
2091 __ ld_ptr(Lesp, Interpreter::expr_offset_in_bytes(0), Otos_i); 2091 __ ld_ptr(Lesp, Interpreter::expr_offset_in_bytes(0), Otos_i);
2092 } 2092 }
2093 __ verify_oop(Otos_i); 2093 __ verify_oop(Otos_i);
2095 // Otos_i: object pointer or NULL if static 2095 // Otos_i: object pointer or NULL if static
2096 // Rcache: cache entry pointer 2096 // Rcache: cache entry pointer
2097 __ call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::post_field_access), 2097 __ call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::post_field_access),
2098 Otos_i, Rcache); 2098 Otos_i, Rcache);
2099 if (!is_static && has_tos) { 2099 if (!is_static && has_tos) {
2100 __ mov(Lscratch, Otos_i); // restore object pointer 2100 __ pop_ptr(Otos_i); // restore object pointer
2101 __ verify_oop(Otos_i); 2101 __ verify_oop(Otos_i);
2102 } 2102 }
2103 __ get_cache_and_index_at_bcp(Rcache, index, 1); 2103 __ get_cache_and_index_at_bcp(Rcache, index, 1);
2104 __ bind(Label1); 2104 __ bind(Label1);
2105 } 2105 }

mercurial