85 st->print("vtable stub (index = %d, receiver_location = " INTX_FORMAT ", code = [" INTPTR_FORMAT ", " INTPTR_FORMAT "])",
86 index(), p2i(receiver_location()), p2i(code_begin()), p2i(code_end()));
87 }
88
89 void VtableStub::print() const { print_on(tty); }
90
91 // -----------------------------------------------------------------------------------------
92 // Implementation of VtableStubs
93 //
94 // For each hash value there's a linked list of vtable stubs (with that
95 // hash value). Each list is anchored in a little hash _table, indexed
96 // by that hash value.
97
98 VtableStub* VtableStubs::_table[VtableStubs::N];
99 int VtableStubs::_number_of_vtable_stubs = 0;
100 int VtableStubs::_vtab_stub_size = 0;
101 int VtableStubs::_itab_stub_size = 0;
102
103 #if defined(PRODUCT)
104 // These values are good for the PRODUCT case (no tracing).
105 static const int first_vtableStub_size = 64;
106 static const int first_itableStub_size = 256;
107 #else
108 // These values are good for the non-PRODUCT case (when tracing can be switched on).
109 // To find out, run test workload with
110 // -Xlog:vtablestubs=Trace -XX:+CountCompiledCalls -XX:+DebugVtables
111 // and use the reported "estimate" value.
112 // Here is a list of observed worst-case values:
113 // vtable itable
114 // aarch64: 460 324
115 // arm: ? ?
116 // ppc (linux, BE): 404 288
117 // ppc (linux, LE): 356 276
118 // ppc (AIX): 416 296
119 // s390x: 408 256
120 // Solaris-sparc: 792 348
121 // x86 (Linux): 670 309
122 // x86 (MacOS): 682 321
123 static const int first_vtableStub_size = 1024;
124 static const int first_itableStub_size = 512;
125 #endif
126
|
85 st->print("vtable stub (index = %d, receiver_location = " INTX_FORMAT ", code = [" INTPTR_FORMAT ", " INTPTR_FORMAT "])",
86 index(), p2i(receiver_location()), p2i(code_begin()), p2i(code_end()));
87 }
88
89 void VtableStub::print() const { print_on(tty); }
90
91 // -----------------------------------------------------------------------------------------
92 // Implementation of VtableStubs
93 //
94 // For each hash value there's a linked list of vtable stubs (with that
95 // hash value). Each list is anchored in a little hash _table, indexed
96 // by that hash value.
97
98 VtableStub* VtableStubs::_table[VtableStubs::N];
99 int VtableStubs::_number_of_vtable_stubs = 0;
100 int VtableStubs::_vtab_stub_size = 0;
101 int VtableStubs::_itab_stub_size = 0;
102
103 #if defined(PRODUCT)
104 // These values are good for the PRODUCT case (no tracing).
105 static const int first_vtableStub_size = 256;
106 static const int first_itableStub_size = 512;
107 #else
108 // These values are good for the non-PRODUCT case (when tracing can be switched on).
109 // To find out, run test workload with
110 // -Xlog:vtablestubs=Trace -XX:+CountCompiledCalls -XX:+DebugVtables
111 // and use the reported "estimate" value.
112 // Here is a list of observed worst-case values:
113 // vtable itable
114 // aarch64: 460 324
115 // arm: ? ?
116 // ppc (linux, BE): 404 288
117 // ppc (linux, LE): 356 276
118 // ppc (AIX): 416 296
119 // s390x: 408 256
120 // Solaris-sparc: 792 348
121 // x86 (Linux): 670 309
122 // x86 (MacOS): 682 321
123 static const int first_vtableStub_size = 1024;
124 static const int first_itableStub_size = 512;
125 #endif
126
|