src/share/vm/runtime/sharedRuntime.hpp

changeset 4103
137868b7aa6f
parent 4101
2cb2f30450c7
child 4542
db9981fd3124
equal deleted inserted replaced
4102:8d3cc6612bd1 4103:137868b7aa6f
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

mercurial