Skip to content
Permalink
Browse files
8252685: APIs that require JavaThread should take JavaThread arguments
Reviewed-by: coleenp, sspitsyn, kvn, iklam
  • Loading branch information
David Holmes committed May 17, 2021
1 parent 2066f49 commit 02f895c
Show file tree
Hide file tree
Showing 120 changed files with 507 additions and 521 deletions.
@@ -69,7 +69,6 @@ jint CodeInstaller::pd_next_offset(NativeInstruction* inst, jint pc_offset, JVMC
void CodeInstaller::pd_patch_OopConstant(int pc_offset, JVMCIObject constant, JVMCI_TRAPS) {
address pc = _instructions->start() + pc_offset;
Handle obj = jvmci_env()->asConstant(constant, JVMCI_CHECK);
Thread* THREAD = Thread::current();
jobject value = JNIHandles::make_local(obj());
if (jvmci_env()->get_HotSpotObjectConstantImpl_compressed(constant)) {
#ifdef _LP64
@@ -40,7 +40,7 @@

void MethodHandles::invoke_target(Method* method, TRAPS) {

JavaThread *thread = THREAD->as_Java_thread();
JavaThread *thread = THREAD;
ZeroStack *stack = thread->zero_stack();
InterpreterFrame *frame = thread->top_zero_frame()->as_interpreter_frame();
interpreterState istate = frame->interpreter_state();
@@ -57,7 +57,7 @@ void MethodHandles::invoke_target(Method* method, TRAPS) {

oop MethodHandles::popFromStack(TRAPS) {

JavaThread *thread = THREAD->as_Java_thread();
JavaThread *thread = THREAD;
InterpreterFrame *frame = thread->top_zero_frame()->as_interpreter_frame();
interpreterState istate = frame->interpreter_state();
intptr_t* topOfStack = istate->stack();
@@ -93,7 +93,7 @@ void MethodHandles::teardown_frame_anchor(JavaThread* thread) {
}

void MethodHandles::throw_AME(Klass* rcvr, Method* interface_method, TRAPS) {
JavaThread* thread = THREAD->as_Java_thread();
JavaThread* thread = THREAD;
bool has_last_Java_frame = thread->has_last_Java_frame();
if (!has_last_Java_frame) {
setup_frame_anchor(thread);
@@ -105,7 +105,7 @@ void MethodHandles::throw_AME(Klass* rcvr, Method* interface_method, TRAPS) {
}

void MethodHandles::throw_NPE(TRAPS) {
JavaThread* thread = THREAD->as_Java_thread();
JavaThread* thread = THREAD;
bool has_last_Java_frame = thread->has_last_Java_frame();
if (!has_last_Java_frame) {
setup_frame_anchor(thread);
@@ -118,7 +118,7 @@ void MethodHandles::throw_NPE(TRAPS) {

int MethodHandles::method_handle_entry_invokeBasic(Method* method, intptr_t UNUSED, TRAPS) {

JavaThread *thread = THREAD->as_Java_thread();
JavaThread *thread = THREAD;
InterpreterFrame *frame = thread->top_zero_frame()->as_interpreter_frame();
interpreterState istate = frame->interpreter_state();
intptr_t* topOfStack = istate->stack();
@@ -156,7 +156,7 @@ int MethodHandles::method_handle_entry_linkToStaticOrSpecial(Method* method, int
}

int MethodHandles::method_handle_entry_linkToInterface(Method* method, intptr_t UNUSED, TRAPS) {
JavaThread *thread = THREAD->as_Java_thread();
JavaThread *thread = THREAD;
InterpreterFrame *frame = thread->top_zero_frame()->as_interpreter_frame();
interpreterState istate = frame->interpreter_state();

@@ -200,7 +200,7 @@ int MethodHandles::method_handle_entry_linkToInterface(Method* method, intptr_t
}

int MethodHandles::method_handle_entry_linkToVirtual(Method* method, intptr_t UNUSED, TRAPS) {
JavaThread *thread = THREAD->as_Java_thread();
JavaThread *thread = THREAD;

InterpreterFrame *frame = thread->top_zero_frame()->as_interpreter_frame();
interpreterState istate = frame->interpreter_state();
@@ -46,7 +46,7 @@ int ZeroStack::suggest_size(Thread *thread) const {
}

void ZeroStack::handle_overflow(TRAPS) {
JavaThread *thread = THREAD->as_Java_thread();
JavaThread *thread = THREAD;

// Set up the frame anchor if it isn't already
bool has_last_Java_frame = thread->has_last_Java_frame();
@@ -72,7 +72,7 @@ class StubGenerator: public StubCodeGenerator {
intptr_t* parameters,
int parameter_words,
TRAPS) {
JavaThread *thread = THREAD->as_Java_thread();
JavaThread *thread = THREAD;
ZeroStack *stack = thread->zero_stack();

// Make sure we have no pending exceptions
@@ -316,7 +316,7 @@ EntryFrame *EntryFrame::build(const intptr_t* parameters,
JavaCallWrapper* call_wrapper,
TRAPS) {

ZeroStack *stack = THREAD->as_Java_thread()->zero_stack();
ZeroStack *stack = THREAD->zero_stack();
stack->overflow_check(header_words + parameter_words, CHECK_NULL);

stack->push(0); // next_frame, filled in later
@@ -108,7 +108,7 @@ InterpreterCodelet* ZeroInterpreter::codelet_containing(address pc) {
fixup_after_potential_safepoint()

int ZeroInterpreter::normal_entry(Method* method, intptr_t UNUSED, TRAPS) {
JavaThread *thread = THREAD->as_Java_thread();
JavaThread *thread = THREAD;

// Allocate and initialize our frame.
InterpreterFrame *frame = InterpreterFrame::build(method, CHECK_0);
@@ -122,7 +122,7 @@ int ZeroInterpreter::normal_entry(Method* method, intptr_t UNUSED, TRAPS) {
}

int ZeroInterpreter::Reference_get_entry(Method* method, intptr_t UNUSED, TRAPS) {
JavaThread* thread = THREAD->as_Java_thread();
JavaThread* thread = THREAD;
ZeroStack* stack = thread->zero_stack();
intptr_t* topOfStack = stack->sp();

@@ -170,7 +170,7 @@ intptr_t narrow(BasicType type, intptr_t result) {


void ZeroInterpreter::main_loop(int recurse, TRAPS) {
JavaThread *thread = THREAD->as_Java_thread();
JavaThread *thread = THREAD;
ZeroStack *stack = thread->zero_stack();

// If we are entering from a deopt we may need to call
@@ -304,7 +304,7 @@ int ZeroInterpreter::native_entry(Method* method, intptr_t UNUSED, TRAPS) {
// Make sure method is native and not abstract
assert(method->is_native() && !method->is_abstract(), "should be");

JavaThread *thread = THREAD->as_Java_thread();
JavaThread *thread = THREAD;
ZeroStack *stack = thread->zero_stack();

// Allocate and initialize our frame
@@ -551,7 +551,7 @@ int ZeroInterpreter::native_entry(Method* method, intptr_t UNUSED, TRAPS) {
}

int ZeroInterpreter::getter_entry(Method* method, intptr_t UNUSED, TRAPS) {
JavaThread* thread = THREAD->as_Java_thread();
JavaThread* thread = THREAD;
// Drop into the slow path if we need a safepoint check
if (SafepointMechanism::should_process(thread)) {
return normal_entry(method, 0, THREAD);
@@ -639,7 +639,7 @@ int ZeroInterpreter::getter_entry(Method* method, intptr_t UNUSED, TRAPS) {
}

int ZeroInterpreter::setter_entry(Method* method, intptr_t UNUSED, TRAPS) {
JavaThread* thread = THREAD->as_Java_thread();
JavaThread* thread = THREAD;
// Drop into the slow path if we need a safepoint check
if (SafepointMechanism::should_process(thread)) {
return normal_entry(method, 0, THREAD);
@@ -730,7 +730,7 @@ int ZeroInterpreter::setter_entry(Method* method, intptr_t UNUSED, TRAPS) {
}

int ZeroInterpreter::empty_entry(Method* method, intptr_t UNUSED, TRAPS) {
JavaThread *thread = THREAD->as_Java_thread();
JavaThread *thread = THREAD;
ZeroStack *stack = thread->zero_stack();

// Drop into the slow path if we need a safepoint check
@@ -746,7 +746,7 @@ int ZeroInterpreter::empty_entry(Method* method, intptr_t UNUSED, TRAPS) {
}

InterpreterFrame *InterpreterFrame::build(Method* const method, TRAPS) {
JavaThread *thread = THREAD->as_Java_thread();
JavaThread *thread = THREAD;
ZeroStack *stack = thread->zero_stack();

// Calculate the size of the frame we'll build, including
@@ -821,7 +821,7 @@ InterpreterFrame *InterpreterFrame::build(Method* const method, TRAPS) {
}

InterpreterFrame *InterpreterFrame::build(int size, TRAPS) {
ZeroStack *stack = THREAD->as_Java_thread()->zero_stack();
ZeroStack *stack = THREAD->zero_stack();

int size_in_words = size >> LogBytesPerWord;
assert(size_in_words * wordSize == size, "unaligned");
@@ -2542,7 +2542,7 @@ bool os::find(address addr, outputStream* st) {
// on, e.g., Win32.
void
os::os_exception_wrapper(java_call_t f, JavaValue* value, const methodHandle& method,
JavaCallArguments* args, Thread* thread) {
JavaCallArguments* args, JavaThread* thread) {
f(value, method, args, thread);
}

@@ -2221,7 +2221,7 @@ bool os::find(address addr, outputStream* st) {
// on, e.g., Win32.
void os::os_exception_wrapper(java_call_t f, JavaValue* value,
const methodHandle& method, JavaCallArguments* args,
Thread* thread) {
JavaThread* thread) {
f(value, method, args, thread);
}

@@ -4764,7 +4764,7 @@ bool os::find(address addr, outputStream* st) {
// on, e.g., Win32.
void
os::os_exception_wrapper(java_call_t f, JavaValue* value, const methodHandle& method,
JavaCallArguments* args, Thread* thread) {
JavaCallArguments* args, JavaThread* thread) {
f(value, method, args, thread);
}

@@ -59,7 +59,7 @@
# include <stdio.h>
# include <intrin.h>

void os::os_exception_wrapper(java_call_t f, JavaValue* value, const methodHandle& method, JavaCallArguments* args, Thread* thread) {
void os::os_exception_wrapper(java_call_t f, JavaValue* value, const methodHandle& method, JavaCallArguments* args, JavaThread* thread) {
f(value, method, args, thread);
}

@@ -70,7 +70,7 @@ JNIEXPORT
extern LONG WINAPI topLevelExceptionFilter(_EXCEPTION_POINTERS* );

// Install a win32 structured exception handler around thread.
void os::os_exception_wrapper(java_call_t f, JavaValue* value, const methodHandle& method, JavaCallArguments* args, Thread* thread) {
void os::os_exception_wrapper(java_call_t f, JavaValue* value, const methodHandle& method, JavaCallArguments* args, JavaThread* thread) {
__try {

#ifndef AMD64
@@ -900,13 +900,13 @@ class ArchiveBuilder::CDSMapLogger : AllStatic {

#define _LOG_PREFIX PTR_FORMAT ": @@ %-17s %d"

static void write_klass(Klass* k, address runtime_dest, const char* type_name, int bytes, Thread* THREAD) {
ResourceMark rm(THREAD);
static void write_klass(Klass* k, address runtime_dest, const char* type_name, int bytes, Thread* current) {
ResourceMark rm(current);
log_debug(cds, map)(_LOG_PREFIX " %s",
p2i(runtime_dest), type_name, bytes, k->external_name());
}
static void write_method(Method* m, address runtime_dest, const char* type_name, int bytes, Thread* THREAD) {
ResourceMark rm(THREAD);
static void write_method(Method* m, address runtime_dest, const char* type_name, int bytes, Thread* current) {
ResourceMark rm(current);
log_debug(cds, map)(_LOG_PREFIX " %s",
p2i(runtime_dest), type_name, bytes, m->external_name());
}
@@ -916,7 +916,7 @@ class ArchiveBuilder::CDSMapLogger : AllStatic {
address last_obj_base = address(region->base());
address last_obj_end = address(region->base());
address region_end = address(region->end());
Thread* THREAD = Thread::current();
Thread* current = Thread::current();
for (int i = 0; i < src_objs->objs()->length(); i++) {
SourceObjInfo* src_info = src_objs->at(i);
address src = src_info->orig_obj();
@@ -930,25 +930,25 @@ class ArchiveBuilder::CDSMapLogger : AllStatic {

switch (type) {
case MetaspaceObj::ClassType:
write_klass((Klass*)src, runtime_dest, type_name, bytes, THREAD);
write_klass((Klass*)src, runtime_dest, type_name, bytes, current);
break;
case MetaspaceObj::ConstantPoolType:
write_klass(((ConstantPool*)src)->pool_holder(),
runtime_dest, type_name, bytes, THREAD);
runtime_dest, type_name, bytes, current);
break;
case MetaspaceObj::ConstantPoolCacheType:
write_klass(((ConstantPoolCache*)src)->constant_pool()->pool_holder(),
runtime_dest, type_name, bytes, THREAD);
runtime_dest, type_name, bytes, current);
break;
case MetaspaceObj::MethodType:
write_method((Method*)src, runtime_dest, type_name, bytes, THREAD);
write_method((Method*)src, runtime_dest, type_name, bytes, current);
break;
case MetaspaceObj::ConstMethodType:
write_method(((ConstMethod*)src)->method(), runtime_dest, type_name, bytes, THREAD);
write_method(((ConstMethod*)src)->method(), runtime_dest, type_name, bytes, current);
break;
case MetaspaceObj::SymbolType:
{
ResourceMark rm(THREAD);
ResourceMark rm(current);
Symbol* s = (Symbol*)src;
log_debug(cds, map)(_LOG_PREFIX " %s", p2i(runtime_dest), type_name, bytes,
s->as_quoted_ascii());
@@ -522,9 +522,9 @@ bool ClassListParser::is_matching_cp_entry(constantPoolHandle &pool, int cp_inde
return true;
}

void ClassListParser::resolve_indy(Thread* current, Symbol* class_name_symbol) {
void ClassListParser::resolve_indy(JavaThread* current, Symbol* class_name_symbol) {
ExceptionMark em(current);
Thread* THREAD = current; // For exception macros.
JavaThread* THREAD = current; // For exception macros.
ClassListParser::resolve_indy_impl(class_name_symbol, THREAD);
if (HAS_PENDING_EXCEPTION) {
ResourceMark rm(current);
@@ -116,7 +116,7 @@ class ClassListParser : public StackObj {
void print_actual_interfaces(InstanceKlass *ik);
bool is_matching_cp_entry(constantPoolHandle &pool, int cp_index, TRAPS);

void resolve_indy(Thread* current, Symbol* class_name_symbol);
void resolve_indy(JavaThread* current, Symbol* class_name_symbol);
void resolve_indy_impl(Symbol* class_name_symbol, TRAPS);
bool parse_one_line();
Klass* load_current_class(Symbol* class_name_symbol, TRAPS);
@@ -685,7 +685,7 @@ static void verify_the_heap(Klass* k, const char* which) {
// Note: if a ArchivedKlassSubGraphInfoRecord contains non-early classes, and JVMTI
// ClassFileLoadHook is enabled, it's possible for this class to be dynamically replaced. In
// this case, we will not load the ArchivedKlassSubGraphInfoRecord and will clear its roots.
void HeapShared::resolve_classes(Thread* THREAD) {
void HeapShared::resolve_classes(JavaThread* THREAD) {
if (!is_mapped()) {
return; // nothing to do
}
@@ -701,7 +701,7 @@ void HeapShared::resolve_classes(Thread* THREAD) {
}

void HeapShared::resolve_classes_for_subgraphs(ArchivableStaticFieldInfo fields[],
int num, Thread* THREAD) {
int num, JavaThread* THREAD) {
for (int i = 0; i < num; i++) {
ArchivableStaticFieldInfo* info = &fields[i];
TempNewSymbol klass_name = SymbolTable::new_symbol(info->klass_name);
@@ -711,7 +711,7 @@ void HeapShared::resolve_classes_for_subgraphs(ArchivableStaticFieldInfo fields[
}
}

void HeapShared::resolve_classes_for_subgraph_of(Klass* k, Thread* THREAD) {
void HeapShared::resolve_classes_for_subgraph_of(Klass* k, JavaThread* THREAD) {
ExceptionMark em(THREAD);
const ArchivedKlassSubGraphInfoRecord* record =
resolve_or_init_classes_for_subgraph_of(k, /*do_init=*/false, THREAD);
@@ -723,7 +723,7 @@ void HeapShared::resolve_classes_for_subgraph_of(Klass* k, Thread* THREAD) {
}
}

void HeapShared::initialize_from_archived_subgraph(Klass* k, Thread* THREAD) {
void HeapShared::initialize_from_archived_subgraph(Klass* k, JavaThread* THREAD) {
if (!is_mapped()) {
return; // nothing to do
}
@@ -275,8 +275,8 @@ class HeapShared: AllStatic {
static void copy_roots();

static void resolve_classes_for_subgraphs(ArchivableStaticFieldInfo fields[],
int num, Thread* THREAD);
static void resolve_classes_for_subgraph_of(Klass* k, Thread* THREAD);
int num, JavaThread* THREAD);
static void resolve_classes_for_subgraph_of(Klass* k, JavaThread* THREAD);
static void clear_archived_roots_of(Klass* k);
static const ArchivedKlassSubGraphInfoRecord*
resolve_or_init_classes_for_subgraph_of(Klass* k, bool do_init, TRAPS);
@@ -386,8 +386,8 @@ class HeapShared: AllStatic {

inline static bool is_archived_object(oop p) NOT_CDS_JAVA_HEAP_RETURN_(false);

static void resolve_classes(Thread* THREAD) NOT_CDS_JAVA_HEAP_RETURN;
static void initialize_from_archived_subgraph(Klass* k, Thread* THREAD) NOT_CDS_JAVA_HEAP_RETURN;
static void resolve_classes(JavaThread* THREAD) NOT_CDS_JAVA_HEAP_RETURN;
static void initialize_from_archived_subgraph(Klass* k, JavaThread* THREAD) NOT_CDS_JAVA_HEAP_RETURN;

// NarrowOops stored in the CDS archive may use a different encoding scheme
// than CompressedOops::{base,shift} -- see FileMapInfo::map_heap_regions_impl.

1 comment on commit 02f895c

@openjdk-notifier
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.