44 lines
1.5 KiB
Diff
44 lines
1.5 KiB
Diff
From 8e390a2cdfff1138f3ba6e694395cd8790aa1603 Mon Sep 17 00:00:00 2001
|
|
Date: Fri, 19 Apr 2019 17:33:26 +0000
|
|
Subject: [PATCH] AARCH64 fix itable stub code size limit
|
|
|
|
---
|
|
hotspot/src/cpu/aarch64/vm/vtableStubs_aarch64.cpp | 12 +++++++++---
|
|
hotspot/src/share/vm/code/codeCache.cpp | 2 ++
|
|
2 files changed, 11 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/hotspot/src/cpu/aarch64/vm/vtableStubs_aarch64.cpp b/hotspot/src/cpu/aarch64/vm/vtableStubs_aarch64.cpp
|
|
index d8d1ec11ba..645b690dae 100644
|
|
--- a/hotspot/src/cpu/aarch64/vm/vtableStubs_aarch64.cpp
|
|
+++ b/hotspot/src/cpu/aarch64/vm/vtableStubs_aarch64.cpp
|
|
@@ -130,6 +130,10 @@ VtableStub* VtableStubs::create_itable_stub(int itable_index) {
|
|
// returned by pd_code_size_limit!
|
|
const int code_length = VtableStub::pd_code_size_limit(false);
|
|
VtableStub* s = new(code_length) VtableStub(false, itable_index);
|
|
+ // Can be NULL if there is no free space in the code cache.
|
|
+ if (s == NULL) {
|
|
+ return NULL;
|
|
+ }
|
|
ResourceMark rm;
|
|
CodeBuffer cb(s->entry_point(), code_length);
|
|
MacroAssembler* masm = new MacroAssembler(&cb);
|
|
@@ -222,10 +226,12 @@ int VtableStub::pd_code_size_limit(bool is_vtable_stub) {
|
|
if (CountCompiledCalls)
|
|
size += 6 * 4;
|
|
// FIXME: vtable stubs only need 36 bytes
|
|
- if (is_vtable_stub)
|
|
+ if (is_vtable_stub) {
|
|
size += 52;
|
|
- else
|
|
- size += 176;
|
|
+ } else {
|
|
+ // itable code size limit
|
|
+ size += 192;
|
|
+ }
|
|
return size;
|
|
|
|
// In order to tune these parameters, run the JVM with VM options
|
|
--
|
|
2.19.0
|
|
|