RFR: Fix incorrect ifdef INCLUDE_SHENANDOAHGC
Aleksey Shipilev
shade at redhat.com
Tue Jun 12 07:12:58 UTC 2018
AArch64 (and possibly x86_32) build fails with:
/pool/buildbot/slaves/sobornost/shenandoah-jdkX/build/src/hotspot/cpu/aarch64/aarch64.ad:9430:8:
error: ‘class MacroAssembler’ has no member named ‘shenandoah_write_barrier’
__ shenandoah_write_barrier(d);
The reason is incorrect usage of INCLUDE_SHENANDOAHGC in some places, and missing header declaration.
Fixed by:
diff -r 0ccf50d8fa91 src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp
--- a/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp Mon Jun 11 16:08:42 2018 +0200
+++ b/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp Tue Jun 12 09:09:59 2018 +0200
@@ -4065,11 +4065,11 @@
// Used for storing NULLs.
void MacroAssembler::store_heap_oop_null(Address dst) {
access_store_at(T_OBJECT, IN_HEAP, dst, noreg, noreg, noreg);
}
-#ifdef INCLUDE_SHENANDOAHGC
+#if INCLUDE_SHENANDOAHGC
void MacroAssembler::shenandoah_write_barrier(Register dst) {
assert(UseShenandoahGC && (ShenandoahWriteBarrier || ShenandoahStoreValEnqueueBarrier), "Should
be enabled");
assert(dst != rscratch1, "need rscratch1");
assert(dst != rscratch2, "need rscratch2");
diff -r 0ccf50d8fa91 src/hotspot/cpu/aarch64/macroAssembler_aarch64.hpp
--- a/src/hotspot/cpu/aarch64/macroAssembler_aarch64.hpp Mon Jun 11 16:08:42 2018 +0200
+++ b/src/hotspot/cpu/aarch64/macroAssembler_aarch64.hpp Tue Jun 12 09:09:59 2018 +0200
@@ -25,10 +25,11 @@
#ifndef CPU_AARCH64_VM_MACROASSEMBLER_AARCH64_HPP
#define CPU_AARCH64_VM_MACROASSEMBLER_AARCH64_HPP
#include "asm/assembler.hpp"
+#include "utilities/macros.hpp"
// MacroAssembler extends Assembler by frequently used macros.
//
// Instructions for which a 'better' code sequence exists depending
// on arguments should also go in here.
@@ -792,10 +793,14 @@
void store_check(Register obj); // store check for obj - register is destroyed
afterwards
void store_check(Register obj, Address dst); // same as above, dst is exact store location
(reg. is destroyed)
void resolve_jobject(Register value, Register thread, Register tmp);
+#if INCLUDE_SHENANDOAHGC
+ void shenandoah_write_barrier(Register dst);
+#endif
+
// oop manipulations
void load_klass(Register dst, Register src);
void store_klass(Register dst, Register src);
void cmp_klass(Register oop, Register trial_klass, Register tmp);
diff -r 0ccf50d8fa91 src/hotspot/cpu/x86/macroAssembler_x86.cpp
--- a/src/hotspot/cpu/x86/macroAssembler_x86.cpp Mon Jun 11 16:08:42 2018 +0200
+++ b/src/hotspot/cpu/x86/macroAssembler_x86.cpp Tue Jun 12 09:09:59 2018 +0200
@@ -50,11 +50,11 @@
#include "utilities/macros.hpp"
#include "crc32c.h"
#ifdef COMPILER2
#include "opto/intrinsicnode.hpp"
#endif
-#ifdef INCLUDE_SHENANDOAHGC
+#if INCLUDE_SHENANDOAHGC
#include "gc/shenandoah/shenandoahBarrierSetAssembler.hpp"
#endif
#ifdef PRODUCT
#define BLOCK_COMMENT(str) /* nothing */
diff -r 0ccf50d8fa91 src/hotspot/cpu/x86/macroAssembler_x86.hpp
--- a/src/hotspot/cpu/x86/macroAssembler_x86.hpp Mon Jun 11 16:08:42 2018 +0200
+++ b/src/hotspot/cpu/x86/macroAssembler_x86.hpp Tue Jun 12 09:09:59 2018 +0200
@@ -295,13 +295,13 @@
// jobjects
void clear_jweak_tag(Register possibly_jweak);
void resolve_jobject(Register value, Register thread, Register tmp);
-#ifdef INCLUDE_SHENANDOAHGC
+#if INCLUDE_SHENANDOAHGC
void shenandoah_write_barrier(Register dst);
-#endif // INCLUDE_SHENANDOAHGC
+#endif
// C 'boolean' to Java boolean: x == 0 ? 0 : 1
void c2bool(Register x);
// C++ bool manipulation
Thanks,
-Aleksey
More information about the shenandoah-dev
mailing list