Lines Matching defs:__
60 #define __ _masm->
74 __ stf(FloatRegisterImpl::D, F0, d_tmp);
76 __ stx(O0, l_tmp);
78 __ std(O0, l_tmp);
87 __ ldf(FloatRegisterImpl::D, d_tmp, F0);
89 __ ldx(l_tmp, O0);
91 __ ldd(l_tmp, O0);
97 address entry = __ pc();
99 __ empty_expression_stack();
101 __ set((intptr_t)name, G3_scratch);
103 __ call_VM(Oexception, CAST_FROM_FN_PTR(address, InterpreterRuntime::create_klass_exception), G3_scratch, Otos_i);
105 __ set((intptr_t)message, G4_scratch);
106 __ call_VM(Oexception, CAST_FROM_FN_PTR(address, InterpreterRuntime::create_exception), G3_scratch, G4_scratch);
111 __ jump_to(thrower, G3_scratch);
112 __ delayed()->nop();
117 address entry = __ pc();
120 __ empty_expression_stack();
122 __ call_VM(Oexception,
126 __ should_not_reach_here();
132 address entry = __ pc();
134 __ empty_expression_stack();
137 __ mov(G3_scratch, G4_scratch);
138 __ set((intptr_t)name, G3_scratch);
139 __ call_VM(Oexception, CAST_FROM_FN_PTR(address, InterpreterRuntime::throw_ArrayIndexOutOfBoundsException), G3_scratch, G4_scratch);
140 __ should_not_reach_here();
146 address entry = __ pc();
148 __ empty_expression_stack();
149 __ call_VM(Oexception, CAST_FROM_FN_PTR(address, InterpreterRuntime::throw_StackOverflowError));
150 __ should_not_reach_here();
159 address compiled_entry = __ pc();
161 address entry = __ pc();
173 __ srl (G1, 0, O1);
174 __ srlx(G1, 32, O0);
178 __ bind(cont);
186 __ mov(Llast_SP, SP); // Remove any adapter added stack space.
192 __ ldub(Address(Lbcp, 0), G1_scratch); // Load current bytecode.
193 __ cmp_and_br_short(G1_scratch, Bytecodes::_invokedynamic, Assembler::equal, Assembler::pn, L_giant_index);
195 __ get_cache_and_index_at_bcp(cache, G1_scratch, 1);
196 __ bind(L_got_cache);
197 __ ld_ptr(cache, constantPoolCacheOopDesc::base_offset() +
199 __ and3(size, 0xFF, size); // argument size in words
200 __ sll(size, Interpreter::logStackElementSize, size); // each argument size in bytes
201 __ add(Lesp, size, Lesp); // pop arguments
202 __ dispatch_next(state, step);
206 __ bind(L_giant_index);
207 __ get_cache_and_index_at_bcp(cache, G1_scratch, 1, sizeof(u4));
208 __ ba_short(L_got_cache);
216 address entry = __ pc();
217 __ get_constant_pool_cache(LcpoolCache); // load LcpoolCache
220 __ ld_ptr(exception_addr, Gtemp); // Load pending exception.
221 __ br_null_short(Gtemp, Assembler::pt, L);
222 __ call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::throw_pending_exception));
223 __ should_not_reach_here();
224 __ bind(L);
226 __ dispatch_next(state, step);
236 address entry = __ pc();
242 case T_BOOLEAN: __ subcc(G0, O0, G0); __ addc(G0, 0, Itos_i); break; // !0 => true; 0 => false
243 case T_CHAR : __ sll(O0, 16, O0); __ srl(O0, 16, Itos_i); break; // cannot use and3, 0xFFFF too big as immediate value!
244 case T_BYTE : __ sll(O0, 24, O0); __ sra(O0, 24, Itos_i); break;
245 case T_SHORT : __ sll(O0, 16, O0); __ sra(O0, 16, Itos_i); break;
248 __ mov(O1, Itos_l2); // move other half of long
250 case T_INT : __ mov(O0, Itos_i); break;
255 __ ld_ptr(FP, (frame::interpreter_frame_oop_temp_offset*wordSize) + STACK_BIAS, Itos_i);
256 __ verify_oop(Itos_i);
260 __ ret(); // return from interpreter activation
261 __ delayed()->restore(I5_savedSP, G0, SP); // remove interpreter frame
262 NOT_PRODUCT(__ emit_long(0);) // marker for disassembly
267 address entry = __ pc();
268 __ push(state);
269 __ call_VM(noreg, runtime_entry);
270 __ dispatch_via(vtos, Interpreter::normal_table(vtos));
276 address entry = __ pc();
277 __ dispatch_next(state);
301 __ ld_ptr(Lmethod, methodOopDesc::method_data_offset(), G4_scratch);
302 __ br_null_short(G4_scratch, Assembler::pn, no_mdo);
307 __ increment_mask_and_jump(mdo_invocation_counter, increment, mask,
310 __ ba_short(done);
314 __ bind(no_mdo);
318 __ increment_mask_and_jump(invocation_counter, increment, mask,
321 __ bind(done);
324 __ increment_invocation_counter(O0, G3_scratch);
327 __ ld(interpreter_invocation_counter, G3_scratch);
328 __ inc(G3_scratch);
329 __ st(G3_scratch, interpreter_invocation_counter);
335 __ load_contents(profile_limit, G3_scratch);
336 __ cmp_and_br_short(O0, G3_scratch, Assembler::lessUnsigned, Assembler::pn, *profile_method_continue);
339 __ test_method_data_pointer(*profile_method);
343 __ load_contents(invocation_limit, G3_scratch);
344 __ cmp(O0, G3_scratch);
345 __ br(Assembler::greaterEqualUnsigned, false, Assembler::pn, *overflow); // Far distance
346 __ delayed()->nop();
355 __ ld(Lmethod, in_bytes(methodOopDesc::access_flags_offset()), O0); // Load access flags.
359 __ btst(JVM_ACC_SYNCHRONIZED, O0);
360 __ br( Assembler::notZero, false, Assembler::pt, ok);
361 __ delayed()->nop();
362 __ stop("method doesn't need synchronization");
363 __ bind(ok);
370 __ btst(JVM_ACC_STATIC, O0);
371 __ br( Assembler::zero, true, Assembler::pt, done);
372 __ delayed()->ld_ptr(Llocals, Interpreter::local_offset_in_bytes(0), O0); // get receiver for not-static case
374 __ ld_ptr( Lmethod, in_bytes(methodOopDesc::const_offset()), O0);
375 __ ld_ptr( O0, in_bytes(constMethodOopDesc::constants_offset()), O0);
376 __ ld_ptr( O0, constantPoolOopDesc::pool_holder_offset_in_bytes(), O0);
379 __ ld_ptr( O0, mirror_offset, O0);
382 __ tst(O0);
383 __ breakpoint_trap(Assembler::zero, Assembler::ptr_cc);
386 __ bind(done);
389 __ add_monitor_to_stack(true, noreg, noreg); // allocate monitor elem
390 __ st_ptr( O0, Lmonitors, BasicObjectLock::obj_offset_in_bytes()); // store object
391 // __ untested("lock_object from method entry");
392 __ lock_object(Lmonitors, O0);
404 __ set(page_size, Rscratch);
405 __ cmp_and_br_short(Rframe_size, Rscratch, Assembler::lessEqual, Assembler::pt, after_frame_check);
408 __ ld_ptr( G2_thread, Thread::stack_base_offset(), Rscratch );
411 __ br_notnull_short(Rscratch, Assembler::pn, base_not_zero);
412 __ stop("stack base is zero in generate_stack_overflow_check");
413 __ bind(base_not_zero);
418 __ ld_ptr( G2_thread, Thread::stack_size_offset(), Rscratch2 );
421 __ br_notnull_short(Rscratch2, Assembler::pn, size_not_zero);
422 __ stop("stack size is zero in generate_stack_overflow_check");
423 __ bind(size_not_zero);
427 __ sub( Rscratch, Rscratch2, Rscratch );
428 __ set( (StackRedPages+StackYellowPages) * page_size, Rscratch2 );
429 __ add( Rscratch, Rscratch2, Rscratch );
433 __ add( Rscratch, Rframe_size, Rscratch );
437 __ cmp_and_brx_short(SP, Rscratch, Assembler::greaterUnsigned, Assembler::pt, after_frame_check);
450 __ jump_to(stub, Rscratch);
451 __ delayed()->mov(O5_savedSP, SP);
454 __ bind( after_frame_check );
514 __ lduh( size_of_parameters, Glocals_size);
520 __ sll(Glocals_size, Interpreter::logStackElementSize, Otmp1);
521 __ add(Gargs, Otmp1, Gargs);
524 __ calc_mem_param_words( Glocals_size, Gframe_size );
525 __ add( Gframe_size, extra_space, Gframe_size);
526 __ round_to( Gframe_size, WordsPerLong );
527 __ sll( Gframe_size, LogBytesPerWord, Gframe_size );
533 __ lduh( size_of_locals, Otmp1 );
534 __ sub( Otmp1, Glocals_size, Glocals_size );
535 __ round_to( Glocals_size, WordsPerLong );
536 __ sll( Glocals_size, Interpreter::logStackElementSize, Glocals_size );
541 __ lduh( max_stack, Gframe_size );
542 __ add( Gframe_size, extra_space, Gframe_size );
543 __ round_to( Gframe_size, WordsPerLong );
544 __ sll( Gframe_size, Interpreter::logStackElementSize, Gframe_size);
547 __ add( Gframe_size, Glocals_size, Gframe_size );
553 __ sub( Gframe_size, Glocals_size, Gframe_size);
558 __ sub( SP, Glocals_size, SP );
564 __ neg( Gframe_size );
565 __ save( SP, Gframe_size, SP );
574 __ mov(G0, Lbcp);
576 __ ld_ptr(G5_method, methodOopDesc::const_offset(), Lbcp);
577 __ add(Lbcp, in_bytes(constMethodOopDesc::codes_offset()), Lbcp);
579 __ mov( G5_method, Lmethod); // set Lmethod
580 __ get_constant_pool_cache( LcpoolCache ); // set LcpoolCache
581 __ sub(FP, rounded_vm_local_words * BytesPerWord, Lmonitors ); // set Lmonitors
583 __ add( Lmonitors, STACK_BIAS, Lmonitors ); // Account for 64 bit stack bias
585 __ sub(Lmonitors, BytesPerWord, Lesp); // set Lesp
588 __ sub(Gargs, BytesPerWord, Llocals); // set Llocals
596 __ set_method_data_pointer();
607 address entry = __ pc();
610 __ verify_oop(G5_method);
616 __ set(sync_state, G3_scratch);
617 __ cmp_and_br_short(G3_scratch, SafepointSynchronize::_not_synchronized, Assembler::notEqual, Assembler::pn, slow_path);
620 __ retl();
621 __ delayed()->mov(O5_savedSP, SP);
623 __ bind(slow_path);
643 address entry = __ pc();
653 __ load_contents(sync_state, G3_scratch);
654 __ cmp(G3_scratch, SafepointSynchronize::_not_synchronized);
655 __ cmp_and_br_short(G3_scratch, SafepointSynchronize::_not_synchronized, Assembler::notEqual, Assembler::pn, slow_path);
658 __ ld_ptr(Gargs, G0, Otos_i ); // get local 0
660 __ br_null_short(Otos_i, Assembler::pn, slow_path);
665 __ ld_ptr(G5_method, methodOopDesc::const_offset(), G1_scratch);
666 __ ld(G1_scratch, constMethodOopDesc::codes_offset(), G1_scratch);
669 __ sll(G1_scratch, 2*BitsPerByte, G1_scratch);
670 __ srl(G1_scratch, 2*BitsPerByte - exact_log2(in_words(
674 __ ld_ptr(G5_method, methodOopDesc::const_offset(), G3_scratch);
675 __ ld_ptr(G3_scratch, constMethodOopDesc::constants_offset(), G3_scratch);
676 __ ld_ptr(G3_scratch, constantPoolOopDesc::cache_offset_in_bytes(), G3_scratch);
679 __ add(G3_scratch, G1_scratch, G3_scratch);
684 __ ld_ptr(G3_scratch, cp_base_offset + ConstantPoolCacheEntry::indices_offset(), G1_scratch);
685 __ srl(G1_scratch, 2*BitsPerByte, G1_scratch);
686 __ and3(G1_scratch, 0xFF, G1_scratch);
687 __ cmp_and_br_short(G1_scratch, Bytecodes::_getfield, Assembler::notEqual, Assembler::pn, slow_path);
690 __ ld_ptr(G3_scratch, cp_base_offset + ConstantPoolCacheEntry::flags_offset(), G1_scratch);
691 __ ld_ptr(G3_scratch, cp_base_offset + ConstantPoolCacheEntry::f2_offset(), G3_scratch);
697 __ srl(G1_scratch, ConstantPoolCacheEntry::tos_state_shift, G1_scratch);
700 __ cmp(G1_scratch, atos );
701 __ br(Assembler::equal, true, Assembler::pt, xreturn_path);
702 __ delayed()->ld_ptr(Otos_i, G3_scratch, Otos_i);
703 __ cmp(G1_scratch, itos);
704 __ br(Assembler::equal, true, Assembler::pt, xreturn_path);
705 __ delayed()->ld(Otos_i, G3_scratch, Otos_i);
706 __ cmp(G1_scratch, stos);
707 __ br(Assembler::equal, true, Assembler::pt, xreturn_path);
708 __ delayed()->ldsh(Otos_i, G3_scratch, Otos_i);
709 __ cmp(G1_scratch, ctos);
710 __ br(Assembler::equal, true, Assembler::pt, xreturn_path);
711 __ delayed()->lduh(Otos_i, G3_scratch, Otos_i);
713 __ cmp(G1_scratch, btos);
714 __ br(Assembler::equal, true, Assembler::pt, xreturn_path);
715 __ delayed()->ldsb(Otos_i, G3_scratch, Otos_i);
716 __ should_not_reach_here();
718 __ ldsb(Otos_i, G3_scratch, Otos_i);
719 __ bind(xreturn_path);
722 __ retl(); // return from leaf routine
723 __ delayed()->mov(O5_savedSP, SP);
726 __ bind(slow_path);
761 address entry = __ pc();
774 __ ld_ptr(Gargs, G0, Otos_i ); // get local 0
776 __ cmp_and_brx_short(Otos_i, 0, Assembler::equal, Assembler::pn, slow_path);
781 __ load_heap_oop(Otos_i, referent_offset, Otos_i);
783 __ set(referent_offset, G3_scratch);
784 __ load_heap_oop(Otos_i, G3_scratch, Otos_i);
792 __ g1_write_barrier_pre(noreg /* obj */, noreg /* index */, 0 /* offset */,
798 __ retl(); // return from leaf routine
799 __ delayed()->mov(O5_savedSP, SP);
802 __ bind(slow_path);
820 address entry = __ pc();
832 __ verify_oop(G5_method);
840 __ ld(G5_method, methodOopDesc::access_flags_offset(), Gtmp1);
843 __ btst(JVM_ACC_NATIVE, Gtmp1);
844 __ br(Assembler::notZero, false, Assembler::pt, L);
845 __ delayed()->nop();
846 __ stop("tried to execute non-native method as native");
847 __ bind(L);
850 __ btst(JVM_ACC_ABSTRACT, Gtmp1);
851 __ br(Assembler::zero, false, Assembler::pt, L);
852 __ delayed()->nop();
853 __ stop("tried to execute abstract method as non-abstract");
854 __ bind(L);
867 __ st_ptr(G0, FP, (frame::interpreter_frame_oop_temp_offset * wordSize) + STACK_BIAS);
880 __ movbool(true, G3_scratch);
881 __ stbool(G3_scratch, do_not_unlock_if_synchronized);
894 __ bind(Lcontinue);
899 __ stbool(G0, do_not_unlock_if_synchronized);
910 __ ld(Laccess_flags, O0);
911 __ btst(JVM_ACC_SYNCHRONIZED, O0);
912 __ br( Assembler::zero, false, Assembler::pt, ok);
913 __ delayed()->nop();
914 __ stop("method needs synchronization");
915 __ bind(ok);
922 __ verify_thread();
925 __ notify_method_entry();
938 __ ld_ptr(signature_handler, G3_scratch);
939 __ br_notnull_short(G3_scratch, Assembler::pt, L);
940 __ call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::prepare_native_call), Lmethod);
941 __ ld_ptr(signature_handler, G3_scratch);
942 __ bind(L);
952 __ st_ptr(Lmethod, SP, (Lmethod->sp_offset_in_saved_window() * wordSize) + STACK_BIAS);
953 __ mov(Llocals, O1);
956 __ add(FP, (frame::interpreter_frame_oop_temp_offset * wordSize) + STACK_BIAS, O2);
959 __ sub(SP, FP, O3); // Calculate negative of current frame size
960 __ save(SP, O3, SP); // Allocate an identical sized frame
969 __ ld_ptr(FP, (Lmethod->sp_offset_in_saved_window() * wordSize) + STACK_BIAS, Lmethod);
971 __ mov(I1, Llocals);
972 __ mov(I2, Lscratch2); // save the address of the mirror
980 __ callr(G3_scratch, 0);
981 __ delayed()->nop();
986 __ ld_ptr(FP, (Lmethod->sp_offset_in_saved_window() * wordSize) + STACK_BIAS, Lmethod);
990 __ ld(Laccess_flags, O0);
991 __ btst(JVM_ACC_STATIC, O0);
992 __ br( Assembler::zero, false, Assembler::pt, not_static);
994 __ delayed()->ld_ptr(Lmethod, in_bytes(methodOopDesc::native_function_offset()), O0);
998 __ ld_ptr(Lmethod, methodOopDesc:: const_offset(), O1);
999 __ ld_ptr(O1, constMethodOopDesc::constants_offset(), O1);
1000 __ ld_ptr(O1, constantPoolOopDesc::pool_holder_offset_in_bytes(), O1);
1001 __ ld_ptr(O1, mirror_offset, O1);
1005 __ br_notnull_short(O1, Assembler::pt, L);
1006 __ stop("mirror is missing");
1007 __ bind(L);
1010 __ st_ptr(O1, Lscratch2, 0);
1011 __ mov(Lscratch2, O1);
1012 __ bind(not_static);
1022 __ br_notnull_short(O0, Assembler::pt, L);
1023 __ stop("native entry point is missing");
1024 __ bind(L);
1041 __ set_last_Java_frame(FP, O7);
1042 __ mov(O7, I7); // make dummy interpreter frame look like one above,
1048 __ flush_windows();
1052 __ set(JavaFrameAnchor::flushed, G3_scratch);
1053 __ st(G3_scratch, flags);
1060 __ ld(thread_state, G3_scratch);
1061 __ cmp_and_br_short(G3_scratch, _thread_in_Java, Assembler::equal, Assembler::pt, L);
1062 __ stop("Wrong thread state in native stub");
1063 __ bind(L);
1066 __ set(_thread_in_native, G3_scratch);
1067 __ st(G3_scratch, thread_state);
1070 __ save_thread(L7_thread_cache); // save Gthread
1071 __ callr(O0, 0);
1072 __ delayed()->
1077 __ restore_thread(L7_thread_cache); // restore G2_thread
1078 __ reinit_heapbase();
1094 __ set(_thread_in_native_trans, G3_scratch);
1095 __ st(G3_scratch, thread_state);
1099 __ membar(Assembler::StoreLoad);
1105 __ serialize_memory(G2_thread, G1_scratch, G3_scratch);
1108 __ load_contents(sync_state, G3_scratch);
1109 __ cmp(G3_scratch, SafepointSynchronize::_not_synchronized);
1112 __ br(Assembler::notEqual, false, Assembler::pn, L);
1113 __ delayed()->ld(G2_thread, JavaThread::suspend_flags_offset(), G3_scratch);
1114 __ cmp_and_br_short(G3_scratch, 0, Assembler::equal, Assembler::pt, no_block);
1115 __ bind(L);
1120 __ call_VM_leaf(L7_thread_cache,
1126 __ bind(no_block);
1131 __ reset_last_Java_frame();
1134 __ mov(Lscratch, G3_scratch);
1137 __ mov(O0, I0);
1138 __ restore(O1, G0, O1);
1140 __ restore(O0, G0, O0);
1144 __ mov(G3_scratch, Lscratch);
1149 __ set(_thread_in_Java, G3_scratch);
1150 __ st(G3_scratch, thread_state);
1153 __ ld_ptr(G2_thread, JavaThread::active_handles_offset(), G3_scratch);
1154 __ st_ptr(G0, G3_scratch, JNIHandleBlock::top_offset_in_bytes());
1162 __ set((intptr_t)AbstractInterpreter::result_handler(T_OBJECT), G3_scratch);
1163 __ cmp_and_brx_short(G3_scratch, Lscratch, Assembler::notEqual, Assembler::pt, no_oop);
1164 __ addcc(G0, O0, O0);
1165 __ brx(Assembler::notZero, true, Assembler::pt, store_result); // if result is not NULL:
1166 __ delayed()->ld_ptr(O0, 0, O0); // unbox it
1167 __ mov(G0, O0);
1169 __ bind(store_result);
1171 __ st_ptr(O0, FP, (frame::interpreter_frame_oop_temp_offset*wordSize) + STACK_BIAS);
1173 __ bind(no_oop);
1181 __ ld_ptr(exception_addr, Gtemp);
1182 __ br_null_short(Gtemp, Assembler::pt, L);
1186 __ call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::throw_pending_exception));
1187 __ should_not_reach_here();
1188 __ bind(L);
1192 __ notify_method_exit(true, ilgl, InterpreterMacroAssembler::NotifyJVMTI);
1198 __ add( __ top_most_monitor(), O1);
1199 __ unlock_object(O1);
1209 __ sllx(O0, 32, G1); // Shift bits into high G1
1210 __ srl (O1, 0, O1); // Zero extend O1
1211 __ or3 (O1, G1, G1); // OR 64 bits into G1
1219 __ cmp_and_brx_short(I5_savedSP, FP, Assembler::greaterEqualUnsigned, Assembler::pt, ok);
1220 __ stop("bad I5_savedSP value");
1221 __ should_not_reach_here();
1222 __ bind(ok);
1227 __ mov(Lscratch, G3_scratch);
1228 __ JMP(G3_scratch, 0);
1230 __ jmp(Lscratch, 0);
1232 __ delayed()->nop();
1237 __ bind(invocation_counter_overflow);
1251 address entry = __ pc();
1268 __ verify_oop(G5_method);
1276 __ ld(G5_method, methodOopDesc::access_flags_offset(), Gtmp1);
1279 __ btst(JVM_ACC_NATIVE, Gtmp1);
1280 __ br(Assembler::zero, false, Assembler::pt, L);
1281 __ delayed()->nop();
1282 __ stop("tried to execute native method as non-native");
1283 __ bind(L);
1286 __ btst(JVM_ACC_ABSTRACT, Gtmp1);
1287 __ br(Assembler::zero, false, Assembler::pt, L);
1288 __ delayed()->nop();
1289 __ stop("tried to execute abstract method as non-abstract");
1290 __ bind(L);
1299 __ set((intptr_t)Interpreter::dispatch_table(), IdispatchTables);
1317 __ lduh( size_of_locals, O2 );
1318 __ lduh( size_of_parameters, O1 );
1319 __ sll( O2, Interpreter::logStackElementSize, O2);
1320 __ sll( O1, Interpreter::logStackElementSize, O1 );
1321 __ sub( Llocals, O2, O2 );
1322 __ sub( Llocals, O1, O1 );
1324 __ bind( clear_loop );
1325 __ inc( O2, wordSize );
1327 __ cmp( O2, O1 );
1328 __ brx( Assembler::lessEqualUnsigned, true, Assembler::pt, clear_loop );
1329 __ delayed()->st_ptr( init_value, O2, 0 );
1339 __ movbool(true, G3_scratch);
1340 __ stbool(G3_scratch, do_not_unlock_if_synchronized);
1354 __ bind(profile_method_continue);
1357 __ bind(Lcontinue);
1362 __ stbool(G0, do_not_unlock_if_synchronized);
1373 __ ld(access_flags, O0);
1374 __ btst(JVM_ACC_SYNCHRONIZED, O0);
1375 __ br( Assembler::zero, false, Assembler::pt, ok);
1376 __ delayed()->nop();
1377 __ stop("method needs synchronization");
1378 __ bind(ok);
1385 __ verify_thread();
1388 __ notify_method_entry();
1391 __ dispatch_next(vtos);
1397 __ bind(profile_method);
1399 __ call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::profile_method));
1400 __ set_method_data_pointer_for_bcp();
1401 __ ba_short(profile_method_continue);
1405 __ bind(invocation_counter_overflow);
1644 // preallocate monitors (cf. __ add_monitor_to_stack)
1771 Interpreter::_rethrow_exception_entry = __ pc();
1775 Interpreter::_throw_exception_entry = __ pc();
1776 __ verify_thread();
1780 __ verify_oop(Oexception);
1784 __ empty_expression_stack();
1787 __ call_VM(O1, CAST_FROM_FN_PTR(address, InterpreterRuntime::exception_handler_for_exception), Oexception);
1788 __ push_ptr(O1); // push exception for exception handler bytecodes
1790 __ JMP(O0, 0); // jump to exception handler (may be remove activation entry!)
1791 __ delayed()->nop();
1810 Interpreter::_remove_activation_preserving_args_entry = __ pc();
1816 __ ld(popframe_condition_addr, G3_scratch);
1817 __ or3(G3_scratch, JavaThread::popframe_processing_bit, G3_scratch);
1818 __ stw(G3_scratch, popframe_condition_addr);
1821 __ empty_expression_stack();
1822 __ unlock_if_synchronized_method(vtos, /* throw_monitor_exception */ false, /* install_monitor_exception */ false);
1836 __ call_VM_leaf(L7_thread_cache, CAST_FROM_FN_PTR(address, InterpreterRuntime::interpreter_contains), I7);
1837 __ br_notnull_short(O0, Assembler::pt, caller_not_deoptimized);
1843 __ lduh(Lmethod, in_bytes(methodOopDesc::size_of_parameters_offset()), Gtmp1);
1844 __ sll(Gtmp1, Interpreter::logStackElementSize, Gtmp1);
1845 __ sub(Llocals, Gtmp1, Gtmp2);
1846 __ add(Gtmp2, wordSize, Gtmp2);
1848 __ call_VM_leaf(L7_thread_cache, CAST_FROM_FN_PTR(address, Deoptimization::popframe_preserve_args), G2_thread, Gtmp1, Gtmp2);
1850 __ set(JavaThread::popframe_force_deopt_reexecution_bit, Gtmp1);
1852 __ st(Gtmp1, popframe_condition_addr);
1857 __ ret();
1858 __ delayed()->restore(I5_savedSP, G0, SP);
1860 __ bind(caller_not_deoptimized);
1864 __ stw(G0 /* popframe_inactive */, popframe_condition_addr);
1870 __ restore(I5_savedSP, G0, SP);
1874 __ set_method_data_pointer_for_bcp();
1877 __ dispatch_next(vtos);
1880 Interpreter::_remove_activation_entry = __ pc();
1883 __ pop_ptr(Oexception); // get exception
1891 __ set_vm_result(Oexception);
1892 __ unlock_if_synchronized_method(vtos, /* throw_monitor_exception */ false);
1894 __ notify_method_exit(false, vtos, InterpreterMacroAssembler::SkipNotifyJVMTI);
1896 __ get_vm_result(Oexception);
1897 __ verify_oop(Oexception);
1920 __ mov(Oexception, Oexception ->after_save()); // get exception in I0 so it will be on O0 after restore
1921 __ add(issuing_pc_addr, Oissuing_pc->after_save()); // likewise set I1 to a value local to the caller
1922 __ super_call_VM_leaf(L7_thread_cache,
1928 __ JMP(O0, 0); // return exception handler in caller
1929 __ delayed()->restore(I5_savedSP, G0, SP);
1941 address entry = __ pc();
1943 __ empty_expression_stack();
1944 __ load_earlyret_value(state);
1946 __ ld_ptr(G2_thread, JavaThread::jvmti_thread_state_offset(), G3_scratch);
1950 __ stw(G0 /* JvmtiThreadState::earlyret_inactive */, cond_addr);
1952 __ remove_activation(state,
1958 __ ret(); // return to caller
1959 __ delayed()->restore(I5_savedSP, G0, SP);
1971 aep = __ pc(); __ push_ptr(); __ ba_short(L);
1972 fep = __ pc(); __ push_f(); __ ba_short(L);
1973 dep = __ pc(); __ push_d(); __ ba_short(L);
1974 lep = __ pc(); __ push_l(); __ ba_short(L);
1975 iep = __ pc(); __ push_i();
1977 vep = __ pc(); __ bind(L); // fall through
1994 address entry = __ pc();
1996 __ push(state);
1997 __ mov(O7, Lscratch); // protect return address within interpreter
2000 __ mov( Otos_l2, G3_scratch );
2001 __ call_VM(noreg, CAST_FROM_FN_PTR(address, SharedRuntime::trace_bytecode), G0, Otos_l1, G3_scratch);
2002 __ mov(Lscratch, O7); // restore return address
2003 __ pop(state);
2004 __ retl();
2005 __ delayed()->nop();
2014 __ inc_counter(&BytecodeCounter::_counter_value, G3_scratch, G4_scratch);
2019 __ inc_counter(&BytecodeHistogram::_counters[t->bytecode()], G3_scratch, G4_scratch);
2031 __ load_contents(index, G4_scratch);
2032 __ srl( G4_scratch, BytecodePairHistogram::log2_number_of_codes, G4_scratch );
2033 __ set( ((int)t->bytecode()) << BytecodePairHistogram::log2_number_of_codes, G3_scratch );
2034 __ or3( G3_scratch, G4_scratch, G4_scratch );
2035 __ store_contents(G4_scratch, index, G3_scratch);
2040 __ set(counters, G3_scratch); // loads into G3_scratch
2041 __ sll( G4_scratch, LogBytesPerWord, G4_scratch ); // Index is word address
2042 __ add (G3_scratch, G4_scratch, G3_scratch); // Add in index
2043 __ ld (G3_scratch, 0, G4_scratch);
2044 __ inc (G4_scratch);
2045 __ st (G4_scratch, 0, G3_scratch);
2055 __ call(entry, relocInfo::none);
2056 __ delayed()->nop();
2062 __ load_contents(counter, G3_scratch);
2064 __ load_ptr_contents(stop_at, G4_scratch);
2065 __ cmp(G3_scratch, G4_scratch);
2066 __ breakpoint_trap(Assembler::equal, Assembler::icc);