comparison src/cpu/sparc/vm/templateTable_sparc.cpp @ 5604:bd3237e0e18d

8026328: Setting a breakpoint on invokedynamic crashes the JVM Reviewed-by: jrose, roland
author twisti
date Thu, 24 Oct 2013 16:23:07 -0700
parents 46c544b8fbfc
children
comparison
equal deleted inserted replaced
53:8eb7f0c28336 54:7e8d069c8a4b
2930 __ srl(flags, ConstantPoolCacheEntry::tos_state_shift, ra); 2930 __ srl(flags, ConstantPoolCacheEntry::tos_state_shift, ra);
2931 // Make sure we don't need to mask flags after the above shift 2931 // Make sure we don't need to mask flags after the above shift
2932 ConstantPoolCacheEntry::verify_tos_state_shift(); 2932 ConstantPoolCacheEntry::verify_tos_state_shift();
2933 // load return address 2933 // load return address
2934 { 2934 {
2935 const address table_addr = (is_invokeinterface || is_invokedynamic) ? 2935 const address table_addr = (address) Interpreter::invoke_return_entry_table_for(code);
2936 (address)Interpreter::return_5_addrs_by_index_table() :
2937 (address)Interpreter::return_3_addrs_by_index_table();
2938 AddressLiteral table(table_addr); 2936 AddressLiteral table(table_addr);
2939 __ set(table, temp); 2937 __ set(table, temp);
2940 __ sll(ra, LogBytesPerWord, ra); 2938 __ sll(ra, LogBytesPerWord, ra);
2941 __ ld_ptr(Address(temp, ra), ra); 2939 __ ld_ptr(Address(temp, ra), ra);
2942 } 2940 }
2982 __ load_receiver(G4_scratch, O0_recv); // gets receiverOop 2980 __ load_receiver(G4_scratch, O0_recv); // gets receiverOop
2983 // receiver is in O0_recv 2981 // receiver is in O0_recv
2984 __ verify_oop(O0_recv); 2982 __ verify_oop(O0_recv);
2985 2983
2986 // get return address 2984 // get return address
2987 AddressLiteral table(Interpreter::return_3_addrs_by_index_table()); 2985 AddressLiteral table(Interpreter::invoke_return_entry_table());
2988 __ set(table, Rtemp); 2986 __ set(table, Rtemp);
2989 __ srl(Rret, ConstantPoolCacheEntry::tos_state_shift, Rret); // get return type 2987 __ srl(Rret, ConstantPoolCacheEntry::tos_state_shift, Rret); // get return type
2990 // Make sure we don't need to mask Rret after the above shift 2988 // Make sure we don't need to mask Rret after the above shift
2991 ConstantPoolCacheEntry::verify_tos_state_shift(); 2989 ConstantPoolCacheEntry::verify_tos_state_shift();
2992 __ sll(Rret, LogBytesPerWord, Rret); 2990 __ sll(Rret, LogBytesPerWord, Rret);
3024 __ null_check(O0); 3022 __ null_check(O0);
3025 3023
3026 __ profile_final_call(O4); 3024 __ profile_final_call(O4);
3027 3025
3028 // get return address 3026 // get return address
3029 AddressLiteral table(Interpreter::return_3_addrs_by_index_table()); 3027 AddressLiteral table(Interpreter::invoke_return_entry_table());
3030 __ set(table, Rtemp); 3028 __ set(table, Rtemp);
3031 __ srl(Rret, ConstantPoolCacheEntry::tos_state_shift, Rret); // get return type 3029 __ srl(Rret, ConstantPoolCacheEntry::tos_state_shift, Rret); // get return type
3032 // Make sure we don't need to mask Rret after the above shift 3030 // Make sure we don't need to mask Rret after the above shift
3033 ConstantPoolCacheEntry::verify_tos_state_shift(); 3031 ConstantPoolCacheEntry::verify_tos_state_shift();
3034 __ sll(Rret, LogBytesPerWord, Rret); 3032 __ sll(Rret, LogBytesPerWord, Rret);