34 #include "oops/method.hpp"
35 #include "oops/oop.inline.hpp"
36 #include "prims/jvmtiExport.hpp"
37 #include "prims/jvmtiThreadState.hpp"
38 #include "runtime/arguments.hpp"
39 #include "runtime/deoptimization.hpp"
40 #include "runtime/frame.inline.hpp"
41 #include "runtime/sharedRuntime.hpp"
42 #include "runtime/stubRoutines.hpp"
43 #include "runtime/synchronizer.hpp"
44 #include "runtime/timer.hpp"
45 #include "runtime/vframeArray.hpp"
46 #include "utilities/debug.hpp"
47 #include "utilities/macros.hpp"
48
49 #define __ _masm->
50
51 #ifndef CC_INTERP
52
53 const int method_offset = frame::interpreter_frame_method_offset * wordSize;
54 const int bci_offset = frame::interpreter_frame_bcx_offset * wordSize;
55 const int locals_offset = frame::interpreter_frame_locals_offset * wordSize;
56
57 //-----------------------------------------------------------------------------
58
59 address TemplateInterpreterGenerator::generate_StackOverflowError_handler() {
60 address entry = __ pc();
61
62 #ifdef ASSERT
63 {
64 Label L;
65 __ lea(rax, Address(rbp,
66 frame::interpreter_frame_monitor_block_top_offset *
67 wordSize));
68 __ cmpptr(rax, rsp); // rax = maximal rsp for current rbp (stack
69 // grows negative)
70 __ jcc(Assembler::aboveEqual, L); // check if frame is complete
71 __ stop ("interpreter frame not set up");
72 __ bind(L);
73 }
74 #endif // ASSERT
|
34 #include "oops/method.hpp"
35 #include "oops/oop.inline.hpp"
36 #include "prims/jvmtiExport.hpp"
37 #include "prims/jvmtiThreadState.hpp"
38 #include "runtime/arguments.hpp"
39 #include "runtime/deoptimization.hpp"
40 #include "runtime/frame.inline.hpp"
41 #include "runtime/sharedRuntime.hpp"
42 #include "runtime/stubRoutines.hpp"
43 #include "runtime/synchronizer.hpp"
44 #include "runtime/timer.hpp"
45 #include "runtime/vframeArray.hpp"
46 #include "utilities/debug.hpp"
47 #include "utilities/macros.hpp"
48
49 #define __ _masm->
50
51 #ifndef CC_INTERP
52
53 const int method_offset = frame::interpreter_frame_method_offset * wordSize;
54 const int bcp_offset = frame::interpreter_frame_bcp_offset * wordSize;
55 const int locals_offset = frame::interpreter_frame_locals_offset * wordSize;
56
57 //-----------------------------------------------------------------------------
58
59 address TemplateInterpreterGenerator::generate_StackOverflowError_handler() {
60 address entry = __ pc();
61
62 #ifdef ASSERT
63 {
64 Label L;
65 __ lea(rax, Address(rbp,
66 frame::interpreter_frame_monitor_block_top_offset *
67 wordSize));
68 __ cmpptr(rax, rsp); // rax = maximal rsp for current rbp (stack
69 // grows negative)
70 __ jcc(Assembler::aboveEqual, L); // check if frame is complete
71 __ stop ("interpreter frame not set up");
72 __ bind(L);
73 }
74 #endif // ASSERT
|