-
Bug
-
Resolution: Won't Fix
-
P3
-
9, 10, 11
-
generic
-
generic
Due to missing implementation of far virtual calls from nmethod to aot methods we have huge number of IC misses because of next code in generate_i2c2i_adapters():
// Method might have been compiled since the call site was patched to
// interpreted if that is the case treat it as a miss so we can get
// the call site corrected.
__ cmpptr(Address(rbx, in_bytes(Method::code_offset())), (int32_t)NULL_WORD);
__ jcc(Assembler::equal, skip_fixup);
__ jump(RuntimeAddress(SharedRuntime::get_ic_miss_stub()));
These cause big performance regression with AOT when aot libraries are loaded far from codecache (usually happens on solaris-x86):
Tiered C1/C2 (compiling jvmci: 207 classes):
8.924
9.019
8.697
8.495
8.991
Tiered AOT (compiling jvmci: 207 classes):
43.170
49.613
48.459
42.117
49.339
// Method might have been compiled since the call site was patched to
// interpreted if that is the case treat it as a miss so we can get
// the call site corrected.
__ cmpptr(Address(rbx, in_bytes(Method::code_offset())), (int32_t)NULL_WORD);
__ jcc(Assembler::equal, skip_fixup);
__ jump(RuntimeAddress(SharedRuntime::get_ic_miss_stub()));
These cause big performance regression with AOT when aot libraries are loaded far from codecache (usually happens on solaris-x86):
Tiered C1/C2 (compiling jvmci: 207 classes):
8.924
9.019
8.697
8.495
8.991
Tiered AOT (compiling jvmci: 207 classes):
43.170
49.613
48.459
42.117
49.339