Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
63 commits
Select commit Hold shift + click to select a range
05eaf78
8390212: (dc) On AIX, DatagramChannel.join can join IPv4 multicast gr…
dbriemann Aug 20, 2026
c92288e
8390299: Unify *oop type hierarchy with *oopDesc type hierarchy
xmas92 Aug 20, 2026
0353036
8389941: JvmtiEnv::FollowReferences has unreachable code in jvmtiEnv.cpp
Sovtouch Aug 20, 2026
91c6a33
8388873: C2: AddHF is wrongly reassociated using AddNode::Ideal
Aug 20, 2026
19525c7
8389932: C2: Merge bits F and G in VerifyIterativeGVN together
hgqxjj Aug 20, 2026
b082324
8372384: Remove unused local variable in MacroAssembler::sha512_updat…
Aug 20, 2026
7bc0154
8390451: [Valhalla] Array re-materialization loses properties
TobiHartmann Aug 20, 2026
30e5083
8387539: Shenandoah: Nonsensical values for consumption acceleration
Aug 20, 2026
855b743
8387469: Shenandoah: GC logs should show end-to-end cycle time and he…
shipilev Aug 20, 2026
1530af5
8390613: Missing class in loadable descriptors causes AOT crash
iklam Aug 20, 2026
09868aa
8390481: stop002 test should no longer call Thread.interrupted() to w…
plummercj Aug 20, 2026
e296cef
8390485: Migrate appcds/aotCache/ tests to AOT workflow
Aug 20, 2026
3245eb2
8390310: Shenandoah: Abbreviated cycles should allow promotion-in-place
Aug 20, 2026
6f2087e
8389610: ARM32: native method wrapper unlocks a stale oop after GC re…
antonvoznia Aug 21, 2026
0e10d3c
8390499: Clean up suspicious bailout in ciMethod::find_monomorphic_ta…
merykitty Aug 21, 2026
bb40c33
8387204: C2 VectorAPI: logic cones wrongly treats masked XorV
Aug 21, 2026
93fa770
8390143: [lworld] PPC64 TemplateTable::getfield_or_static() with `may…
reinrich Aug 21, 2026
bc15e53
8390314: Linux: "assert(current_limit <= upper_bound) failed: invaria…
jerboaa Aug 21, 2026
544c2b6
8328078: C2 compilation bailout with "too many D-U pinch points"
TobiHartmann Aug 21, 2026
eb7d9a9
8390386: [Linux] Systemd tests failing on systemd newer than 257
jerboaa Aug 21, 2026
6212c80
8390505: jlink is not thread safe when used via ToolProvider API
Aug 21, 2026
8ffe6c9
8390288: The javax/swing/JTable/7124218/SelectEditTableCell.java fail…
Aug 21, 2026
afc87f4
8390545: java/awt/Mixing/AWT_Mixing/JPopupMenuOverlapping.java fails …
Aug 21, 2026
7cb780a
8381223: Improve Java ML-DSA Performance
Aug 21, 2026
c5c690a
8389756: JFR: premises for exclusive access to previous epoch are ins…
Aug 21, 2026
87e84f6
8390353: AllocateHeapAt option can cause a HotSpot crash
raneashay Aug 21, 2026
8545f91
8324189: Test javax/sound/sampled/Clip/SetPositionHang.java timed out
Aug 21, 2026
46f0e2b
8388476: [Valhalla] C2 incorrectly eliminates store to flat array
rwestrel Aug 21, 2026
eef3c8a
8390257: New test runtime/valhalla/inlinetypes/NPEInPreviewTest.java …
coleenp Aug 21, 2026
c52c076
8390309: Remove deprecated comment() method from nsk.share.Log
shivshah-oracle Aug 21, 2026
4849063
8359208: Remove runtime/signal/TestSigstop.java since it is always sk…
shivshah-oracle Aug 21, 2026
5ad2eb8
8389110: java/nio/file/FileStore/Basic.java testEnumerateFileStores f…
shivshah-oracle Aug 21, 2026
26842a3
8390391: [perf] InlineSmallCode should be increased for APX mode
Aug 21, 2026
b5328c1
8389474: Class of inlined objects may not be AOT-initialized
iklam Aug 21, 2026
f720c36
8390266: Avoid static for the template function in headers
Aug 21, 2026
3dcc9e7
8389968: (dc) DatagramChannel.open() attempts to disable IPPROTO_IPV6…
Aug 22, 2026
3e3b06d
8390370: [Valhalla] PPC64 C1 LIR_Assembler::emit_alloc_array() doesn'…
reinrich Aug 22, 2026
921ea73
8390614: RISC-V: Support VerifyOops for AOT caching stub and code
DingliZhang Aug 23, 2026
d1562ff
8370914: C2: Reimplement Type::meet and Type::join
merykitty Aug 23, 2026
1929061
8390650: Unsafe access with constant zero offset triggers assert in EA
TobiHartmann Aug 24, 2026
a7977b8
8357381: C2: assert(false) failed: should not be here
TobiHartmann Aug 24, 2026
235cc88
8390459: [Valhalla] compiler/valhalla/inlinetypes/TestArrays.java#id6…
TobiHartmann Aug 24, 2026
ff9c82f
8389390: [Valhalla] Compile::adjust_flat_array_access_aliases asserts…
rwestrel Aug 24, 2026
781c83c
8390654: Test gc/TestUseGCOverheadLimit.java#G1 fails on linux-arm32
Aug 24, 2026
4f0898a
8373613: PEXT/PDEP intrinsics cause performance regression on AMD pre…
Auties00 Aug 24, 2026
f7a46b7
8387969: RISC-V: Optimize zero-result integer cmoves with Zicond
zifeihan Aug 24, 2026
661b121
8308183: Add a small ServerSocket based test to verify the fix
dlwldnjs1009 Aug 24, 2026
01177de
8390647: Clean up the functions made available in libzip
jaikiran Aug 24, 2026
62a166a
8389452: Inherited @Contended annotation corrupts concrete value clas…
caspernorrbin Aug 24, 2026
1088f16
8388404: Initialize nm_offset
caspernorrbin Aug 24, 2026
f587450
8390109: [REDO] Add the hotspot compiler testlibrary to the test-image
mhaessig Aug 24, 2026
dcd4a61
8389140: VarHandle CAS should not initialize value class
johan-sjolen Aug 24, 2026
fd943b7
8390824: ProblemList container tests intolerant of non-writable /tmp
Domest0s Aug 24, 2026
60c4ae6
8390914: [leyden] add missing relocations for addresses recorded in A…
Aug 24, 2026
8158dfe
8390550: C2 hit MemLimit when run with -Xcomp -XX:VerifyIterativeGVN=…
Aug 24, 2026
372ce08
8390917: NullPointerException test fails with new message
coleenp Aug 24, 2026
0cec602
8366417: Use InstanceKlass instead of Klass in jfieldIDWorkaround
coleenp Aug 24, 2026
3cc0be6
8390603: Remove obsolete thread transition states
dean-long Aug 24, 2026
9255c10
8381640: Enable UseAPX as a product feature
Aug 24, 2026
fd59694
8388310: AtomicReferenceFieldUpdater does not perform a substitutabil…
liach Aug 25, 2026
31b9dad
8390334: Remove deprecated println() method from nsk.share.Log
shivshah-oracle Aug 25, 2026
fd96983
8390807: Reduce run time of test AOTCodeFlags.java
iklam Aug 25, 2026
9e0a501
Merge branch 'sapmachine' into pr-jdk-28+13
RealCLanger Sep 4, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 13 additions & 1 deletion make/Main.gmk
Original file line number Diff line number Diff line change
Expand Up @@ -751,6 +751,18 @@ $(eval $(call SetupTarget, test-image-lib, \
DEPS := build-test-lib, \
))

$(eval $(call SetupTarget, build-hotspot-compiler-testlibrary, \
MAKEFILE := hotspot/test/BuildCompilerTestlibrary, \
TARGET := build-hotspot-compiler-testlibrary, \
DEPS := exploded-image build-test-lib, \
))

$(eval $(call SetupTarget, test-image-hotspot-compiler-testlibrary, \
MAKEFILE := hotspot/test/BuildCompilerTestlibrary, \
TARGET := test-image-hotspot-compiler-testlibrary, \
DEPS := build-hotspot-compiler-testlibrary, \
))

$(eval $(call SetupTarget, build-test-setup-aot, \
MAKEFILE := test/BuildTestSetupAOT, \
DEPS := interim-langtools exploded-image, \
Expand Down Expand Up @@ -1303,7 +1315,7 @@ all-docs-bundles: docs-jdk-bundles docs-javase-bundles docs-reference-bundles
test-image: prepare-test-image test-image-jdk-jtreg-native \
test-image-demos-jdk test-image-libtest-jtreg-native \
test-image-lib test-image-lib-native \
test-image-setup-aot
test-image-setup-aot test-image-hotspot-compiler-testlibrary

ifneq ($(JVM_TEST_IMAGE_TARGETS), )
# If JVM_TEST_IMAGE_TARGETS is externally defined, use it instead of the
Expand Down
76 changes: 76 additions & 0 deletions make/hotspot/test/BuildCompilerTestlibrary.gmk
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
#
# Copyright (c) 2026, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation. Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
#

include MakeFileStart.gmk

################################################################################
# This file builds the Hotspot compiler testlibrary.
################################################################################

include CopyFiles.gmk
include JavaCompilation.gmk

###############################################################################

COMPILER_TESTLIBRARY_BASEDIR := $(TOPDIR)/test/hotspot/jtreg/compiler/lib
COMPILER_TESTLIBRARY_SUPPORT := $(SUPPORT_OUTPUTDIR)/test/compiler-testlibrary
COMPILER_TESTLIBRARY_JAR := $(COMPILER_TESTLIBRARY_SUPPORT)/compiler-testlibrary.jar
TEST_LIB_SUPPORT := $(SUPPORT_OUTPUTDIR)/test/lib
WB_CP := $(TEST_LIB_SUPPORT)/wb_classes
TEST_LIB_CP := $(TEST_LIB_SUPPORT)/test-lib_classes

$(eval $(call SetupJavaCompilation, BUILD_COMPILER_TESTLIBRARY, \
TARGET_RELEASE := $(TARGET_RELEASE_NEWJDK_UPGRADED), \
SRC := $(COMPILER_TESTLIBRARY_BASEDIR), \
BIN := $(COMPILER_TESTLIBRARY_SUPPORT)/classes, \
JAR := $(COMPILER_TESTLIBRARY_JAR), \
JAVAC_FLAGS := -cp $(WB_CP) \
-cp $(TEST_LIB_CP) \
--add-exports java.base/jdk.internal.math=ALL-UNNAMED, \
))

TARGETS += $(BUILD_COMPILER_TESTLIBRARY)

build-hotspot-compiler-testlibrary: $(TARGETS)

################################################################################
# Targets for building test-image.
################################################################################

# Copy to hotspot jtreg test image
$(eval $(call SetupCopyFiles, COPY_COMPILER_TESTLIBRARY, \
DEST := $(TEST_IMAGE_DIR)/compiler-testlibrary, \
FILES := $(COMPILER_TESTLIBRARY_JAR), \
))

IMAGE_TARGETS += $(COPY_COMPILER_TESTLIBRARY)

test-image-hotspot-compiler-testlibrary: $(IMAGE_TARGETS)

.PHONY: build-hotspot-compiler-testlibrary test-image-hotspot-compiler-testlibrary

################################################################################

include MakeFileEnd.gmk
2 changes: 1 addition & 1 deletion src/hotspot/cpu/aarch64/downcallLinker_aarch64.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -308,7 +308,7 @@ void DowncallLinker::StubGenerator::generate() {
// Restore cpu control state after JNI call
__ restore_cpu_control_state_after_jni(rscratch1, tmp1);

__ mov(tmp1, _thread_in_native_trans);
__ mov(tmp1, _thread_in_vm);
__ strw(tmp1, Address(rthread, JavaThread::thread_state_offset()));

// Force this write out before the read below
Expand Down
8 changes: 5 additions & 3 deletions src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1972,7 +1972,9 @@ void MacroAssembler::verify_secondary_supers_table(Register r_sub_klass,
mov(r1, r_sub_klass); // r1 <- r4
mov(r2, /*expected*/rscratch1); // r2 <- r8
mov(r3, result); // r3 <- r5
mov(r4, (address)("mismatch")); // r4 <- const
const char* msg = "mismatch";
const char* str = (code_section()->scratch_emit()) ? msg : AOTCodeCache::add_C_string(msg);
lea(r4, ExternalAddress((address)str)); // r4 <- const
rt_call(CAST_FROM_FN_PTR(address, Klass::on_secondary_supers_verification_failure), rscratch2);
should_not_reach_here();
}
Expand Down Expand Up @@ -2043,7 +2045,7 @@ void MacroAssembler::_verify_oop(Register reg, const char* s, const char* file,
stp(rscratch2, lr, Address(pre(sp, -2 * wordSize)));

mov(r0, reg);
movptr(rscratch1, (uintptr_t)(address)b);
lea(rscratch1, ExternalAddress((address)b));

// call indirectly to solve generation ordering problem
lea(rscratch2, RuntimeAddress(StubRoutines::verify_oop_subroutine_entry_address()));
Expand Down Expand Up @@ -2094,7 +2096,7 @@ void MacroAssembler::_verify_oop_addr(Address addr, const char* s, const char* f
} else {
ldr(r0, addr);
}
movptr(rscratch1, (uintptr_t)(address)b);
lea(rscratch1, ExternalAddress((address)b));

// call indirectly to solve generation ordering problem
lea(rscratch2, RuntimeAddress(StubRoutines::verify_oop_subroutine_entry_address()));
Expand Down
9 changes: 1 addition & 8 deletions src/hotspot/cpu/aarch64/sharedRuntime_aarch64.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2047,14 +2047,7 @@ nmethod* SharedRuntime::generate_native_wrapper(MacroAssembler* masm,

Label safepoint_in_progress, safepoint_in_progress_done;

// Switch thread to "native transition" state before reading the synchronization state.
// This additional state is necessary because reading and testing the synchronization
// state is not atomic w.r.t. GC, as this scenario demonstrates:
// Java thread A, in _thread_in_native state, loads _not_synchronized and is preempted.
// VM thread changes sync state to synchronizing and suspends threads for GC.
// Thread A is resumed to finish this native method, but doesn't block here since it
// didn't see any synchronization is progress, and escapes.
__ mov(rscratch1, _thread_in_native_trans);
__ mov(rscratch1, _thread_in_vm);

__ strw(rscratch1, Address(rthread, JavaThread::thread_state_offset()));

Expand Down
4 changes: 2 additions & 2 deletions src/hotspot/cpu/aarch64/stubGenerator_aarch64.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -827,7 +827,7 @@ class StubGenerator: public StubCodeGenerator {
assert(frame::arg_reg_save_area_bytes == 0, "not expecting frame reg save area");
#endif
BLOCK_COMMENT("call MacroAssembler::debug");
__ mov(rscratch1, CAST_FROM_FN_PTR(address, MacroAssembler::debug64));
__ lea(rscratch1, RuntimeAddress(CAST_FROM_FN_PTR(address, MacroAssembler::debug64)));
__ blr(rscratch1);
__ hlt(0);

Expand Down Expand Up @@ -12826,7 +12826,7 @@ class StubGenerator: public StubCodeGenerator {
// Native caller has no idea how to handle exceptions,
// so we just crash here. Up to callee to catch exceptions.
__ verify_oop(r0);
__ movptr(rscratch1, CAST_FROM_FN_PTR(uint64_t, UpcallLinker::handle_uncaught_exception));
__ lea(rscratch1, RuntimeAddress(CAST_FROM_FN_PTR(address, UpcallLinker::handle_uncaught_exception)));
__ blr(rscratch1);
__ should_not_reach_here();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1422,7 +1422,7 @@ address TemplateInterpreterGenerator::generate_native_entry(bool synchronized) {
__ verify_sve_vector_length();

// change thread state
__ mov(rscratch1, _thread_in_native_trans);
__ mov(rscratch1, _thread_in_vm);
__ lea(rscratch2, Address(rthread, JavaThread::thread_state_offset()));
__ stlrw(rscratch1, rscratch2);

Expand Down
7 changes: 5 additions & 2 deletions src/hotspot/cpu/arm/sharedRuntime_arm.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1263,9 +1263,9 @@ nmethod* SharedRuntime::generate_native_wrapper(MacroAssembler* masm,
__ c2bool(R0);
}

// Do a safepoint check while thread is in transition state
// Do a safepoint check
Label call_safepoint_runtime, return_to_java;
__ mov(Rtemp, _thread_in_native_trans);
__ mov(Rtemp, _thread_in_vm);
__ str_32(Rtemp, Address(Rthread, JavaThread::thread_state_offset()));

// make sure the store is observed before reading the SafepointSynchronize state and further mem refs
Expand All @@ -1292,6 +1292,9 @@ nmethod* SharedRuntime::generate_native_wrapper(MacroAssembler* masm,

Label slow_unlock, unlock_done;
if (method->is_synchronized()) {
// Get locked oop from the handle we passed to jni
__ ldr(sync_obj, Address(sync_handle));

log_trace(fastlock)("SharedRuntime unlock fast");
__ fast_unlock(sync_obj, R2 /* t1 */, tmp /* t2 */, Rtemp /* t3 */,
7 /* savemask */, slow_unlock);
Expand Down
2 changes: 1 addition & 1 deletion src/hotspot/cpu/arm/templateInterpreterGenerator_arm.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1014,7 +1014,7 @@ address TemplateInterpreterGenerator::generate_native_entry(bool synchronized) {
}

// Do safepoint check
__ mov(Rtemp, _thread_in_native_trans);
__ mov(Rtemp, _thread_in_vm);
__ str_32(Rtemp, Address(Rthread, JavaThread::thread_state_offset()));

// Force this write out before the read below
Expand Down
2 changes: 1 addition & 1 deletion src/hotspot/cpu/ppc/c1_LIRAssembler_ppc.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2250,7 +2250,7 @@ void LIR_Assembler::emit_alloc_obj(LIR_OpAllocObj* op) {

void LIR_Assembler::emit_alloc_array(LIR_OpAllocArray* op) {
LP64_ONLY( __ extsw(op->len()->as_register(), op->len()->as_register()); )
if (UseSlowPath ||
if (UseSlowPath || op->always_slow_path() ||
(!UseFastNewObjectArray && (is_reference_type(op->type()))) ||
(!UseFastNewTypeArray && (!is_reference_type(op->type())))) {
__ b(*op->stub()->entry());
Expand Down
2 changes: 1 addition & 1 deletion src/hotspot/cpu/ppc/downcallLinker_ppc.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -297,7 +297,7 @@ void DowncallLinker::StubGenerator::generate() {
Label L_after_reguard;

if (_needs_transition) {
__ li(tmp, _thread_in_native_trans);
__ li(tmp, _thread_in_vm);
__ release();
__ stw(tmp, in_bytes(JavaThread::thread_state_offset()), R16_thread);
if (!UseSystemMemoryBarrier) {
Expand Down
1 change: 0 additions & 1 deletion src/hotspot/cpu/ppc/macroAssembler_ppc_sha.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -613,7 +613,6 @@ void MacroAssembler::sha512_update_sha_state(const Register state,
VectorRegister ini_e = VR14;
VectorRegister ini_g = VR16;
static const VectorRegister inis[] = {ini_a, ini_c, ini_e, ini_g};
static const int total_inis = sizeof(inis)/sizeof(VectorRegister);

Label state_save_aligned, after_state_save_aligned;

Expand Down
21 changes: 4 additions & 17 deletions src/hotspot/cpu/ppc/sharedRuntime_ppc.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2617,21 +2617,8 @@ nmethod *SharedRuntime::generate_native_wrapper(MacroAssembler *masm,
}

// Publish thread state
// --------------------------------------------------------------------------

// Switch thread to "native transition" state before reading the
// synchronization state. This additional state is necessary because reading
// and testing the synchronization state is not atomic w.r.t. GC, as this
// scenario demonstrates:
// - Java thread A, in _thread_in_native state, loads _not_synchronized
// and is preempted.
// - VM thread changes sync state to synchronizing and suspends threads
// for GC.
// - Thread A is resumed to finish this native method, but doesn't block
// here since it didn't see any synchronization in progress, and escapes.

// Transition from _thread_in_native to _thread_in_native_trans.
__ li(R0, _thread_in_native_trans);
// Transition from _thread_in_native to _thread_in_vm.
__ li(R0, _thread_in_vm);
__ release();
// TODO: PPC port assert(4 == JavaThread::sz_thread_state(), "unexpected field size");
__ stw(R0, thread_(thread_state));
Expand Down Expand Up @@ -2682,10 +2669,10 @@ nmethod *SharedRuntime::generate_native_wrapper(MacroAssembler *masm,
// Publish thread state.
// --------------------------------------------------------------------------

// Thread state is thread_in_native_trans. Any safepoint blocking has
// Thread state is _thread_in_vm. Any safepoint blocking has
// already happened so we can now change state to _thread_in_Java.

// Transition from _thread_in_native_trans to _thread_in_Java.
// Transition from _thread_in_vm to _thread_in_Java.
__ li(R0, _thread_in_Java);
__ lwsync(); // Acquire safepoint and suspend state, release thread state.
// TODO: PPC port assert(4 == JavaThread::sz_thread_state(), "unexpected field size");
Expand Down
20 changes: 4 additions & 16 deletions src/hotspot/cpu/ppc/templateInterpreterGenerator_ppc.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1484,31 +1484,19 @@ address TemplateInterpreterGenerator::generate_native_entry(bool synchronized) {
// In order for GC to work, don't clear the last_Java_sp until after
// blocking.

//=============================================================================
// Switch thread to "native transition" state before reading the
// synchronization state. This additional state is necessary
// because reading and testing the synchronization state is not
// atomic w.r.t. GC, as this scenario demonstrates: Java thread A,
// in _thread_in_native state, loads _not_synchronized and is
// preempted. VM thread changes sync state to synchronizing and
// suspends threads for GC. Thread A is resumed to finish this
// native method, but doesn't block here since it didn't see any
// synchronization in progress, and escapes.

// We use release_store_fence to update values like the thread state, where
// we don't want the current thread to continue until all our prior memory
// accesses (including the new thread state) are visible to other threads.
__ li(R0/*thread_state*/, _thread_in_native_trans);
__ li(R0/*thread_state*/, _thread_in_vm);
__ release();
__ stw(R0/*thread_state*/, thread_(thread_state));
if (!UseSystemMemoryBarrier) {
__ fence();
}

// Now before we return to java we must look for a current safepoint
// (a new safepoint can not start since we entered native_trans).
// We must check here because a current safepoint could be modifying
// the callers registers right this moment.
// (a new safepoint can not start since we entered _thread_in_vm).
// We must check here because a current safepoint could be in progress.

// Acquire isn't strictly necessary here because of the fence, but
// sync_state is declared to be volatile, so we do it anyway
Expand Down Expand Up @@ -1538,7 +1526,7 @@ address TemplateInterpreterGenerator::generate_native_entry(bool synchronized) {
//=============================================================================
// <<<<<< Back in Interpreter Frame >>>>>

// We are in thread_in_native_trans here and back in the normal
// We are in _thread_in_vm here and back in the normal
// interpreter frame. We don't have to do anything special about
// safepoints and we can switch to Java mode anytime we are ready.

Expand Down
13 changes: 4 additions & 9 deletions src/hotspot/cpu/ppc/templateTable_ppc_64.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2647,10 +2647,12 @@ void TemplateTable::getfield_or_static(int byte_no, bool is_static, RewriteContr
Rscratch = R11_scratch1; // used by load_field_cp_cache_entry
// R12_scratch2 used by load_field_cp_cache_entry

static address field_branch_table[number_of_states],
static address field_rw_branch_table[number_of_states],
field_norw_branch_table[number_of_states],
static_branch_table[number_of_states];

address* branch_table = (is_static || rc == may_not_rewrite) ? static_branch_table : field_branch_table;
address* branch_table = is_static ? static_branch_table :
(rc == may_rewrite ? field_rw_branch_table : field_norw_branch_table);

// Get field offset.
resolve_cache_and_index_for_field(byte_no, Rcache, Rscratch);
Expand Down Expand Up @@ -2698,14 +2700,7 @@ void TemplateTable::getfield_or_static(int byte_no, bool is_static, RewriteContr
#ifdef ASSERT
__ bind(LFlagInvalid);
__ stop("got invalid flag");
#endif

if (!is_static && rc == may_not_rewrite) {
// We reuse the code from is_static. It's jumped to via the table above.
return;
}

#ifdef ASSERT
// __ bind(Lvtos);
address pc_before_fence = __ pc();
__ fence(); // Volatile entry point (one instruction before non-volatile_entry point).
Expand Down
Loading
Loading