equal
deleted
inserted
replaced
60 static RuntimeStub* _resolve_virtual_call_blob; |
60 static RuntimeStub* _resolve_virtual_call_blob; |
61 static RuntimeStub* _resolve_static_call_blob; |
61 static RuntimeStub* _resolve_static_call_blob; |
62 |
62 |
63 static DeoptimizationBlob* _deopt_blob; |
63 static DeoptimizationBlob* _deopt_blob; |
64 |
64 |
|
65 static SafepointBlob* _polling_page_vectors_safepoint_handler_blob; |
65 static SafepointBlob* _polling_page_safepoint_handler_blob; |
66 static SafepointBlob* _polling_page_safepoint_handler_blob; |
66 static SafepointBlob* _polling_page_return_handler_blob; |
67 static SafepointBlob* _polling_page_return_handler_blob; |
67 |
68 |
68 #ifdef COMPILER2 |
69 #ifdef COMPILER2 |
69 static UncommonTrapBlob* _uncommon_trap_blob; |
70 static UncommonTrapBlob* _uncommon_trap_blob; |
73 // Counters |
74 // Counters |
74 static int _nof_megamorphic_calls; // total # of megamorphic calls (through vtable) |
75 static int _nof_megamorphic_calls; // total # of megamorphic calls (through vtable) |
75 #endif // !PRODUCT |
76 #endif // !PRODUCT |
76 |
77 |
77 private: |
78 private: |
78 static SafepointBlob* generate_handler_blob(address call_ptr, bool cause_return); |
79 enum { POLL_AT_RETURN, POLL_AT_LOOP, POLL_AT_VECTOR_LOOP }; |
|
80 static SafepointBlob* generate_handler_blob(address call_ptr, int poll_type); |
79 static RuntimeStub* generate_resolve_blob(address destination, const char* name); |
81 static RuntimeStub* generate_resolve_blob(address destination, const char* name); |
80 |
82 |
81 public: |
83 public: |
82 static void generate_stubs(void); |
84 static void generate_stubs(void); |
83 |
85 |
221 return _resolve_static_call_blob->entry_point(); |
223 return _resolve_static_call_blob->entry_point(); |
222 } |
224 } |
223 |
225 |
224 static SafepointBlob* polling_page_return_handler_blob() { return _polling_page_return_handler_blob; } |
226 static SafepointBlob* polling_page_return_handler_blob() { return _polling_page_return_handler_blob; } |
225 static SafepointBlob* polling_page_safepoint_handler_blob() { return _polling_page_safepoint_handler_blob; } |
227 static SafepointBlob* polling_page_safepoint_handler_blob() { return _polling_page_safepoint_handler_blob; } |
|
228 static SafepointBlob* polling_page_vectors_safepoint_handler_blob() { return _polling_page_vectors_safepoint_handler_blob; } |
226 |
229 |
227 // Counters |
230 // Counters |
228 #ifndef PRODUCT |
231 #ifndef PRODUCT |
229 static address nof_megamorphic_calls_addr() { return (address)&_nof_megamorphic_calls; } |
232 static address nof_megamorphic_calls_addr() { return (address)&_nof_megamorphic_calls; } |
230 #endif // PRODUCT |
233 #endif // PRODUCT |
413 // otherwise be preserved. |
416 // otherwise be preserved. |
414 // On Intel these are not necessary and the value can be zero. |
417 // On Intel these are not necessary and the value can be zero. |
415 // On Sparc this describes the words reserved for storing a register window |
418 // On Sparc this describes the words reserved for storing a register window |
416 // when an interrupt occurs. |
419 // when an interrupt occurs. |
417 static uint out_preserve_stack_slots(); |
420 static uint out_preserve_stack_slots(); |
|
421 |
|
422 // Is vector's size (in bytes) bigger than a size saved by default? |
|
423 // For example, on x86 16 bytes XMM registers are saved by default. |
|
424 static bool is_wide_vector(int size); |
418 |
425 |
419 // Save and restore a native result |
426 // Save and restore a native result |
420 static void save_native_result(MacroAssembler *_masm, BasicType ret_type, int frame_slots ); |
427 static void save_native_result(MacroAssembler *_masm, BasicType ret_type, int frame_slots ); |
421 static void restore_native_result(MacroAssembler *_masm, BasicType ret_type, int frame_slots ); |
428 static void restore_native_result(MacroAssembler *_masm, BasicType ret_type, int frame_slots ); |
422 |
429 |