hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp

Print this page




2366 
2367       /* debugger breakpoint */
2368 
2369       CASE(_breakpoint): {
2370           Bytecodes::Code original_bytecode;
2371           DECACHE_STATE();
2372           SET_LAST_JAVA_FRAME();
2373           original_bytecode = InterpreterRuntime::get_original_bytecode_at(THREAD,
2374                               METHOD, pc);
2375           RESET_LAST_JAVA_FRAME();
2376           CACHE_STATE();
2377           if (THREAD->has_pending_exception()) goto handle_exception;
2378             CALL_VM(InterpreterRuntime::_breakpoint(THREAD, METHOD, pc),
2379                                                     handle_exception);
2380 
2381           opcode = (jubyte)original_bytecode;
2382           goto opcode_switch;
2383       }
2384 
2385       DEFAULT:
2386 #ifdef ZERO
2387           // Some zero configurations use the C++ interpreter as a
2388           // fallback interpreter and have support for platform
2389           // specific fast bytecodes which aren't supported here, so
2390           // redispatch to the equivalent non-fast bytecode when they
2391           // are encountered.
2392           if (Bytecodes::is_defined((Bytecodes::Code)opcode)) {
2393               opcode = (jubyte)Bytecodes::java_code((Bytecodes::Code)opcode);
2394               goto opcode_switch;
2395           }
2396 #endif
2397           fatal(err_msg("Unimplemented opcode %d = %s", opcode,
2398                         Bytecodes::name((Bytecodes::Code)opcode)));
2399           goto finish;
2400 
2401       } /* switch(opc) */
2402 
2403 
2404 #ifdef USELABELS
2405     check_for_exception:
2406 #endif
2407     {
2408       if (!THREAD->has_pending_exception()) {
2409         CONTINUE;
2410       }
2411       /* We will be gcsafe soon, so flush our state. */
2412       DECACHE_PC();
2413       goto handle_exception;
2414     }
2415   do_continue: ;
2416 




2366 
2367       /* debugger breakpoint */
2368 
2369       CASE(_breakpoint): {
2370           Bytecodes::Code original_bytecode;
2371           DECACHE_STATE();
2372           SET_LAST_JAVA_FRAME();
2373           original_bytecode = InterpreterRuntime::get_original_bytecode_at(THREAD,
2374                               METHOD, pc);
2375           RESET_LAST_JAVA_FRAME();
2376           CACHE_STATE();
2377           if (THREAD->has_pending_exception()) goto handle_exception;
2378             CALL_VM(InterpreterRuntime::_breakpoint(THREAD, METHOD, pc),
2379                                                     handle_exception);
2380 
2381           opcode = (jubyte)original_bytecode;
2382           goto opcode_switch;
2383       }
2384 
2385       DEFAULT:











2386           fatal(err_msg("Unimplemented opcode %d = %s", opcode,
2387                         Bytecodes::name((Bytecodes::Code)opcode)));
2388           goto finish;
2389 
2390       } /* switch(opc) */
2391 
2392 
2393 #ifdef USELABELS
2394     check_for_exception:
2395 #endif
2396     {
2397       if (!THREAD->has_pending_exception()) {
2398         CONTINUE;
2399       }
2400       /* We will be gcsafe soon, so flush our state. */
2401       DECACHE_PC();
2402       goto handle_exception;
2403     }
2404   do_continue: ;
2405