50 bool is_virtual, |
50 bool is_virtual, |
51 bool is_optimized, TRAPS); |
51 bool is_optimized, TRAPS); |
52 |
52 |
53 // Shared stub locations |
53 // Shared stub locations |
54 |
54 |
55 static RuntimeStub* _wrong_method_blob; |
55 static RuntimeStub* _wrong_method_blob; |
56 static RuntimeStub* _ic_miss_blob; |
56 static RuntimeStub* _ic_miss_blob; |
57 static RuntimeStub* _resolve_opt_virtual_call_blob; |
57 static RuntimeStub* _resolve_opt_virtual_call_blob; |
58 static RuntimeStub* _resolve_virtual_call_blob; |
58 static RuntimeStub* _resolve_virtual_call_blob; |
59 static RuntimeStub* _resolve_static_call_blob; |
59 static RuntimeStub* _resolve_static_call_blob; |
60 |
60 |
61 static RicochetBlob* _ricochet_blob; |
61 static DeoptimizationBlob* _deopt_blob; |
62 |
62 static RicochetBlob* _ricochet_blob; |
63 static SafepointBlob* _polling_page_safepoint_handler_blob; |
63 |
64 static SafepointBlob* _polling_page_return_handler_blob; |
64 static SafepointBlob* _polling_page_safepoint_handler_blob; |
|
65 static SafepointBlob* _polling_page_return_handler_blob; |
|
66 |
65 #ifdef COMPILER2 |
67 #ifdef COMPILER2 |
66 static ExceptionBlob* _exception_blob; |
68 static UncommonTrapBlob* _uncommon_trap_blob; |
67 static UncommonTrapBlob* _uncommon_trap_blob; |
|
68 #endif // COMPILER2 |
69 #endif // COMPILER2 |
69 |
70 |
70 #ifndef PRODUCT |
71 #ifndef PRODUCT |
71 |
|
72 // Counters |
72 // Counters |
73 static int _nof_megamorphic_calls; // total # of megamorphic calls (through vtable) |
73 static int _nof_megamorphic_calls; // total # of megamorphic calls (through vtable) |
74 |
|
75 #endif // !PRODUCT |
74 #endif // !PRODUCT |
|
75 |
|
76 private: |
|
77 static SafepointBlob* generate_handler_blob(address call_ptr, bool cause_return); |
|
78 static RuntimeStub* generate_resolve_blob(address destination, const char* name); |
|
79 |
76 public: |
80 public: |
|
81 static void generate_stubs(void); |
77 |
82 |
78 // max bytes for each dtrace string parameter |
83 // max bytes for each dtrace string parameter |
79 enum { max_dtrace_string_size = 256 }; |
84 enum { max_dtrace_string_size = 256 }; |
80 |
85 |
81 // The following arithmetic routines are used on platforms that do |
86 // The following arithmetic routines are used on platforms that do |
324 // compiled code. |
329 // compiled code. |
325 static methodHandle resolve_helper(JavaThread *thread, |
330 static methodHandle resolve_helper(JavaThread *thread, |
326 bool is_virtual, |
331 bool is_virtual, |
327 bool is_optimized, TRAPS); |
332 bool is_optimized, TRAPS); |
328 |
333 |
329 static void generate_stubs(void); |
|
330 |
|
331 private: |
334 private: |
332 // deopt blob |
335 // deopt blob |
333 static void generate_deopt_blob(void); |
336 static void generate_deopt_blob(void); |
334 static DeoptimizationBlob* _deopt_blob; |
|
335 |
337 |
336 public: |
338 public: |
337 static DeoptimizationBlob* deopt_blob(void) { return _deopt_blob; } |
339 static DeoptimizationBlob* deopt_blob(void) { return _deopt_blob; } |
338 |
340 |
339 // Resets a call-site in compiled code so it will get resolved again. |
341 // Resets a call-site in compiled code so it will get resolved again. |