Skip to content

Commit 976acdd

Browse files
author
David Holmes
committed
8252406: Introduce Thread::as_Java_thread() convenience function
Reviewed-by: shade, coleenp, kbarrett, dcubed
1 parent 4880226 commit 976acdd

File tree

110 files changed

+360
-456
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

110 files changed

+360
-456
lines changed

src/hotspot/cpu/aarch64/gc/shared/barrierSetNMethod_aarch64.cpp

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ void BarrierSetNMethod::deoptimize(nmethod* nm, address* return_address_ptr) {
101101

102102
frame_pointers_t *new_frame = (frame_pointers_t *)(return_address_ptr - 5);
103103

104-
JavaThread *thread = (JavaThread*)Thread::current();
104+
JavaThread *thread = JavaThread::current();
105105
RegisterMap reg_map(thread, false);
106106
frame frame = thread->last_frame();
107107

@@ -111,14 +111,11 @@ void BarrierSetNMethod::deoptimize(nmethod* nm, address* return_address_ptr) {
111111

112112
LogTarget(Trace, nmethod, barrier) out;
113113
if (out.is_enabled()) {
114-
Thread* thread = Thread::current();
115-
assert(thread->is_Java_thread(), "must be JavaThread");
116-
JavaThread* jth = (JavaThread*) thread;
117114
ResourceMark mark;
118115
log_trace(nmethod, barrier)("deoptimize(nmethod: %s(%p), return_addr: %p, osr: %d, thread: %p(%s), making rsp: %p) -> %p",
119116
nm->method()->name_and_sig_as_C_string(),
120-
nm, *(address *) return_address_ptr, nm->is_osr_method(), jth,
121-
jth->get_thread_name(), frame.sp(), nm->verified_entry_point());
117+
nm, *(address *) return_address_ptr, nm->is_osr_method(), thread,
118+
thread->get_thread_name(), frame.sp(), nm->verified_entry_point());
122119
}
123120

124121
new_frame->sp = frame.sp();

src/hotspot/cpu/x86/gc/shared/barrierSetNMethod_x86.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2018, 2020, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* This code is free software; you can redistribute it and/or modify it
@@ -128,9 +128,7 @@ void BarrierSetNMethod::deoptimize(nmethod* nm, address* return_address_ptr) {
128128

129129
LogTarget(Trace, nmethod, barrier) out;
130130
if (out.is_enabled()) {
131-
Thread* thread = Thread::current();
132-
assert(thread->is_Java_thread(), "must be JavaThread");
133-
JavaThread* jth = (JavaThread*) thread;
131+
JavaThread* jth = JavaThread::current();
134132
ResourceMark mark;
135133
log_trace(nmethod, barrier)("deoptimize(nmethod: %p, return_addr: %p, osr: %d, thread: %p(%s), making rsp: %p) -> %p",
136134
nm, (address *) return_address_ptr, nm->is_osr_method(), jth,

src/hotspot/cpu/zero/frame_zero.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ void frame::patch_pc(Thread* thread, address pc) {
9494
// We borrow this call to set the thread pointer in the interpreter
9595
// state; the hook to set up deoptimized frames isn't supplied it.
9696
assert(pc == NULL, "should be");
97-
get_interpreterState()->set_thread((JavaThread *) thread);
97+
get_interpreterState()->set_thread(thread->as_Java_thread());
9898
}
9999
}
100100

src/hotspot/cpu/zero/methodHandles_zero.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838

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

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

5656
oop MethodHandles::popFromStack(TRAPS) {
5757

58-
JavaThread *thread = (JavaThread *) THREAD;
58+
JavaThread *thread = THREAD->as_Java_thread();
5959
InterpreterFrame *frame = thread->top_zero_frame()->as_interpreter_frame();
6060
interpreterState istate = frame->interpreter_state();
6161
intptr_t* topOfStack = istate->stack();
@@ -70,7 +70,7 @@ oop MethodHandles::popFromStack(TRAPS) {
7070

7171
void MethodHandles::throw_AME(Klass* rcvr, Method* interface_method, TRAPS) {
7272

73-
JavaThread *thread = (JavaThread *) THREAD;
73+
JavaThread *thread = THREAD->as_Java_thread();
7474
// Set up the frame anchor if it isn't already
7575
bool has_last_Java_frame = thread->has_last_Java_frame();
7676
if (!has_last_Java_frame) {
@@ -101,7 +101,7 @@ void MethodHandles::throw_AME(Klass* rcvr, Method* interface_method, TRAPS) {
101101

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

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

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

@@ -172,7 +172,7 @@ int MethodHandles::method_handle_entry_linkToInterface(Method* method, intptr_t
172172
}
173173

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

177177
InterpreterFrame *frame = thread->top_zero_frame()->as_interpreter_frame();
178178
interpreterState istate = frame->interpreter_state();

src/hotspot/cpu/zero/stack_zero.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ int ZeroStack::suggest_size(Thread *thread) const {
4646
}
4747

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

5151
// Set up the frame anchor if it isn't already
5252
bool has_last_Java_frame = thread->has_last_Java_frame();

src/hotspot/cpu/zero/stubGenerator_zero.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2003, 2019, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2003, 2020, Oracle and/or its affiliates. All rights reserved.
33
* Copyright 2007, 2008, 2010, 2015 Red Hat, Inc.
44
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
55
*
@@ -72,7 +72,7 @@ class StubGenerator: public StubCodeGenerator {
7272
intptr_t* parameters,
7373
int parameter_words,
7474
TRAPS) {
75-
JavaThread *thread = (JavaThread *) THREAD;
75+
JavaThread *thread = THREAD->as_Java_thread();
7676
ZeroStack *stack = thread->zero_stack();
7777

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

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

322322
stack->push(0); // next_frame, filled in later

src/hotspot/cpu/zero/zeroInterpreter_zero.cpp

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ InterpreterCodelet* ZeroInterpreter::codelet_containing(address pc) {
106106
fixup_after_potential_safepoint()
107107

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

111111
// Allocate and initialize our frame.
112112
InterpreterFrame *frame = InterpreterFrame::build(method, CHECK_0);
@@ -144,7 +144,7 @@ intptr_t narrow(BasicType type, intptr_t result) {
144144

145145

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

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

280-
JavaThread *thread = (JavaThread *) THREAD;
280+
JavaThread *thread = THREAD->as_Java_thread();
281281
ZeroStack *stack = thread->zero_stack();
282282

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

548548
int ZeroInterpreter::accessor_entry(Method* method, intptr_t UNUSED, TRAPS) {
549-
JavaThread *thread = (JavaThread *) THREAD;
549+
JavaThread *thread = THREAD->as_Java_thread();
550550
ZeroStack *stack = thread->zero_stack();
551551
intptr_t *locals = stack->sp();
552552

@@ -679,7 +679,7 @@ int ZeroInterpreter::accessor_entry(Method* method, intptr_t UNUSED, TRAPS) {
679679
}
680680

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

685685
// Drop into the slow path if we need a safepoint check
@@ -698,7 +698,7 @@ int ZeroInterpreter::empty_entry(Method* method, intptr_t UNUSED, TRAPS) {
698698
// Slots < insert_before will have the same slot number after the insert.
699699
// Slots >= insert_before will become old_slot + num_slots.
700700
void ZeroInterpreter::insert_vmslots(int insert_before, int num_slots, TRAPS) {
701-
JavaThread *thread = (JavaThread *) THREAD;
701+
JavaThread *thread = THREAD->as_Java_thread();
702702
ZeroStack *stack = thread->zero_stack();
703703

704704
// Allocate the space
@@ -712,7 +712,7 @@ void ZeroInterpreter::insert_vmslots(int insert_before, int num_slots, TRAPS) {
712712
}
713713

714714
void ZeroInterpreter::remove_vmslots(int first_slot, int num_slots, TRAPS) {
715-
JavaThread *thread = (JavaThread *) THREAD;
715+
JavaThread *thread = THREAD->as_Java_thread();
716716
ZeroStack *stack = thread->zero_stack();
717717
intptr_t *vmslots = stack->sp();
718718

@@ -745,7 +745,7 @@ JRT_ENTRY(void, ZeroInterpreter::throw_exception(JavaThread* thread,
745745
JRT_END
746746

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

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

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

826826
int size_in_words = size >> LogBytesPerWord;
827827
assert(size_in_words * wordSize == size, "unaligned");

src/hotspot/os/linux/os_linux.cpp

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1040,13 +1040,12 @@ bool os::create_attached_thread(JavaThread* thread) {
10401040
// enabling yellow zone first will crash JVM on SuSE Linux), so there
10411041
// is no gap between the last two virtual memory regions.
10421042

1043-
JavaThread *jt = (JavaThread *)thread;
1044-
address addr = jt->stack_reserved_zone_base();
1043+
address addr = thread->stack_reserved_zone_base();
10451044
assert(addr != NULL, "initialization problem?");
1046-
assert(jt->stack_available(addr) > 0, "stack guard should not be enabled");
1045+
assert(thread->stack_available(addr) > 0, "stack guard should not be enabled");
10471046

10481047
osthread->set_expanding_stack();
1049-
os::Linux::manually_expand_stack(jt, addr);
1048+
os::Linux::manually_expand_stack(thread, addr);
10501049
osthread->clear_expanding_stack();
10511050
}
10521051

@@ -1781,7 +1780,6 @@ void * os::dll_load(const char *filename, char *ebuf, int ebuflen) {
17811780
"'execstack -c <libfile>', or link it with '-z noexecstack'.",
17821781
filename);
17831782

1784-
assert(Thread::current()->is_Java_thread(), "must be Java thread");
17851783
JavaThread *jt = JavaThread::current();
17861784
if (jt->thread_state() != _thread_in_native) {
17871785
// This happens when a compiler thread tries to load a hsdis-<arch>.so file

src/hotspot/os/posix/os_posix.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2073,9 +2073,7 @@ void Parker::park(bool isAbsolute, jlong time) {
20732073
// since we are doing a lock-free update to _counter.
20742074
if (Atomic::xchg(&_counter, 0) > 0) return;
20752075

2076-
Thread* thread = Thread::current();
2077-
assert(thread->is_Java_thread(), "Must be JavaThread");
2078-
JavaThread *jt = (JavaThread *)thread;
2076+
JavaThread *jt = JavaThread::current();
20792077

20802078
// Optional optimization -- avoid state transitions if there's
20812079
// an interrupt pending.
@@ -2120,7 +2118,7 @@ void Parker::park(bool isAbsolute, jlong time) {
21202118
return;
21212119
}
21222120

2123-
OSThreadWaitState osts(thread->osthread(), false /* not Object.wait() */);
2121+
OSThreadWaitState osts(jt->osthread(), false /* not Object.wait() */);
21242122
jt->set_suspend_equivalent();
21252123
// cleared by handle_special_suspend_equivalent_condition() or java_suspend_self()
21262124

src/hotspot/os/windows/os_windows.cpp

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2136,19 +2136,19 @@ int os::signal_wait() {
21362136

21372137
LONG Handle_Exception(struct _EXCEPTION_POINTERS* exceptionInfo,
21382138
address handler) {
2139-
JavaThread* thread = (JavaThread*) Thread::current_or_null();
2139+
Thread* thread = Thread::current_or_null();
21402140
// Save pc in thread
21412141
#ifdef _M_AMD64
21422142
// Do not blow up if no thread info available.
2143-
if (thread) {
2144-
thread->set_saved_exception_pc((address)(DWORD_PTR)exceptionInfo->ContextRecord->Rip);
2143+
if (thread != NULL) {
2144+
thread->as_Java_thread()->set_saved_exception_pc((address)(DWORD_PTR)exceptionInfo->ContextRecord->Rip);
21452145
}
21462146
// Set pc to handler
21472147
exceptionInfo->ContextRecord->Rip = (DWORD64)handler;
21482148
#else
21492149
// Do not blow up if no thread info available.
2150-
if (thread) {
2151-
thread->set_saved_exception_pc((address)(DWORD_PTR)exceptionInfo->ContextRecord->Eip);
2150+
if (thread != NULL) {
2151+
thread->as_Java_thread()->set_saved_exception_pc((address)(DWORD_PTR)exceptionInfo->ContextRecord->Eip);
21522152
}
21532153
// Set pc to handler
21542154
exceptionInfo->ContextRecord->Eip = (DWORD)(DWORD_PTR)handler;
@@ -2477,7 +2477,7 @@ LONG WINAPI topLevelExceptionFilter(struct _EXCEPTION_POINTERS* exceptionInfo) {
24772477
}
24782478

24792479
if (t != NULL && t->is_Java_thread()) {
2480-
JavaThread* thread = (JavaThread*) t;
2480+
JavaThread* thread = t->as_Java_thread();
24812481
bool in_java = thread->thread_state() == _thread_in_Java;
24822482
bool in_native = thread->thread_state() == _thread_in_native;
24832483
bool in_vm = thread->thread_state() == _thread_in_vm;
@@ -2570,7 +2570,6 @@ LONG WINAPI topLevelExceptionFilter(struct _EXCEPTION_POINTERS* exceptionInfo) {
25702570

25712571
if (exception_code == EXCEPTION_IN_PAGE_ERROR) {
25722572
CompiledMethod* nm = NULL;
2573-
JavaThread* thread = (JavaThread*)t;
25742573
if (in_java) {
25752574
CodeBlob* cb = CodeCache::find_blob_unsafe(pc);
25762575
nm = (cb != NULL) ? cb->as_compiled_method_or_null() : NULL;

0 commit comments

Comments
 (0)