c1_Runtime1_sparc.cpp revision 1484
0N/A#include "incls/_c1_Runtime1_sparc.cpp.incl"
0N/Aint StubAssembler::call_RT(Register oop_result1, Register oop_result2, address entry_point, int number_of_arguments) {
0N/A if (!VerifyThread) {
0N/A return call_offset;
0N/Aint StubAssembler::call_RT(Register oop_result1, Register oop_result2, address entry, Register arg1) {
0N/Aint StubAssembler::call_RT(Register oop_result1, Register oop_result2, address entry, Register arg1, Register arg2) {
0N/Aint StubAssembler::call_RT(Register oop_result1, Register oop_result2, address entry, Register arg1, Register arg2, Register arg3) {
0N/Astatic int reg_save_size_in_words;
0N/A if (save_fpu_registers) {
0N/A // Record volatile registers as callee-save values in an OopMap so their save locations will be
0N/A // propagated to the caller frame's RegisterMap during StackFrameStream construction (needed for
0N/A if (save_fpu_registers) {
0N/A if (restore_fpu_registers) {
0N/A // compute word offsets from SP at which live (non-windowed) registers are captured by stub routines
0N/AOopMapSet* Runtime1::generate_exception_throw(StubAssembler* sasm, address target, bool has_argument) {
0N/A int call_offset;
0N/A if (!has_argument) {
0N/A int call_offset;
0N/A __ br(Assembler::always, false, Assembler::pt, deopt_blob->unpack_with_reexecution(), relocInfo::runtime_call_type);
0N/A const bool must_gc_arguments = true;
0N/A const bool dont_gc_arguments = false;
0N/A case forward_exception_id:
0N/A case new_instance_id:
0N/A case fast_new_instance_id:
0N/A __ ld(G5_klass, klassOopDesc::header_size() * HeapWordSize + Klass::layout_helper_offset_in_bytes(), G1_obj_size);
0N/A __ ld(G5_klass, klassOopDesc::header_size() * HeapWordSize + Klass::layout_helper_offset_in_bytes(), G1_obj_size);
0N/A case counter_overflow_id:
0N/A case new_type_array_id:
0N/A case new_object_array_id:
0N/A oop_maps = generate_stub_call(sasm, I0, CAST_FROM_FN_PTR(address, new_type_array), G5_klass, G4_length);
0N/A oop_maps = generate_stub_call(sasm, I0, CAST_FROM_FN_PTR(address, new_object_array), G5_klass, G4_length);
0N/A case new_multi_array_id:
0N/A oop_maps = generate_stub_call(sasm, I0, CAST_FROM_FN_PTR(address, new_multi_array), I0, I1, I2);
0N/A case register_finalizer_id:
0N/A oop_maps = generate_exception_throw(sasm, CAST_FROM_FN_PTR(address, throw_range_check_exception), true);
0N/A case throw_index_exception_id:
0N/A oop_maps = generate_exception_throw(sasm, CAST_FROM_FN_PTR(address, throw_index_exception), true);
0N/A case throw_div0_exception_id:
0N/A oop_maps = generate_exception_throw(sasm, CAST_FROM_FN_PTR(address, throw_div0_exception), false);
0N/A oop_maps = generate_exception_throw(sasm, CAST_FROM_FN_PTR(address, throw_null_pointer_exception), false);
0N/A case handle_exception_id:
0N/A case unwind_exception_id:
0N/A __ call_VM_leaf(L7_thread_cache, CAST_FROM_FN_PTR(address, SharedRuntime::exception_handler_for_return_address),
1484N/A __ delayed()->movcc(Assembler::notZero, false, Assembler::icc, L7_mh_SP_save, SP); // Restore SP if required.
0N/A oop_maps = generate_exception_throw(sasm, CAST_FROM_FN_PTR(address, throw_array_store_exception), false);
0N/A oop_maps = generate_exception_throw(sasm, CAST_FROM_FN_PTR(address, throw_class_cast_exception), true);
0N/A oop_maps = generate_exception_throw(sasm, CAST_FROM_FN_PTR(address, throw_incompatible_class_change_error), false);
0N/A case slow_subtype_check_id:
0N/A case monitorenter_nofpu_id:
0N/A case monitorenter_id:
0N/A case monitorexit_nofpu_id:
0N/A case monitorexit_id:
0N/A case access_field_patching_id:
0N/A case load_klass_patching_id:
0N/A case jvmti_exception_throw_id:
0N/A oop_maps = generate_stub_call(sasm, noreg, CAST_FROM_FN_PTR(address, Runtime1::post_jvmti_exception_throw), I0);
0N/A case dtrace_object_alloc_id:
342N/A case g1_pre_barrier_slow_id:
342N/A int satb_q_buf_byte_offset =
0N/Avoid Runtime1::generate_handle_exception(StubAssembler* sasm, OopMapSet* oop_maps, OopMap* oop_map, bool) {
0N/A // save the real return address and use the throwing pc as the return address to lookup (has bci & oop map)