43 // shared functionality such as exception forwarding (C++ to
44 // Java exceptions), locking/unlocking mechanisms, statistical
45 // information, etc.
46
47 class SharedRuntime: AllStatic {
48 friend class VMStructs;
49
50 private:
51 static methodHandle resolve_sub_helper(JavaThread *thread,
52 bool is_virtual,
53 bool is_optimized, TRAPS);
54
55 // Shared stub locations
56
57 static RuntimeStub* _wrong_method_blob;
58 static RuntimeStub* _wrong_method_abstract_blob;
59 static RuntimeStub* _ic_miss_blob;
60 static RuntimeStub* _resolve_opt_virtual_call_blob;
61 static RuntimeStub* _resolve_virtual_call_blob;
62 static RuntimeStub* _resolve_static_call_blob;
63
64 static DeoptimizationBlob* _deopt_blob;
65
66 static SafepointBlob* _polling_page_vectors_safepoint_handler_blob;
67 static SafepointBlob* _polling_page_safepoint_handler_blob;
68 static SafepointBlob* _polling_page_return_handler_blob;
69
70 #ifdef COMPILER2
71 static UncommonTrapBlob* _uncommon_trap_blob;
72 #endif // COMPILER2
73
74 #ifndef PRODUCT
75 // Counters
76 static int _nof_megamorphic_calls; // total # of megamorphic calls (through vtable)
77 #endif // !PRODUCT
78
79 private:
80 enum { POLL_AT_RETURN, POLL_AT_LOOP, POLL_AT_VECTOR_LOOP };
81 static SafepointBlob* generate_handler_blob(address call_ptr, int poll_type);
82 static RuntimeStub* generate_resolve_blob(address destination, const char* name);
|
43 // shared functionality such as exception forwarding (C++ to
44 // Java exceptions), locking/unlocking mechanisms, statistical
45 // information, etc.
46
47 class SharedRuntime: AllStatic {
48 friend class VMStructs;
49
50 private:
51 static methodHandle resolve_sub_helper(JavaThread *thread,
52 bool is_virtual,
53 bool is_optimized, TRAPS);
54
55 // Shared stub locations
56
57 static RuntimeStub* _wrong_method_blob;
58 static RuntimeStub* _wrong_method_abstract_blob;
59 static RuntimeStub* _ic_miss_blob;
60 static RuntimeStub* _resolve_opt_virtual_call_blob;
61 static RuntimeStub* _resolve_virtual_call_blob;
62 static RuntimeStub* _resolve_static_call_blob;
63 static address _resolve_static_call_entry;
64
65 static DeoptimizationBlob* _deopt_blob;
66
67 static SafepointBlob* _polling_page_vectors_safepoint_handler_blob;
68 static SafepointBlob* _polling_page_safepoint_handler_blob;
69 static SafepointBlob* _polling_page_return_handler_blob;
70
71 #ifdef COMPILER2
72 static UncommonTrapBlob* _uncommon_trap_blob;
73 #endif // COMPILER2
74
75 #ifndef PRODUCT
76 // Counters
77 static int _nof_megamorphic_calls; // total # of megamorphic calls (through vtable)
78 #endif // !PRODUCT
79
80 private:
81 enum { POLL_AT_RETURN, POLL_AT_LOOP, POLL_AT_VECTOR_LOOP };
82 static SafepointBlob* generate_handler_blob(address call_ptr, int poll_type);
83 static RuntimeStub* generate_resolve_blob(address destination, const char* name);
|