8359373: Split stubgen initial blob into pre and post-universe blobs
This commit is contained in:
parent
3c53057fa6
commit
d7b5988915
@ -26,6 +26,13 @@
|
|||||||
#ifndef CPU_AARCH64_STUBDECLARATIONS_HPP
|
#ifndef CPU_AARCH64_STUBDECLARATIONS_HPP
|
||||||
#define CPU_AARCH64_STUBDECLARATIONS_HPP
|
#define CPU_AARCH64_STUBDECLARATIONS_HPP
|
||||||
|
|
||||||
|
#define STUBGEN_PREUNIVERSE_BLOBS_ARCH_DO(do_stub, \
|
||||||
|
do_arch_blob, \
|
||||||
|
do_arch_entry, \
|
||||||
|
do_arch_entry_init) \
|
||||||
|
do_arch_blob(preuniverse, 0) \
|
||||||
|
|
||||||
|
|
||||||
#define STUBGEN_INITIAL_BLOBS_ARCH_DO(do_stub, \
|
#define STUBGEN_INITIAL_BLOBS_ARCH_DO(do_stub, \
|
||||||
do_arch_blob, \
|
do_arch_blob, \
|
||||||
do_arch_entry, \
|
do_arch_entry, \
|
||||||
|
@ -11653,6 +11653,10 @@ class StubGenerator: public StubCodeGenerator {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Initialization
|
// Initialization
|
||||||
|
void generate_preuniverse_stubs() {
|
||||||
|
// preuniverse stubs are not needed for aarch64
|
||||||
|
}
|
||||||
|
|
||||||
void generate_initial_stubs() {
|
void generate_initial_stubs() {
|
||||||
// Generate initial stubs and initializes the entry points
|
// Generate initial stubs and initializes the entry points
|
||||||
|
|
||||||
@ -11898,6 +11902,9 @@ class StubGenerator: public StubCodeGenerator {
|
|||||||
public:
|
public:
|
||||||
StubGenerator(CodeBuffer* code, StubGenBlobId blob_id) : StubCodeGenerator(code, blob_id) {
|
StubGenerator(CodeBuffer* code, StubGenBlobId blob_id) : StubCodeGenerator(code, blob_id) {
|
||||||
switch(blob_id) {
|
switch(blob_id) {
|
||||||
|
case preuniverse_id:
|
||||||
|
generate_preuniverse_stubs();
|
||||||
|
break;
|
||||||
case initial_id:
|
case initial_id:
|
||||||
generate_initial_stubs();
|
generate_initial_stubs();
|
||||||
break;
|
break;
|
||||||
|
@ -26,6 +26,13 @@
|
|||||||
#ifndef CPU_ARM_STUBDECLARATIONS_HPP
|
#ifndef CPU_ARM_STUBDECLARATIONS_HPP
|
||||||
#define CPU_ARM_STUBDECLARATIONS_HPP
|
#define CPU_ARM_STUBDECLARATIONS_HPP
|
||||||
|
|
||||||
|
#define STUBGEN_PREUNIVERSE_BLOBS_ARCH_DO(do_stub, \
|
||||||
|
do_arch_blob, \
|
||||||
|
do_arch_entry, \
|
||||||
|
do_arch_entry_init) \
|
||||||
|
do_arch_blob(preuniverse, 0) \
|
||||||
|
|
||||||
|
|
||||||
#define STUBGEN_INITIAL_BLOBS_ARCH_DO(do_stub, \
|
#define STUBGEN_INITIAL_BLOBS_ARCH_DO(do_stub, \
|
||||||
do_arch_blob, \
|
do_arch_blob, \
|
||||||
do_arch_entry, \
|
do_arch_entry, \
|
||||||
|
@ -3126,6 +3126,10 @@ class StubGenerator: public StubCodeGenerator {
|
|||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
// Initialization
|
// Initialization
|
||||||
|
|
||||||
|
void generate_preuniverse_stubs() {
|
||||||
|
// preuniverse stubs are not needed for arm
|
||||||
|
}
|
||||||
|
|
||||||
void generate_initial_stubs() {
|
void generate_initial_stubs() {
|
||||||
// Generates all stubs and initializes the entry points
|
// Generates all stubs and initializes the entry points
|
||||||
|
|
||||||
@ -3201,6 +3205,9 @@ class StubGenerator: public StubCodeGenerator {
|
|||||||
public:
|
public:
|
||||||
StubGenerator(CodeBuffer* code, StubGenBlobId blob_id) : StubCodeGenerator(code, blob_id) {
|
StubGenerator(CodeBuffer* code, StubGenBlobId blob_id) : StubCodeGenerator(code, blob_id) {
|
||||||
switch(blob_id) {
|
switch(blob_id) {
|
||||||
|
case preuniverse_id:
|
||||||
|
generate_preuniverse_stubs();
|
||||||
|
break;
|
||||||
case initial_id:
|
case initial_id:
|
||||||
generate_initial_stubs();
|
generate_initial_stubs();
|
||||||
break;
|
break;
|
||||||
|
@ -26,6 +26,13 @@
|
|||||||
#ifndef CPU_PPC_STUBDECLARATIONS_HPP
|
#ifndef CPU_PPC_STUBDECLARATIONS_HPP
|
||||||
#define CPU_PPC_STUBDECLARATIONS_HPP
|
#define CPU_PPC_STUBDECLARATIONS_HPP
|
||||||
|
|
||||||
|
#define STUBGEN_PREUNIVERSE_BLOBS_ARCH_DO(do_stub, \
|
||||||
|
do_arch_blob, \
|
||||||
|
do_arch_entry, \
|
||||||
|
do_arch_entry_init) \
|
||||||
|
do_arch_blob(preuniverse, 0) \
|
||||||
|
|
||||||
|
|
||||||
#define STUBGEN_INITIAL_BLOBS_ARCH_DO(do_stub, \
|
#define STUBGEN_INITIAL_BLOBS_ARCH_DO(do_stub, \
|
||||||
do_arch_blob, \
|
do_arch_blob, \
|
||||||
do_arch_entry, \
|
do_arch_entry, \
|
||||||
|
@ -4938,6 +4938,10 @@ void generate_lookup_secondary_supers_table_stub() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Initialization
|
// Initialization
|
||||||
|
void generate_preuniverse_stubs() {
|
||||||
|
// preuniverse stubs are not needed for ppc
|
||||||
|
}
|
||||||
|
|
||||||
void generate_initial_stubs() {
|
void generate_initial_stubs() {
|
||||||
// Generates all stubs and initializes the entry points
|
// Generates all stubs and initializes the entry points
|
||||||
|
|
||||||
@ -5067,6 +5071,9 @@ void generate_lookup_secondary_supers_table_stub() {
|
|||||||
public:
|
public:
|
||||||
StubGenerator(CodeBuffer* code, StubGenBlobId blob_id) : StubCodeGenerator(code, blob_id) {
|
StubGenerator(CodeBuffer* code, StubGenBlobId blob_id) : StubCodeGenerator(code, blob_id) {
|
||||||
switch(blob_id) {
|
switch(blob_id) {
|
||||||
|
case preuniverse_id:
|
||||||
|
generate_preuniverse_stubs();
|
||||||
|
break;
|
||||||
case initial_id:
|
case initial_id:
|
||||||
generate_initial_stubs();
|
generate_initial_stubs();
|
||||||
break;
|
break;
|
||||||
|
@ -26,6 +26,13 @@
|
|||||||
#ifndef CPU_RISCV_STUBDECLARATIONS_HPP
|
#ifndef CPU_RISCV_STUBDECLARATIONS_HPP
|
||||||
#define CPU_RISCV_STUBDECLARATIONS_HPP
|
#define CPU_RISCV_STUBDECLARATIONS_HPP
|
||||||
|
|
||||||
|
#define STUBGEN_PREUNIVERSE_BLOBS_ARCH_DO(do_stub, \
|
||||||
|
do_arch_blob, \
|
||||||
|
do_arch_entry, \
|
||||||
|
do_arch_entry_init) \
|
||||||
|
do_arch_blob(preuniverse, 0) \
|
||||||
|
|
||||||
|
|
||||||
#define STUBGEN_INITIAL_BLOBS_ARCH_DO(do_stub, \
|
#define STUBGEN_INITIAL_BLOBS_ARCH_DO(do_stub, \
|
||||||
do_arch_blob, \
|
do_arch_blob, \
|
||||||
do_arch_entry, \
|
do_arch_entry, \
|
||||||
|
@ -6660,6 +6660,10 @@ static const int64_t right_3_bits = right_n_bits(3);
|
|||||||
#undef __
|
#undef __
|
||||||
|
|
||||||
// Initialization
|
// Initialization
|
||||||
|
void generate_preuniverse_stubs() {
|
||||||
|
// preuniverse stubs are not needed for riscv
|
||||||
|
}
|
||||||
|
|
||||||
void generate_initial_stubs() {
|
void generate_initial_stubs() {
|
||||||
// Generate initial stubs and initializes the entry points
|
// Generate initial stubs and initializes the entry points
|
||||||
|
|
||||||
@ -6815,6 +6819,9 @@ static const int64_t right_3_bits = right_n_bits(3);
|
|||||||
public:
|
public:
|
||||||
StubGenerator(CodeBuffer* code, StubGenBlobId blob_id) : StubCodeGenerator(code, blob_id) {
|
StubGenerator(CodeBuffer* code, StubGenBlobId blob_id) : StubCodeGenerator(code, blob_id) {
|
||||||
switch(blob_id) {
|
switch(blob_id) {
|
||||||
|
case preuniverse_id:
|
||||||
|
generate_preuniverse_stubs();
|
||||||
|
break;
|
||||||
case initial_id:
|
case initial_id:
|
||||||
generate_initial_stubs();
|
generate_initial_stubs();
|
||||||
break;
|
break;
|
||||||
|
@ -26,6 +26,13 @@
|
|||||||
#ifndef CPU_S390_STUBDECLARATIONS_HPP
|
#ifndef CPU_S390_STUBDECLARATIONS_HPP
|
||||||
#define CPU_S390_STUBDECLARATIONS_HPP
|
#define CPU_S390_STUBDECLARATIONS_HPP
|
||||||
|
|
||||||
|
#define STUBGEN_PREUNIVERSE_BLOBS_ARCH_DO(do_stub, \
|
||||||
|
do_arch_blob, \
|
||||||
|
do_arch_entry, \
|
||||||
|
do_arch_entry_init) \
|
||||||
|
do_arch_blob(preuniverse, 0) \
|
||||||
|
|
||||||
|
|
||||||
#define STUBGEN_INITIAL_BLOBS_ARCH_DO(do_stub, \
|
#define STUBGEN_INITIAL_BLOBS_ARCH_DO(do_stub, \
|
||||||
do_arch_blob, \
|
do_arch_blob, \
|
||||||
do_arch_entry, \
|
do_arch_entry, \
|
||||||
|
@ -3283,6 +3283,10 @@ class StubGenerator: public StubCodeGenerator {
|
|||||||
return start;
|
return start;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void generate_preuniverse_stubs() {
|
||||||
|
// preuniverse stubs are not needed for s390
|
||||||
|
}
|
||||||
|
|
||||||
void generate_initial_stubs() {
|
void generate_initial_stubs() {
|
||||||
// Generates all stubs and initializes the entry points.
|
// Generates all stubs and initializes the entry points.
|
||||||
|
|
||||||
@ -3418,6 +3422,9 @@ class StubGenerator: public StubCodeGenerator {
|
|||||||
public:
|
public:
|
||||||
StubGenerator(CodeBuffer* code, StubGenBlobId blob_id) : StubCodeGenerator(code, blob_id) {
|
StubGenerator(CodeBuffer* code, StubGenBlobId blob_id) : StubCodeGenerator(code, blob_id) {
|
||||||
switch(blob_id) {
|
switch(blob_id) {
|
||||||
|
case preuniverse_id:
|
||||||
|
generate_preuniverse_stubs();
|
||||||
|
break;
|
||||||
case initial_id:
|
case initial_id:
|
||||||
generate_initial_stubs();
|
generate_initial_stubs();
|
||||||
break;
|
break;
|
||||||
|
@ -26,6 +26,13 @@
|
|||||||
#ifndef CPU_X86_STUBDECLARATIONS_HPP
|
#ifndef CPU_X86_STUBDECLARATIONS_HPP
|
||||||
#define CPU_X86_STUBDECLARATIONS_HPP
|
#define CPU_X86_STUBDECLARATIONS_HPP
|
||||||
|
|
||||||
|
#define STUBGEN_PREUNIVERSE_BLOBS_ARCH_DO(do_stub, \
|
||||||
|
do_arch_blob, \
|
||||||
|
do_arch_entry, \
|
||||||
|
do_arch_entry_init) \
|
||||||
|
do_arch_blob(preuniverse, 500) \
|
||||||
|
|
||||||
|
|
||||||
#define STUBGEN_INITIAL_BLOBS_ARCH_DO(do_stub, \
|
#define STUBGEN_INITIAL_BLOBS_ARCH_DO(do_stub, \
|
||||||
do_arch_blob, \
|
do_arch_blob, \
|
||||||
do_arch_entry, \
|
do_arch_entry, \
|
||||||
|
@ -4049,6 +4049,11 @@ void StubGenerator::create_control_words() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Initialization
|
// Initialization
|
||||||
|
void generate_preuniverse_stubs() {
|
||||||
|
// atomic calls
|
||||||
|
StubRoutines::_fence_entry = generate_orderaccess_fence();
|
||||||
|
}
|
||||||
|
|
||||||
void StubGenerator::generate_initial_stubs() {
|
void StubGenerator::generate_initial_stubs() {
|
||||||
// Generates all stubs and initializes the entry points
|
// Generates all stubs and initializes the entry points
|
||||||
|
|
||||||
@ -4074,9 +4079,6 @@ void StubGenerator::generate_initial_stubs() {
|
|||||||
// is referenced by megamorphic call
|
// is referenced by megamorphic call
|
||||||
StubRoutines::_catch_exception_entry = generate_catch_exception();
|
StubRoutines::_catch_exception_entry = generate_catch_exception();
|
||||||
|
|
||||||
// atomic calls
|
|
||||||
StubRoutines::_fence_entry = generate_orderaccess_fence();
|
|
||||||
|
|
||||||
// platform dependent
|
// platform dependent
|
||||||
StubRoutines::x86::_get_previous_sp_entry = generate_get_previous_sp();
|
StubRoutines::x86::_get_previous_sp_entry = generate_get_previous_sp();
|
||||||
|
|
||||||
@ -4344,6 +4346,9 @@ void StubGenerator::generate_compiler_stubs() {
|
|||||||
|
|
||||||
StubGenerator::StubGenerator(CodeBuffer* code, StubGenBlobId blob_id) : StubCodeGenerator(code, blob_id) {
|
StubGenerator::StubGenerator(CodeBuffer* code, StubGenBlobId blob_id) : StubCodeGenerator(code, blob_id) {
|
||||||
switch(blob_id) {
|
switch(blob_id) {
|
||||||
|
case preuniverse_id:
|
||||||
|
generate_preuniverse_stubs();
|
||||||
|
break;
|
||||||
case initial_id:
|
case initial_id:
|
||||||
generate_initial_stubs();
|
generate_initial_stubs();
|
||||||
break;
|
break;
|
||||||
|
@ -26,6 +26,13 @@
|
|||||||
#ifndef CPU_ZERO_STUBDECLARATIONS_HPP
|
#ifndef CPU_ZERO_STUBDECLARATIONS_HPP
|
||||||
#define CPU_ZERO_STUBDECLARATIONS_HPP
|
#define CPU_ZERO_STUBDECLARATIONS_HPP
|
||||||
|
|
||||||
|
#define STUBGEN_PREUNIVERSE_BLOBS_ARCH_DO(do_stub, \
|
||||||
|
do_arch_blob, \
|
||||||
|
do_arch_entry, \
|
||||||
|
do_arch_entry_init) \
|
||||||
|
do_arch_blob(preuniverse, 0) \
|
||||||
|
|
||||||
|
|
||||||
#define STUBGEN_INITIAL_BLOBS_ARCH_DO(do_stub, \
|
#define STUBGEN_INITIAL_BLOBS_ARCH_DO(do_stub, \
|
||||||
do_arch_blob, \
|
do_arch_blob, \
|
||||||
do_arch_entry, \
|
do_arch_entry, \
|
||||||
|
@ -178,6 +178,10 @@ class StubGenerator: public StubCodeGenerator {
|
|||||||
StubRoutines::_oop_arraycopy;
|
StubRoutines::_oop_arraycopy;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void generate_preuniverse_stubs() {
|
||||||
|
// preuniverse stubs are not needed for zero
|
||||||
|
}
|
||||||
|
|
||||||
void generate_initial_stubs() {
|
void generate_initial_stubs() {
|
||||||
// entry points that exist in all platforms Note: This is code
|
// entry points that exist in all platforms Note: This is code
|
||||||
// that could be shared among different platforms - however the
|
// that could be shared among different platforms - however the
|
||||||
@ -214,6 +218,9 @@ class StubGenerator: public StubCodeGenerator {
|
|||||||
public:
|
public:
|
||||||
StubGenerator(CodeBuffer* code, StubGenBlobId blob_id) : StubCodeGenerator(code, blob_id) {
|
StubGenerator(CodeBuffer* code, StubGenBlobId blob_id) : StubCodeGenerator(code, blob_id) {
|
||||||
switch(blob_id) {
|
switch(blob_id) {
|
||||||
|
case preuniverse_id:
|
||||||
|
generate_preuniverse_stubs();
|
||||||
|
break;
|
||||||
case initial_id:
|
case initial_id:
|
||||||
generate_initial_stubs();
|
generate_initial_stubs();
|
||||||
break;
|
break;
|
||||||
|
@ -68,6 +68,7 @@ void compilationPolicy_init();
|
|||||||
void codeCache_init();
|
void codeCache_init();
|
||||||
void VM_Version_init();
|
void VM_Version_init();
|
||||||
void icache_init2();
|
void icache_init2();
|
||||||
|
void preuniverse_stubs_init();
|
||||||
void initial_stubs_init();
|
void initial_stubs_init();
|
||||||
|
|
||||||
jint universe_init(); // depends on codeCache_init and initial_stubs_init
|
jint universe_init(); // depends on codeCache_init and initial_stubs_init
|
||||||
@ -129,6 +130,8 @@ jint init_globals() {
|
|||||||
codeCache_init();
|
codeCache_init();
|
||||||
VM_Version_init(); // depends on codeCache_init for emitting code
|
VM_Version_init(); // depends on codeCache_init for emitting code
|
||||||
icache_init2(); // depends on VM_Version for choosing the mechanism
|
icache_init2(); // depends on VM_Version for choosing the mechanism
|
||||||
|
// initialize stubs needed before we can init the universe
|
||||||
|
preuniverse_stubs_init();
|
||||||
// stub routines in initial blob are referenced by later generated code
|
// stub routines in initial blob are referenced by later generated code
|
||||||
initial_stubs_init();
|
initial_stubs_init();
|
||||||
// stack overflow exception blob is referenced by the interpreter
|
// stack overflow exception blob is referenced by the interpreter
|
||||||
|
@ -175,12 +175,13 @@
|
|||||||
// Stub Generator Blobs and Stubs Overview
|
// Stub Generator Blobs and Stubs Overview
|
||||||
//
|
//
|
||||||
// StubGenerator stubs do not require their own individual blob. They
|
// StubGenerator stubs do not require their own individual blob. They
|
||||||
// are generated in batches into one of four distinct BufferBlobs:
|
// are generated in batches into one of five distinct BufferBlobs:
|
||||||
//
|
//
|
||||||
// 1) Initial stubs
|
// 1) PreUniverse stubs
|
||||||
// 2) Continuation stubs
|
// 2) Initial stubs
|
||||||
// 3) Compiler stubs
|
// 3) Continuation stubs
|
||||||
// 4) Final stubs
|
// 4) Compiler stubs
|
||||||
|
// 5) Final stubs
|
||||||
//
|
//
|
||||||
// Creation of each successive BufferBlobs is staged to ensure that
|
// Creation of each successive BufferBlobs is staged to ensure that
|
||||||
// specific VM subsystems required by those stubs are suitably
|
// specific VM subsystems required by those stubs are suitably
|
||||||
@ -268,6 +269,7 @@
|
|||||||
// For example,
|
// For example,
|
||||||
//
|
//
|
||||||
// enum platform_dependent_constants {
|
// enum platform_dependent_constants {
|
||||||
|
// _preuniverse_stubs_code_size = 500,
|
||||||
// _initial_stubs_code_size = 10000,
|
// _initial_stubs_code_size = 10000,
|
||||||
// _continuation_stubs_code_size = 2000,
|
// _continuation_stubs_code_size = 2000,
|
||||||
// . . .
|
// . . .
|
||||||
@ -501,6 +503,10 @@
|
|||||||
|
|
||||||
#include CPU_HEADER(stubDeclarations)
|
#include CPU_HEADER(stubDeclarations)
|
||||||
|
|
||||||
|
#ifndef STUBGEN_PREUNIVERSE_BLOBS_ARCH_DO
|
||||||
|
#error "Arch-specific directory failed to declare required initial stubs and entries"
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef STUBGEN_INITIAL_BLOBS_ARCH_DO
|
#ifndef STUBGEN_INITIAL_BLOBS_ARCH_DO
|
||||||
#error "Arch-specific directory failed to declare required initial stubs and entries"
|
#error "Arch-specific directory failed to declare required initial stubs and entries"
|
||||||
#endif
|
#endif
|
||||||
@ -533,6 +539,20 @@
|
|||||||
// stubs within the correct blob and locate entry declarations
|
// stubs within the correct blob and locate entry declarations
|
||||||
// immediately after their associated stub declaration.
|
// immediately after their associated stub declaration.
|
||||||
|
|
||||||
|
#define STUBGEN_PREUNIVERSE_BLOBS_DO(do_blob, end_blob, \
|
||||||
|
do_stub, \
|
||||||
|
do_entry, do_entry_init, \
|
||||||
|
do_entry_array, \
|
||||||
|
do_arch_blob, \
|
||||||
|
do_arch_entry, do_arch_entry_init) \
|
||||||
|
do_blob(preuniverse) \
|
||||||
|
do_stub(preuniverse, fence) \
|
||||||
|
do_entry(preuniverse, fence, fence_entry, fence_entry) \
|
||||||
|
/* merge in stubs and entries declared in arch header */ \
|
||||||
|
STUBGEN_PREUNIVERSE_BLOBS_ARCH_DO(do_stub, do_arch_blob, \
|
||||||
|
do_arch_entry, do_arch_entry_init) \
|
||||||
|
end_blob(preuniverse) \
|
||||||
|
|
||||||
#define STUBGEN_INITIAL_BLOBS_DO(do_blob, end_blob, \
|
#define STUBGEN_INITIAL_BLOBS_DO(do_blob, end_blob, \
|
||||||
do_stub, \
|
do_stub, \
|
||||||
do_entry, do_entry_init, \
|
do_entry, do_entry_init, \
|
||||||
@ -550,8 +570,6 @@
|
|||||||
do_stub(initial, catch_exception) \
|
do_stub(initial, catch_exception) \
|
||||||
do_entry(initial, catch_exception, catch_exception_entry, \
|
do_entry(initial, catch_exception, catch_exception_entry, \
|
||||||
catch_exception_entry) \
|
catch_exception_entry) \
|
||||||
do_stub(initial, fence) \
|
|
||||||
do_entry(initial, fence, fence_entry, fence_entry) \
|
|
||||||
do_stub(initial, atomic_add) \
|
do_stub(initial, atomic_add) \
|
||||||
do_entry(initial, atomic_add, atomic_add_entry, atomic_add_entry) \
|
do_entry(initial, atomic_add, atomic_add_entry, atomic_add_entry) \
|
||||||
do_stub(initial, atomic_xchg) \
|
do_stub(initial, atomic_xchg) \
|
||||||
@ -1012,6 +1030,12 @@
|
|||||||
do_entry_array, \
|
do_entry_array, \
|
||||||
do_arch_blob, \
|
do_arch_blob, \
|
||||||
do_arch_entry, do_arch_entry_init) \
|
do_arch_entry, do_arch_entry_init) \
|
||||||
|
STUBGEN_PREUNIVERSE_BLOBS_DO(do_blob, end_blob, \
|
||||||
|
do_stub, \
|
||||||
|
do_entry, do_entry_init, \
|
||||||
|
do_entry_array, \
|
||||||
|
do_arch_blob, \
|
||||||
|
do_arch_entry, do_arch_entry_init) \
|
||||||
STUBGEN_INITIAL_BLOBS_DO(do_blob, end_blob, \
|
STUBGEN_INITIAL_BLOBS_DO(do_blob, end_blob, \
|
||||||
do_stub, \
|
do_stub, \
|
||||||
do_entry, do_entry_init, \
|
do_entry, do_entry_init, \
|
||||||
|
@ -220,6 +220,14 @@ static BufferBlob* initialize_stubs(StubGenBlobId blob_id,
|
|||||||
const char* buffer_name,
|
const char* buffer_name,
|
||||||
const char* assert_msg) {
|
const char* assert_msg) {
|
||||||
ResourceMark rm;
|
ResourceMark rm;
|
||||||
|
if (code_size == 0) {
|
||||||
|
LogTarget(Info, stubs) lt;
|
||||||
|
if (lt.is_enabled()) {
|
||||||
|
LogStream ls(lt);
|
||||||
|
ls.print_cr("%s\t not generated", buffer_name);
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
}
|
||||||
TraceTime timer(timer_msg, TRACETIME_LOG(Info, startuptime));
|
TraceTime timer(timer_msg, TRACETIME_LOG(Info, startuptime));
|
||||||
// Add extra space for large CodeEntryAlignment
|
// Add extra space for large CodeEntryAlignment
|
||||||
int size = code_size + CodeEntryAlignment * max_aligned_stubs;
|
int size = code_size + CodeEntryAlignment * max_aligned_stubs;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user