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
52 #ifndef CC_INTERP
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 // Note: There should be a minimal interpreter frame set up when stack
63 // overflow occurs since we check explicitly for it now.
64 //
65 #ifdef ASSERT
66 { Label L;
67 __ lea(rax, Address(rbp,
68 frame::interpreter_frame_monitor_block_top_offset * wordSize));
69 __ cmpptr(rax, rsp); // rax, = maximal rsp for current rbp,
70 // (stack grows negative)
71 __ jcc(Assembler::aboveEqual, L); // check if frame is complete
72 __ stop ("interpreter frame not set up");
73 __ bind(L);
74 }
|
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
52 #ifndef CC_INTERP
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 // Note: There should be a minimal interpreter frame set up when stack
63 // overflow occurs since we check explicitly for it now.
64 //
65 #ifdef ASSERT
66 { Label L;
67 __ lea(rax, Address(rbp,
68 frame::interpreter_frame_monitor_block_top_offset * wordSize));
69 __ cmpptr(rax, rsp); // rax, = maximal rsp for current rbp,
70 // (stack grows negative)
71 __ jcc(Assembler::aboveEqual, L); // check if frame is complete
72 __ stop ("interpreter frame not set up");
73 __ bind(L);
74 }
|