--- a/hotspot/.mx.jvmci/suite.py Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/.mx.jvmci/suite.py Thu Dec 24 17:21:09 2015 +0100
@@ -169,6 +169,15 @@
# ------------- JVMCI:HotSpot -------------
+ "jdk.vm.ci.aarch64" : {
+ "subDir" : "src/jdk.vm.ci/share/classes",
+ "sourceDirs" : ["src"],
+ "dependencies" : ["jdk.vm.ci.code"],
+ "checkstyle" : "jdk.vm.ci.service",
+ "javaCompliance" : "1.8",
+ "workingSets" : "JVMCI,AArch64",
+ },
+
"jdk.vm.ci.amd64" : {
"subDir" : "src/jdk.vm.ci/share/classes",
"sourceDirs" : ["src"],
@@ -213,6 +222,21 @@
"workingSets" : "JVMCI,HotSpot",
},
+ "jdk.vm.ci.hotspot.aarch64" : {
+ "subDir" : "src/jdk.vm.ci/share/classes",
+ "sourceDirs" : ["src"],
+ "dependencies" : [
+ "jdk.vm.ci.aarch64",
+ "jdk.vm.ci.hotspot",
+ ],
+ "checkstyle" : "jdk.vm.ci.service",
+ "annotationProcessors" : [
+ "JVMCI_SERVICE_PROCESSOR",
+ ],
+ "javaCompliance" : "1.8",
+ "workingSets" : "JVMCI,HotSpot,AArch64",
+ },
+
"jdk.vm.ci.hotspot.amd64" : {
"subDir" : "src/jdk.vm.ci/share/classes",
"sourceDirs" : ["src"],
@@ -269,6 +293,7 @@
"jdk.vm.ci.inittimer",
"jdk.vm.ci.runtime",
"jdk.vm.ci.common",
+ "jdk.vm.ci.aarch64",
"jdk.vm.ci.amd64",
"jdk.vm.ci.sparc",
],
@@ -288,6 +313,7 @@
"JVMCI_HOTSPOT" : {
"subDir" : "src/jdk.vm.ci/share/classes",
"dependencies" : [
+ "jdk.vm.ci.hotspot.aarch64",
"jdk.vm.ci.hotspot.amd64",
"jdk.vm.ci.hotspot.sparc",
],
@@ -345,9 +371,11 @@
"jdk.vm.ci.inittimer",
"jdk.vm.ci.runtime",
"jdk.vm.ci.common",
+ "jdk.vm.ci.aarch64",
"jdk.vm.ci.amd64",
"jdk.vm.ci.sparc",
"jdk.vm.ci.hotspotvmconfig",
+ "jdk.vm.ci.hotspot.aarch64",
"jdk.vm.ci.hotspot.amd64",
"jdk.vm.ci.hotspot.sparc",
"jdk.vm.ci.options.processor",
--- a/hotspot/make/excludeSrc.make Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/make/excludeSrc.make Thu Dec 24 17:21:09 2015 +0100
@@ -107,8 +107,8 @@
memTracker.cpp nmtDCmd.cpp mallocSiteTable.cpp
endif
-ifneq (,$(findstring $(Platform_arch_model), x86_64, sparc))
- # JVMCI is supported only on x86_64 and SPARC.
+ifneq (,$(findstring $(Platform_arch_model), aarch64, arm_64, sparc, x86_64))
+ # JVMCI is supported
else
INCLUDE_JVMCI := false
endif
--- a/hotspot/make/gensrc/Gensrc-jdk.vm.ci.gmk Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/make/gensrc/Gensrc-jdk.vm.ci.gmk Thu Dec 24 17:21:09 2015 +0100
@@ -57,6 +57,7 @@
PROC_SRC_SUBDIRS := \
jdk.vm.ci.hotspot \
+ jdk.vm.ci.hotspot.aarch64 \
jdk.vm.ci.hotspot.amd64 \
jdk.vm.ci.hotspot.sparc \
jdk.vm.ci.runtime \
--- a/hotspot/src/cpu/aarch64/vm/frame_aarch64.cpp Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/src/cpu/aarch64/vm/frame_aarch64.cpp Thu Dec 24 17:21:09 2015 +0100
@@ -454,11 +454,11 @@
// This is the sp before any possible extension (adapter/locals).
intptr_t* unextended_sp = interpreter_frame_sender_sp();
-#ifdef COMPILER2
+#if defined(COMPILER2) || INCLUDE_JVMCI
if (map->update_map()) {
update_map_with_saved_link(map, (intptr_t**) addr_at(link_offset));
}
-#endif // COMPILER2
+#endif // COMPILER2 || INCLUDE_JVMCI
return frame(sender_sp, unextended_sp, link(), sender_pc());
}
--- a/hotspot/src/cpu/aarch64/vm/globals_aarch64.hpp Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/src/cpu/aarch64/vm/globals_aarch64.hpp Thu Dec 24 17:21:09 2015 +0100
@@ -40,14 +40,7 @@
define_pd_global(bool, TrapBasedNullChecks, false);
define_pd_global(bool, UncommonNullCast, true); // Uncommon-trap NULLs past to check cast
-// See 4827828 for this change. There is no globals_core_i486.hpp. I can't
-// assign a different value for C2 without touching a number of files. Use
-// #ifdef to minimize the change as it's late in Mantis. -- FIXME.
-// c1 doesn't have this problem because the fix to 4858033 assures us
-// the the vep is aligned at CodeEntryAlignment whereas c2 only aligns
-// the uep and the vep doesn't get real alignment but just slops on by
-// only assured that the entry instruction meets the 5 byte size requirement.
-#ifdef COMPILER2
+#if defined(COMPILER2) || INCLUDE_JVMCI
define_pd_global(intx, CodeEntryAlignment, 64);
#else
define_pd_global(intx, CodeEntryAlignment, 16);
--- a/hotspot/src/cpu/aarch64/vm/interp_masm_aarch64.cpp Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/src/cpu/aarch64/vm/interp_masm_aarch64.cpp Thu Dec 24 17:21:09 2015 +0100
@@ -1060,13 +1060,39 @@
bind(skip_receiver_profile);
// The method data pointer needs to be updated to reflect the new target.
+#if INCLUDE_JVMCI
+ if (MethodProfileWidth == 0) {
+ update_mdp_by_constant(mdp, in_bytes(VirtualCallData::virtual_call_data_size()));
+ }
+#else // INCLUDE_JVMCI
update_mdp_by_constant(mdp,
in_bytes(VirtualCallData::
virtual_call_data_size()));
+#endif // INCLUDE_JVMCI
bind(profile_continue);
}
}
+#if INCLUDE_JVMCI
+void InterpreterMacroAssembler::profile_called_method(Register method, Register mdp, Register reg2) {
+ assert_different_registers(method, mdp, reg2);
+ if (ProfileInterpreter && MethodProfileWidth > 0) {
+ Label profile_continue;
+
+ // If no method data exists, go to profile_continue.
+ test_method_data_pointer(mdp, profile_continue);
+
+ Label done;
+ record_item_in_profile_helper(method, mdp, reg2, 0, done, MethodProfileWidth,
+ &VirtualCallData::method_offset, &VirtualCallData::method_count_offset, in_bytes(VirtualCallData::nonprofiled_receiver_count_offset()));
+ bind(done);
+
+ update_mdp_by_constant(mdp, in_bytes(VirtualCallData::virtual_call_data_size()));
+ bind(profile_continue);
+ }
+}
+#endif // INCLUDE_JVMCI
+
// This routine creates a state machine for updating the multi-row
// type profile at a virtual call site (or other type-sensitive bytecode).
// The machine visits each row (of receiver/count) until the receiver type
@@ -1086,14 +1112,36 @@
if (is_virtual_call) {
increment_mdp_data_at(mdp, in_bytes(CounterData::count_offset()));
}
- return;
- }
+#if INCLUDE_JVMCI
+ else if (EnableJVMCI) {
+ increment_mdp_data_at(mdp, in_bytes(ReceiverTypeData::nonprofiled_receiver_count_offset()));
+ }
+#endif // INCLUDE_JVMCI
+ } else {
+ int non_profiled_offset = -1;
+ if (is_virtual_call) {
+ non_profiled_offset = in_bytes(CounterData::count_offset());
+ }
+#if INCLUDE_JVMCI
+ else if (EnableJVMCI) {
+ non_profiled_offset = in_bytes(ReceiverTypeData::nonprofiled_receiver_count_offset());
+ }
+#endif // INCLUDE_JVMCI
- int last_row = VirtualCallData::row_limit() - 1;
+ record_item_in_profile_helper(receiver, mdp, reg2, 0, done, TypeProfileWidth,
+ &VirtualCallData::receiver_offset, &VirtualCallData::receiver_count_offset, non_profiled_offset);
+ }
+}
+
+void InterpreterMacroAssembler::record_item_in_profile_helper(Register item, Register mdp,
+ Register reg2, int start_row, Label& done, int total_rows,
+ OffsetFunction item_offset_fn, OffsetFunction item_count_offset_fn,
+ int non_profiled_offset) {
+ int last_row = total_rows - 1;
assert(start_row <= last_row, "must be work left to do");
- // Test this row for both the receiver and for null.
+ // Test this row for both the item and for null.
// Take any of three different outcomes:
- // 1. found receiver => increment count and goto done
+ // 1. found item => increment count and goto done
// 2. found null => keep looking for case 1, maybe allocate this cell
// 3. found something else => keep looking for cases 1 and 2
// Case 3 is handled by a recursive call.
@@ -1101,55 +1149,56 @@
Label next_test;
bool test_for_null_also = (row == start_row);
- // See if the receiver is receiver[n].
- int recvr_offset = in_bytes(VirtualCallData::receiver_offset(row));
- test_mdp_data_at(mdp, recvr_offset, receiver,
+ // See if the item is item[n].
+ int item_offset = in_bytes(item_offset_fn(row));
+ test_mdp_data_at(mdp, item_offset, item,
(test_for_null_also ? reg2 : noreg),
next_test);
- // (Reg2 now contains the receiver from the CallData.)
+ // (Reg2 now contains the item from the CallData.)
- // The receiver is receiver[n]. Increment count[n].
- int count_offset = in_bytes(VirtualCallData::receiver_count_offset(row));
+ // The item is item[n]. Increment count[n].
+ int count_offset = in_bytes(item_count_offset_fn(row));
increment_mdp_data_at(mdp, count_offset);
b(done);
bind(next_test);
if (test_for_null_also) {
Label found_null;
- // Failed the equality check on receiver[n]... Test for null.
+ // Failed the equality check on item[n]... Test for null.
if (start_row == last_row) {
// The only thing left to do is handle the null case.
- if (is_virtual_call) {
+ if (non_profiled_offset >= 0) {
cbz(reg2, found_null);
- // Receiver did not match any saved receiver and there is no empty row for it.
+ // Item did not match any saved item and there is no empty row for it.
// Increment total counter to indicate polymorphic case.
- increment_mdp_data_at(mdp, in_bytes(CounterData::count_offset()));
+ increment_mdp_data_at(mdp, non_profiled_offset);
b(done);
bind(found_null);
} else {
- cbz(reg2, done);
+ cbnz(reg2, done);
}
break;
}
// Since null is rare, make it be the branch-taken case.
- cbz(reg2,found_null);
+ cbz(reg2, found_null);
// Put all the "Case 3" tests here.
- record_klass_in_profile_helper(receiver, mdp, reg2, start_row + 1, done, is_virtual_call);
+ record_item_in_profile_helper(item, mdp, reg2, start_row + 1, done, total_rows,
+ item_offset_fn, item_count_offset_fn, non_profiled_offset);
- // Found a null. Keep searching for a matching receiver,
+ // Found a null. Keep searching for a matching item,
// but remember that this is an empty (unused) slot.
bind(found_null);
}
}
- // In the fall-through case, we found no matching receiver, but we
- // observed the receiver[start_row] is NULL.
+ // In the fall-through case, we found no matching item, but we
+ // observed the item[start_row] is NULL.
- // Fill in the receiver field and increment the count.
- int recvr_offset = in_bytes(VirtualCallData::receiver_offset(start_row));
- set_mdp_data_at(mdp, recvr_offset, receiver);
- int count_offset = in_bytes(VirtualCallData::receiver_count_offset(start_row));
+ // Fill in the item field and increment the count.
+ int item_offset = in_bytes(item_offset_fn(start_row));
+ set_mdp_data_at(mdp, item_offset, item);
+ int count_offset = in_bytes(item_count_offset_fn(start_row));
mov(reg2, DataLayout::counter_increment);
set_mdp_data_at(mdp, count_offset, reg2);
if (start_row > 0) {
--- a/hotspot/src/cpu/aarch64/vm/interp_masm_aarch64.hpp Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/src/cpu/aarch64/vm/interp_masm_aarch64.hpp Thu Dec 24 17:21:09 2015 +0100
@@ -33,6 +33,7 @@
// This file specializes the assember with interpreter-specific macros
+typedef ByteSize (*OffsetFunction)(uint);
class InterpreterMacroAssembler: public MacroAssembler {
#ifndef CC_INTERP
@@ -248,6 +249,10 @@
void record_klass_in_profile_helper(Register receiver, Register mdp,
Register reg2, int start_row,
Label& done, bool is_virtual_call);
+ void record_item_in_profile_helper(Register item, Register mdp,
+ Register reg2, int start_row, Label& done, int total_rows,
+ OffsetFunction item_offset_fn, OffsetFunction item_count_offset_fn,
+ int non_profiled_offset);
void update_mdp_by_offset(Register mdp_in, int offset_of_offset);
void update_mdp_by_offset(Register mdp_in, Register reg, int offset_of_disp);
@@ -261,6 +266,7 @@
void profile_virtual_call(Register receiver, Register mdp,
Register scratch2,
bool receiver_can_be_null = false);
+ void profile_called_method(Register method, Register mdp, Register reg2) NOT_JVMCI_RETURN;
void profile_ret(Register return_bci, Register mdp);
void profile_null_seen(Register mdp);
void profile_typecheck(Register mdp, Register klass, Register scratch);
--- a/hotspot/src/cpu/aarch64/vm/macroAssembler_aarch64.hpp Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/src/cpu/aarch64/vm/macroAssembler_aarch64.hpp Thu Dec 24 17:21:09 2015 +0100
@@ -417,7 +417,7 @@
#define WRAP(INSN) \
void INSN(Register Rd, Register Rn, Register Rm, Register Ra) { \
- if ((VM_Version::cpu_cpuFeatures() & VM_Version::CPU_A53MAC) && Ra != zr) \
+ if ((VM_Version::features() & VM_Version::CPU_A53MAC) && Ra != zr) \
nop(); \
Assembler::INSN(Rd, Rn, Rm, Ra); \
}
--- a/hotspot/src/cpu/aarch64/vm/nativeInst_aarch64.hpp Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/src/cpu/aarch64/vm/nativeInst_aarch64.hpp Thu Dec 24 17:21:09 2015 +0100
@@ -62,7 +62,6 @@
inline bool is_jump_or_nop();
inline bool is_cond_jump();
bool is_safepoint_poll();
- inline bool is_mov_literal64();
bool is_movz();
bool is_movk();
bool is_sigill_zombie_not_entrant();
@@ -98,6 +97,14 @@
static bool is_ldr_literal_at(address instr);
static bool is_ldrw_to_zr(address instr);
+ static bool is_call_at(address instr) {
+ const uint32_t insn = (*(uint32_t*)instr);
+ return (insn >> 26) == 0b100101;
+ }
+ bool is_call() {
+ return is_call_at(addr_at(0));
+ }
+
static bool maybe_cpool_ref(address instr) {
return is_adrp_at(instr) || is_ldr_literal_at(instr);
}
@@ -157,11 +164,6 @@
inline friend NativeCall* nativeCall_at(address address);
inline friend NativeCall* nativeCall_before(address return_address);
- static bool is_call_at(address instr) {
- const uint32_t insn = (*(uint32_t*)instr);
- return (insn >> 26) == 0b100101;
- }
-
static bool is_call_before(address return_address) {
return is_call_at(return_address - NativeCall::return_address_offset);
}
--- a/hotspot/src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp Thu Dec 24 17:21:09 2015 +0100
@@ -39,10 +39,13 @@
#ifdef COMPILER1
#include "c1/c1_Runtime1.hpp"
#endif
-#ifdef COMPILER2
+#if defined(COMPILER2) || INCLUDE_JVMCI
#include "adfiles/ad_aarch64.hpp"
#include "opto/runtime.hpp"
#endif
+#if INCLUDE_JVMCI
+#include "jvmci/jvmciJavaClasses.hpp"
+#endif
#ifdef BUILTIN_SIM
#include "../../../../../../simulator/simulator.hpp"
@@ -109,14 +112,14 @@
};
OopMap* RegisterSaver::save_live_registers(MacroAssembler* masm, int additional_frame_words, int* total_frame_words, bool save_vectors) {
-#ifdef COMPILER2
+#if defined(COMPILER2) || INCLUDE_JVMCI
if (save_vectors) {
// Save upper half of vector registers
int vect_words = 32 * 8 / wordSize;
additional_frame_words += vect_words;
}
#else
- assert(!save_vectors, "vectors are generated only by C2");
+ assert(!save_vectors, "vectors are generated only by C2 and JVMCI");
#endif
int frame_size_in_bytes = round_to(additional_frame_words*wordSize +
@@ -166,7 +169,7 @@
void RegisterSaver::restore_live_registers(MacroAssembler* masm, bool restore_vectors) {
#ifndef COMPILER2
- assert(!restore_vectors, "vectors are generated only by C2");
+ assert(!restore_vectors, "vectors are generated only by C2 and JVMCI");
#endif
__ pop_CPU_state(restore_vectors);
__ leave();
@@ -547,6 +550,18 @@
// Pre-load the register-jump target early, to schedule it better.
__ ldr(rscratch1, Address(rmethod, in_bytes(Method::from_compiled_offset())));
+#if INCLUDE_JVMCI
+ if (EnableJVMCI) {
+ // check if this call should be routed towards a specific entry point
+ __ ldr(rscratch2, Address(rthread, in_bytes(JavaThread::jvmci_alternate_call_target_offset())));
+ Label no_alternative_target;
+ __ cbz(rscratch2, no_alternative_target);
+ __ mov(rscratch1, rscratch2);
+ __ str(zr, Address(rthread, in_bytes(JavaThread::jvmci_alternate_call_target_offset())));
+ __ bind(no_alternative_target);
+ }
+#endif // INCLUDE_JVMCI
+
// Now generate the shuffle code.
for (int i = 0; i < total_args_passed; i++) {
if (sig_bt[i] == T_VOID) {
@@ -2237,7 +2252,13 @@
// Allocate space for the code
ResourceMark rm;
// Setup code generation tools
- CodeBuffer buffer("deopt_blob", 2048, 1024);
+ int pad = 0;
+#if INCLUDE_JVMCI
+ if (EnableJVMCI) {
+ pad += 512; // Increase the buffer size when compiling for JVMCI
+ }
+#endif
+ CodeBuffer buffer("deopt_blob", 2048+pad, 1024);
MacroAssembler* masm = new MacroAssembler(&buffer);
int frame_size_in_words;
OopMap* map = NULL;
@@ -2294,6 +2315,12 @@
__ b(cont);
int reexecute_offset = __ pc() - start;
+#if defined(INCLUDE_JVMCI) && !defined(COMPILER1)
+ if (EnableJVMCI && UseJVMCICompiler) {
+ // JVMCI does not use this kind of deoptimization
+ __ should_not_reach_here();
+ }
+#endif
// Reexecute case
// return address is the pc describes what bci to do re-execute at
@@ -2304,6 +2331,44 @@
__ movw(rcpool, Deoptimization::Unpack_reexecute); // callee-saved
__ b(cont);
+#if INCLUDE_JVMCI
+ Label after_fetch_unroll_info_call;
+ int implicit_exception_uncommon_trap_offset = 0;
+ int uncommon_trap_offset = 0;
+
+ if (EnableJVMCI) {
+ implicit_exception_uncommon_trap_offset = __ pc() - start;
+
+ __ ldr(lr, Address(rthread, in_bytes(JavaThread::jvmci_implicit_exception_pc_offset())));
+ __ str(zr, Address(rthread, in_bytes(JavaThread::jvmci_implicit_exception_pc_offset())));
+
+ uncommon_trap_offset = __ pc() - start;
+
+ // Save everything in sight.
+ RegisterSaver::save_live_registers(masm, 0, &frame_size_in_words);
+ // fetch_unroll_info needs to call last_java_frame()
+ Label retaddr;
+ __ set_last_Java_frame(sp, noreg, retaddr, rscratch1);
+
+ __ ldrw(c_rarg1, Address(rthread, in_bytes(JavaThread::pending_deoptimization_offset())));
+ __ movw(rscratch1, -1);
+ __ strw(rscratch1, Address(rthread, in_bytes(JavaThread::pending_deoptimization_offset())));
+
+ __ movw(rcpool, (int32_t)Deoptimization::Unpack_reexecute);
+ __ mov(c_rarg0, rthread);
+ __ lea(rscratch1,
+ RuntimeAddress(CAST_FROM_FN_PTR(address,
+ Deoptimization::uncommon_trap)));
+ __ blrt(rscratch1, 2, 0, MacroAssembler::ret_type_integral);
+ __ bind(retaddr);
+ oop_maps->add_gc_map( __ pc()-start, map->deep_copy());
+
+ __ reset_last_Java_frame(false, false);
+
+ __ b(after_fetch_unroll_info_call);
+ } // EnableJVMCI
+#endif // INCLUDE_JVMCI
+
int exception_offset = __ pc() - start;
// Prolog for exception case
@@ -2395,7 +2460,13 @@
__ reset_last_Java_frame(false, true);
- // Load UnrollBlock* into rdi
+#if INCLUDE_JVMCI
+ if (EnableJVMCI) {
+ __ bind(after_fetch_unroll_info_call);
+ }
+#endif
+
+ // Load UnrollBlock* into r5
__ mov(r5, r0);
__ ldrw(rcpool, Address(r5, Deoptimization::UnrollBlock::unpack_kind_offset_in_bytes()));
@@ -2547,7 +2618,12 @@
_deopt_blob = DeoptimizationBlob::create(&buffer, oop_maps, 0, exception_offset, reexecute_offset, frame_size_in_words);
_deopt_blob->set_unpack_with_exception_in_tls_offset(exception_in_tls_offset);
-
+#if INCLUDE_JVMCI
+ if (EnableJVMCI) {
+ _deopt_blob->set_uncommon_trap_offset(uncommon_trap_offset);
+ _deopt_blob->set_implicit_exception_uncommon_trap_offset(implicit_exception_uncommon_trap_offset);
+ }
+#endif
#ifdef BUILTIN_SIM
if (NotifySimulator) {
unsigned char *base = _deopt_blob->code_begin();
@@ -2560,7 +2636,7 @@
return 0;
}
-#ifdef COMPILER2
+#if defined(COMPILER2) || INCLUDE_JVMCI
//------------------------------generate_uncommon_trap_blob--------------------
void SharedRuntime::generate_uncommon_trap_blob() {
// Allocate space for the code
@@ -2943,7 +3019,7 @@
}
-#ifdef COMPILER2
+#if defined(COMPILER2) || INCLUDE_JVMCI
// This is here instead of runtime_x86_64.cpp because it uses SimpleRuntimeFrame
//
//------------------------------generate_exception_blob---------------------------
--- a/hotspot/src/cpu/aarch64/vm/templateInterpreterGenerator_aarch64.cpp Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/src/cpu/aarch64/vm/templateInterpreterGenerator_aarch64.cpp Thu Dec 24 17:21:09 2015 +0100
@@ -225,6 +225,19 @@
__ restore_constant_pool_cache();
__ get_method(rmethod);
+#if INCLUDE_JVMCI
+ // Check if we need to take lock at entry of synchronized method.
+ if (UseJVMCICompiler) {
+ Label L;
+ __ ldr(rscratch1, Address(rthread, Thread::pending_exception_offset()));
+ __ cbz(rscratch1, L);
+ // Clear flag.
+ __ strb(zr, Address(rthread, JavaThread::pending_monitorenter_offset()));
+ // Take lock.
+ lock_method();
+ __ bind(L);
+ }
+#endif
// handle exceptions
{
Label L;
--- a/hotspot/src/cpu/aarch64/vm/vmStructs_aarch64.hpp Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/src/cpu/aarch64/vm/vmStructs_aarch64.hpp Thu Dec 24 17:21:09 2015 +0100
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2014, Red Hat Inc. All rights reserved. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
@@ -30,16 +30,8 @@
// constants required by the Serviceability Agent. This file is
// referenced by vmStructs.cpp.
-#define VM_STRUCTS_CPU(nonstatic_field, static_field, unchecked_nonstatic_field, volatile_nonstatic_field, nonproduct_nonstatic_field, c2_nonstatic_field, unchecked_c1_static_field, unchecked_c2_static_field) \
- \
- /******************************/ \
- /* JavaCallWrapper */ \
- /******************************/ \
- /******************************/ \
- /* JavaFrameAnchor */ \
- /******************************/ \
- volatile_nonstatic_field(JavaFrameAnchor, _last_Java_fp, intptr_t*)
-
+#define VM_STRUCTS_CPU(nonstatic_field, static_field, unchecked_nonstatic_field, volatile_nonstatic_field, nonproduct_nonstatic_field, c2_nonstatic_field, unchecked_c1_static_field, unchecked_c2_static_field) \
+ volatile_nonstatic_field(JavaFrameAnchor, _last_Java_fp, intptr_t*)
#define VM_TYPES_CPU(declare_type, declare_toplevel_type, declare_oop_type, declare_integer_type, declare_unsigned_integer_type, declare_c1_toplevel_type, declare_c2_type, declare_c2_toplevel_type)
--- a/hotspot/src/cpu/aarch64/vm/vm_version_aarch64.cpp Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/src/cpu/aarch64/vm/vm_version_aarch64.cpp Thu Dec 24 17:21:09 2015 +0100
@@ -67,8 +67,6 @@
int VM_Version::_variant;
int VM_Version::_revision;
int VM_Version::_stepping;
-int VM_Version::_cpuFeatures;
-const char* VM_Version::_features_str = "";
static BufferBlob* stub_blob;
static const int stub_size = 550;
@@ -129,7 +127,7 @@
char buf[512];
- _cpuFeatures = auxv;
+ _features = auxv;
int cpu_lines = 0;
if (FILE *f = fopen("/proc/cpuinfo", "r")) {
@@ -154,12 +152,12 @@
}
// Enable vendor specific features
- if (_cpu == CPU_CAVIUM && _variant == 0) _cpuFeatures |= CPU_DMB_ATOMICS;
- if (_cpu == CPU_ARM && (_model == 0xd03 || _model2 == 0xd03)) _cpuFeatures |= CPU_A53MAC;
+ if (_cpu == CPU_CAVIUM && _variant == 0) _features |= CPU_DMB_ATOMICS;
+ if (_cpu == CPU_ARM && (_model == 0xd03 || _model2 == 0xd03)) _features |= CPU_A53MAC;
// If an olde style /proc/cpuinfo (cpu_lines == 1) then if _model is an A57 (0xd07)
// we assume the worst and assume we could be on a big little system and have
// undisclosed A53 cores which we could be swapped to at any stage
- if (_cpu == CPU_ARM && cpu_lines == 1 && _model == 0xd07) _cpuFeatures |= CPU_A53MAC;
+ if (_cpu == CPU_ARM && cpu_lines == 1 && _model == 0xd07) _features |= CPU_A53MAC;
sprintf(buf, "0x%02x:0x%x:0x%03x:%d", _cpu, _variant, _model, _revision);
if (_model2) sprintf(buf+strlen(buf), "(0x%03x)", _model2);
@@ -169,7 +167,7 @@
if (auxv & HWCAP_SHA1) strcat(buf, ", sha1");
if (auxv & HWCAP_SHA2) strcat(buf, ", sha256");
- _features_str = os::strdup(buf);
+ _features_string = os::strdup(buf);
if (FLAG_IS_DEFAULT(UseCRC32)) {
UseCRC32 = (auxv & HWCAP_CRC32) != 0;
@@ -272,7 +270,7 @@
}
if (FLAG_IS_DEFAULT(UseBarriersForVolatile)) {
- UseBarriersForVolatile = (_cpuFeatures & CPU_DMB_ATOMICS) != 0;
+ UseBarriersForVolatile = (_features & CPU_DMB_ATOMICS) != 0;
}
if (FLAG_IS_DEFAULT(UsePopCountInstruction)) {
--- a/hotspot/src/cpu/aarch64/vm/vm_version_aarch64.hpp Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/src/cpu/aarch64/vm/vm_version_aarch64.hpp Thu Dec 24 17:21:09 2015 +0100
@@ -30,7 +30,8 @@
#include "runtime/vm_version.hpp"
class VM_Version : public Abstract_VM_Version {
-public:
+ friend class JVMCIVMStructs;
+
protected:
static int _cpu;
static int _model;
@@ -38,9 +39,6 @@
static int _variant;
static int _revision;
static int _stepping;
- static int _cpuFeatures; // features returned by the "cpuid" instruction
- // 0 if this instruction is not available
- static const char* _features_str;
static void get_processor_features();
@@ -52,7 +50,7 @@
static void assert_is_initialized() {
}
- enum {
+ enum Family {
CPU_ARM = 'A',
CPU_BROADCOM = 'B',
CPU_CAVIUM = 'C',
@@ -64,9 +62,9 @@
CPU_QUALCOM = 'Q',
CPU_MARVELL = 'V',
CPU_INTEL = 'i',
- } cpuFamily;
+ };
- enum {
+ enum Feature_Flag {
CPU_FP = (1<<0),
CPU_ASIMD = (1<<1),
CPU_EVTSTRM = (1<<2),
@@ -77,16 +75,13 @@
CPU_CRC32 = (1<<7),
CPU_A53MAC = (1 << 30),
CPU_DMB_ATOMICS = (1 << 31),
- } cpuFeatureFlags;
+ };
- static const char* cpu_features() { return _features_str; }
static int cpu_family() { return _cpu; }
static int cpu_model() { return _model; }
static int cpu_model2() { return _model2; }
static int cpu_variant() { return _variant; }
static int cpu_revision() { return _revision; }
- static int cpu_cpuFeatures() { return _cpuFeatures; }
-
};
#endif // CPU_AARCH64_VM_VM_VERSION_AARCH64_HPP
--- a/hotspot/src/cpu/ppc/vm/vm_version_ppc.cpp Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/src/cpu/ppc/vm/vm_version_ppc.cpp Thu Dec 24 17:21:09 2015 +0100
@@ -37,8 +37,6 @@
# include <sys/sysinfo.h>
-int VM_Version::_features = VM_Version::unknown_m;
-const char* VM_Version::_features_str = "";
bool VM_Version::_is_determine_features_test_running = false;
@@ -130,7 +128,7 @@
(has_tcheck() ? " tcheck" : "")
// Make sure number of %s matches num_features!
);
- _features_str = os::strdup(buf);
+ _features_string = os::strdup(buf);
if (Verbose) {
print_features();
}
@@ -323,7 +321,7 @@
}
void VM_Version::print_features() {
- tty->print_cr("Version: %s L1_data_cache_line_size=%d", cpu_features(), L1_data_cache_line_size());
+ tty->print_cr("Version: %s L1_data_cache_line_size=%d", features_string(), L1_data_cache_line_size());
}
#ifdef COMPILER2
@@ -722,7 +720,7 @@
}
}
-static int saved_features = 0;
+static uint64_t saved_features = 0;
void VM_Version::allow_all() {
saved_features = _features;
--- a/hotspot/src/cpu/ppc/vm/vm_version_ppc.hpp Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/src/cpu/ppc/vm/vm_version_ppc.hpp Thu Dec 24 17:21:09 2015 +0100
@@ -64,8 +64,7 @@
tcheck_m = (1 << tcheck ),
all_features_m = -1
};
- static int _features;
- static const char* _features_str;
+
static bool _is_determine_features_test_running;
static void print_features();
@@ -96,8 +95,6 @@
static bool has_vpmsumb() { return (_features & vpmsumb_m) != 0; }
static bool has_tcheck() { return (_features & tcheck_m) != 0; }
- static const char* cpu_features() { return _features_str; }
-
// Assembler testing
static void allow_all();
static void revert();
--- a/hotspot/src/cpu/sparc/vm/vmStructs_sparc.hpp Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/src/cpu/sparc/vm/vmStructs_sparc.hpp Thu Dec 24 17:21:09 2015 +0100
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2015, 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
@@ -29,21 +29,12 @@
// constants required by the Serviceability Agent. This file is
// referenced by vmStructs.cpp.
-#define VM_STRUCTS_CPU(nonstatic_field, static_field, unchecked_nonstatic_field, volatile_nonstatic_field, nonproduct_nonstatic_field, c2_nonstatic_field, unchecked_c1_static_field, unchecked_c2_static_field) \
- \
- /******************************/ \
- /* JavaCallWrapper */ \
- /******************************/ \
- /******************************/ \
- /* JavaFrameAnchor */ \
- /******************************/ \
- volatile_nonstatic_field(JavaFrameAnchor, _flags, int) \
- static_field(VM_Version, _features, int)
+#define VM_STRUCTS_CPU(nonstatic_field, static_field, unchecked_nonstatic_field, volatile_nonstatic_field, nonproduct_nonstatic_field, c2_nonstatic_field, unchecked_c1_static_field, unchecked_c2_static_field) \
+ volatile_nonstatic_field(JavaFrameAnchor, _flags, int)
#define VM_TYPES_CPU(declare_type, declare_toplevel_type, declare_oop_type, declare_integer_type, declare_unsigned_integer_type, declare_c1_toplevel_type, declare_c2_type, declare_c2_toplevel_type) \
- declare_toplevel_type(VM_Version)
-#define VM_INT_CONSTANTS_CPU(declare_constant, declare_preprocessor_constant, declare_c1_constant, declare_c2_constant, declare_c2_preprocessor_constant) \
+#define VM_INT_CONSTANTS_CPU(declare_constant, declare_preprocessor_constant, declare_c1_constant, declare_c2_constant, declare_c2_preprocessor_constant) \
/******************************/ \
/* Register numbers (C2 only) */ \
/******************************/ \
--- a/hotspot/src/cpu/sparc/vm/vm_version_sparc.cpp Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/src/cpu/sparc/vm/vm_version_sparc.cpp Thu Dec 24 17:21:09 2015 +0100
@@ -30,13 +30,10 @@
#include "runtime/stubCodeGenerator.hpp"
#include "vm_version_sparc.hpp"
-int VM_Version::_features = VM_Version::unknown_m;
-const char* VM_Version::_features_str = "";
unsigned int VM_Version::_L2_data_cache_line_size = 0;
void VM_Version::initialize() {
-
- assert(_features != VM_Version::unknown_m, "System pre-initialization is not complete.");
+ assert(_features != 0, "System pre-initialization is not complete.");
guarantee(VM_Version::has_v9(), "only SPARC v9 is supported");
PrefetchCopyIntervalInBytes = prefetch_copy_interval_in_bytes();
@@ -214,7 +211,7 @@
(!has_hardware_fsmuld() ? ", no-fsmuld" : ""));
// buf is started with ", " or is empty
- _features_str = os::strdup(strlen(buf) > 2 ? buf + 2 : buf);
+ _features_string = os::strdup(strlen(buf) > 2 ? buf + 2 : buf);
// UseVIS is set to the smallest of what hardware supports and what
// the command line requires. I.e., you cannot set UseVIS to 3 on
@@ -408,7 +405,7 @@
}
void VM_Version::print_features() {
- tty->print_cr("Version:%s", cpu_features());
+ tty->print_cr("Version:%s", _features);
}
int VM_Version::determine_features() {
@@ -444,7 +441,7 @@
return features;
}
-static int saved_features = 0;
+static uint64_t saved_features = 0;
void VM_Version::allow_all() {
saved_features = _features;
--- a/hotspot/src/cpu/sparc/vm/vm_version_sparc.hpp Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/src/cpu/sparc/vm/vm_version_sparc.hpp Thu Dec 24 17:21:09 2015 +0100
@@ -31,6 +31,7 @@
class VM_Version: public Abstract_VM_Version {
friend class VMStructs;
friend class JVMCIVMStructs;
+
protected:
enum Feature_Flag {
v8_instructions = 0,
@@ -97,9 +98,6 @@
niagara1_m = generic_v9_m | niagara1_unique_m
};
- static int _features;
- static const char* _features_str;
-
static unsigned int _L2_data_cache_line_size;
static unsigned int L2_data_cache_line_size() { return _L2_data_cache_line_size; }
@@ -175,8 +173,6 @@
// On T4 and newer Sparc BIS to the beginning of cache line always zeros it.
static bool has_block_zeroing() { return has_blk_init() && is_T4(); }
- static const char* cpu_features() { return _features_str; }
-
// default prefetch block size on sparc
static intx prefetch_data_size() { return L2_data_cache_line_size(); }
--- a/hotspot/src/cpu/x86/vm/vmStructs_x86.hpp Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/src/cpu/x86/vm/vmStructs_x86.hpp Thu Dec 24 17:21:09 2015 +0100
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2015, 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
@@ -30,20 +30,9 @@
// referenced by vmStructs.cpp.
#define VM_STRUCTS_CPU(nonstatic_field, static_field, unchecked_nonstatic_field, volatile_nonstatic_field, nonproduct_nonstatic_field, c2_nonstatic_field, unchecked_c1_static_field, unchecked_c2_static_field) \
- \
- /******************************/ \
- /* JavaCallWrapper */ \
- /******************************/ \
- /******************************/ \
- /* JavaFrameAnchor */ \
- /******************************/ \
- volatile_nonstatic_field(JavaFrameAnchor, _last_Java_fp, intptr_t*) \
- static_field(VM_Version, _cpuFeatures, uint64_t)
-
-
+ volatile_nonstatic_field(JavaFrameAnchor, _last_Java_fp, intptr_t*)
#define VM_TYPES_CPU(declare_type, declare_toplevel_type, declare_oop_type, declare_integer_type, declare_unsigned_integer_type, declare_c1_toplevel_type, declare_c2_type, declare_c2_toplevel_type) \
- declare_toplevel_type(VM_Version)
#define VM_INT_CONSTANTS_CPU(declare_constant, declare_preprocessor_constant, declare_c1_constant, declare_c2_constant, declare_c2_preprocessor_constant) \
LP64_ONLY(declare_constant(frame::arg_reg_save_area_bytes)) \
--- a/hotspot/src/cpu/x86/vm/vm_version_x86.cpp Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/src/cpu/x86/vm/vm_version_x86.cpp Thu Dec 24 17:21:09 2015 +0100
@@ -35,9 +35,7 @@
int VM_Version::_cpu;
int VM_Version::_model;
int VM_Version::_stepping;
-uint64_t VM_Version::_cpuFeatures;
-const char* VM_Version::_features_str = "";
-VM_Version::CpuidInfo VM_Version::_cpuid_info = { 0, };
+VM_Version::CpuidInfo VM_Version::_cpuid_info = { 0, };
// Address of instruction which causes SEGV
address VM_Version::_cpuinfo_segv_addr = 0;
@@ -468,7 +466,7 @@
_cpu = 4; // 486 by default
_model = 0;
_stepping = 0;
- _cpuFeatures = 0;
+ _features = 0;
_logical_processors_per_package = 1;
// i486 internal cache is both I&D and has a 16-byte line size
_L1_data_cache_line_size = 16;
@@ -483,7 +481,7 @@
_stepping = cpu_stepping();
if (cpu_family() > 4) { // it supports CPUID
- _cpuFeatures = feature_flags();
+ _features = feature_flags();
// Logical processors are only available on P4s and above,
// and only if hyperthreading is available.
_logical_processors_per_package = logical_processor_count();
@@ -522,24 +520,24 @@
// If the OS doesn't support SSE, we can't use this feature even if the HW does
if (!os::supports_sse())
- _cpuFeatures &= ~(CPU_SSE|CPU_SSE2|CPU_SSE3|CPU_SSSE3|CPU_SSE4A|CPU_SSE4_1|CPU_SSE4_2);
+ _features &= ~(CPU_SSE|CPU_SSE2|CPU_SSE3|CPU_SSSE3|CPU_SSE4A|CPU_SSE4_1|CPU_SSE4_2);
if (UseSSE < 4) {
- _cpuFeatures &= ~CPU_SSE4_1;
- _cpuFeatures &= ~CPU_SSE4_2;
+ _features &= ~CPU_SSE4_1;
+ _features &= ~CPU_SSE4_2;
}
if (UseSSE < 3) {
- _cpuFeatures &= ~CPU_SSE3;
- _cpuFeatures &= ~CPU_SSSE3;
- _cpuFeatures &= ~CPU_SSE4A;
+ _features &= ~CPU_SSE3;
+ _features &= ~CPU_SSSE3;
+ _features &= ~CPU_SSE4A;
}
if (UseSSE < 2)
- _cpuFeatures &= ~CPU_SSE2;
+ _features &= ~CPU_SSE2;
if (UseSSE < 1)
- _cpuFeatures &= ~CPU_SSE;
+ _features &= ~CPU_SSE;
// first try initial setting and detect what we can support
if (UseAVX > 0) {
@@ -557,25 +555,25 @@
}
if (UseAVX < 3) {
- _cpuFeatures &= ~CPU_AVX512F;
- _cpuFeatures &= ~CPU_AVX512DQ;
- _cpuFeatures &= ~CPU_AVX512CD;
- _cpuFeatures &= ~CPU_AVX512BW;
- _cpuFeatures &= ~CPU_AVX512VL;
+ _features &= ~CPU_AVX512F;
+ _features &= ~CPU_AVX512DQ;
+ _features &= ~CPU_AVX512CD;
+ _features &= ~CPU_AVX512BW;
+ _features &= ~CPU_AVX512VL;
}
if (UseAVX < 2)
- _cpuFeatures &= ~CPU_AVX2;
+ _features &= ~CPU_AVX2;
if (UseAVX < 1)
- _cpuFeatures &= ~CPU_AVX;
+ _features &= ~CPU_AVX;
if (!UseAES && !FLAG_IS_DEFAULT(UseAES))
- _cpuFeatures &= ~CPU_AES;
+ _features &= ~CPU_AES;
if (logical_processors_per_package() == 1) {
// HT processor could be installed on a system which doesn't support HT.
- _cpuFeatures &= ~CPU_HT;
+ _features &= ~CPU_HT;
}
char buf[256];
@@ -611,7 +609,7 @@
(supports_bmi2() ? ", bmi2" : ""),
(supports_adx() ? ", adx" : ""),
(supports_evex() ? ", evex" : ""));
- _features_str = os::strdup(buf);
+ _features_string = os::strdup(buf);
// UseSSE is set to the smaller of what hardware supports and what
// the command line requires. I.e., you cannot set UseSSE to 2 on
--- a/hotspot/src/cpu/x86/vm/vm_version_x86.hpp Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/src/cpu/x86/vm/vm_version_x86.hpp Thu Dec 24 17:21:09 2015 +0100
@@ -31,7 +31,8 @@
class VM_Version : public Abstract_VM_Version {
friend class VMStructs;
friend class JVMCIVMStructs;
-public:
+
+ public:
// cpuid result register layouts. These are all unions of a uint32_t
// (in case anyone wants access to the register as a whole) and a bitfield.
@@ -245,14 +246,11 @@
static int _cpu;
static int _model;
static int _stepping;
- static uint64_t _cpuFeatures; // features returned by the "cpuid" instruction
- // 0 if this instruction is not available
- static const char* _features_str;
static address _cpuinfo_segv_addr; // address of instruction which causes SEGV
static address _cpuinfo_cont_addr; // address of instruction after the one which causes SEGV
- enum {
+ enum Feature_Flag {
CPU_CX8 = (1 << 0), // next bits are from cpuid 1 (EDX)
CPU_CMOV = (1 << 1),
CPU_FXSR = (1 << 2),
@@ -286,11 +284,11 @@
CPU_AVX512ER = (1 << 29),
CPU_AVX512CD = (1 << 30),
CPU_AVX512BW = (1 << 31)
- } cpuFeatureFlags;
+ };
#define CPU_AVX512VL UCONST64(0x100000000) // EVEX instructions with smaller vector length : enums are limited to 32bit
- enum {
+ enum Extended_Family {
// AMD
CPU_FAMILY_AMD_11H = 0x11,
// Intel
@@ -308,7 +306,7 @@
CPU_MODEL_HASWELL_E7 = 0x3f,
CPU_MODEL_BROADWELL = 0x3d,
CPU_MODEL_SKYLAKE = CPU_MODEL_HASWELL_E3
- } cpuExtendedFamily;
+ };
// cpuid information block. All info derived from executing cpuid with
// various function numbers is stored here. Intel and AMD info is
@@ -598,9 +596,9 @@
static void set_cpuinfo_cont_addr(address pc) { _cpuinfo_cont_addr = pc; }
static address cpuinfo_cont_addr() { return _cpuinfo_cont_addr; }
- static void clean_cpuFeatures() { _cpuFeatures = 0; }
- static void set_avx_cpuFeatures() { _cpuFeatures = (CPU_SSE | CPU_SSE2 | CPU_AVX); }
- static void set_evex_cpuFeatures() { _cpuFeatures = (CPU_AVX512F | CPU_SSE | CPU_SSE2 ); }
+ static void clean_cpuFeatures() { _features = 0; }
+ static void set_avx_cpuFeatures() { _features = (CPU_SSE | CPU_SSE2 | CPU_AVX); }
+ static void set_evex_cpuFeatures() { _features = (CPU_AVX512F | CPU_SSE | CPU_SSE2 ); }
// Initialization
@@ -688,36 +686,36 @@
//
// Feature identification
//
- static bool supports_cpuid() { return _cpuFeatures != 0; }
- static bool supports_cmpxchg8() { return (_cpuFeatures & CPU_CX8) != 0; }
- static bool supports_cmov() { return (_cpuFeatures & CPU_CMOV) != 0; }
- static bool supports_fxsr() { return (_cpuFeatures & CPU_FXSR) != 0; }
- static bool supports_ht() { return (_cpuFeatures & CPU_HT) != 0; }
- static bool supports_mmx() { return (_cpuFeatures & CPU_MMX) != 0; }
- static bool supports_sse() { return (_cpuFeatures & CPU_SSE) != 0; }
- static bool supports_sse2() { return (_cpuFeatures & CPU_SSE2) != 0; }
- static bool supports_sse3() { return (_cpuFeatures & CPU_SSE3) != 0; }
- static bool supports_ssse3() { return (_cpuFeatures & CPU_SSSE3)!= 0; }
- static bool supports_sse4_1() { return (_cpuFeatures & CPU_SSE4_1) != 0; }
- static bool supports_sse4_2() { return (_cpuFeatures & CPU_SSE4_2) != 0; }
- static bool supports_popcnt() { return (_cpuFeatures & CPU_POPCNT) != 0; }
- static bool supports_avx() { return (_cpuFeatures & CPU_AVX) != 0; }
- static bool supports_avx2() { return (_cpuFeatures & CPU_AVX2) != 0; }
- static bool supports_tsc() { return (_cpuFeatures & CPU_TSC) != 0; }
- static bool supports_aes() { return (_cpuFeatures & CPU_AES) != 0; }
- static bool supports_erms() { return (_cpuFeatures & CPU_ERMS) != 0; }
- static bool supports_clmul() { return (_cpuFeatures & CPU_CLMUL) != 0; }
- static bool supports_rtm() { return (_cpuFeatures & CPU_RTM) != 0; }
- static bool supports_bmi1() { return (_cpuFeatures & CPU_BMI1) != 0; }
- static bool supports_bmi2() { return (_cpuFeatures & CPU_BMI2) != 0; }
- static bool supports_adx() { return (_cpuFeatures & CPU_ADX) != 0; }
- static bool supports_evex() { return (_cpuFeatures & CPU_AVX512F) != 0; }
- static bool supports_avx512dq() { return (_cpuFeatures & CPU_AVX512DQ) != 0; }
- static bool supports_avx512pf() { return (_cpuFeatures & CPU_AVX512PF) != 0; }
- static bool supports_avx512er() { return (_cpuFeatures & CPU_AVX512ER) != 0; }
- static bool supports_avx512cd() { return (_cpuFeatures & CPU_AVX512CD) != 0; }
- static bool supports_avx512bw() { return (_cpuFeatures & CPU_AVX512BW) != 0; }
- static bool supports_avx512vl() { return (_cpuFeatures & CPU_AVX512VL) != 0; }
+ static bool supports_cpuid() { return _features != 0; }
+ static bool supports_cmpxchg8() { return (_features & CPU_CX8) != 0; }
+ static bool supports_cmov() { return (_features & CPU_CMOV) != 0; }
+ static bool supports_fxsr() { return (_features & CPU_FXSR) != 0; }
+ static bool supports_ht() { return (_features & CPU_HT) != 0; }
+ static bool supports_mmx() { return (_features & CPU_MMX) != 0; }
+ static bool supports_sse() { return (_features & CPU_SSE) != 0; }
+ static bool supports_sse2() { return (_features & CPU_SSE2) != 0; }
+ static bool supports_sse3() { return (_features & CPU_SSE3) != 0; }
+ static bool supports_ssse3() { return (_features & CPU_SSSE3)!= 0; }
+ static bool supports_sse4_1() { return (_features & CPU_SSE4_1) != 0; }
+ static bool supports_sse4_2() { return (_features & CPU_SSE4_2) != 0; }
+ static bool supports_popcnt() { return (_features & CPU_POPCNT) != 0; }
+ static bool supports_avx() { return (_features & CPU_AVX) != 0; }
+ static bool supports_avx2() { return (_features & CPU_AVX2) != 0; }
+ static bool supports_tsc() { return (_features & CPU_TSC) != 0; }
+ static bool supports_aes() { return (_features & CPU_AES) != 0; }
+ static bool supports_erms() { return (_features & CPU_ERMS) != 0; }
+ static bool supports_clmul() { return (_features & CPU_CLMUL) != 0; }
+ static bool supports_rtm() { return (_features & CPU_RTM) != 0; }
+ static bool supports_bmi1() { return (_features & CPU_BMI1) != 0; }
+ static bool supports_bmi2() { return (_features & CPU_BMI2) != 0; }
+ static bool supports_adx() { return (_features & CPU_ADX) != 0; }
+ static bool supports_evex() { return (_features & CPU_AVX512F) != 0; }
+ static bool supports_avx512dq() { return (_features & CPU_AVX512DQ) != 0; }
+ static bool supports_avx512pf() { return (_features & CPU_AVX512PF) != 0; }
+ static bool supports_avx512er() { return (_features & CPU_AVX512ER) != 0; }
+ static bool supports_avx512cd() { return (_features & CPU_AVX512CD) != 0; }
+ static bool supports_avx512bw() { return (_features & CPU_AVX512BW) != 0; }
+ static bool supports_avx512vl() { return (_features & CPU_AVX512VL) != 0; }
static bool supports_avx512vlbw() { return (supports_avx512bw() && supports_avx512vl()); }
static bool supports_avx512novl() { return (supports_evex() && !supports_avx512vl()); }
static bool supports_avx512nobw() { return (supports_evex() && !supports_avx512bw()); }
@@ -746,17 +744,17 @@
}
// AMD features
- static bool supports_3dnow_prefetch() { return (_cpuFeatures & CPU_3DNOW_PREFETCH) != 0; }
+ static bool supports_3dnow_prefetch() { return (_features & CPU_3DNOW_PREFETCH) != 0; }
static bool supports_mmx_ext() { return is_amd() && _cpuid_info.ext_cpuid1_edx.bits.mmx_amd != 0; }
- static bool supports_lzcnt() { return (_cpuFeatures & CPU_LZCNT) != 0; }
- static bool supports_sse4a() { return (_cpuFeatures & CPU_SSE4A) != 0; }
+ static bool supports_lzcnt() { return (_features & CPU_LZCNT) != 0; }
+ static bool supports_sse4a() { return (_features & CPU_SSE4A) != 0; }
static bool is_amd_Barcelona() { return is_amd() &&
extended_cpu_family() == CPU_FAMILY_AMD_11H; }
// Intel and AMD newer cores support fast timestamps well
static bool supports_tscinv_bit() {
- return (_cpuFeatures & CPU_TSCINV) != 0;
+ return (_features & CPU_TSCINV) != 0;
}
static bool supports_tscinv() {
return supports_tscinv_bit() &&
@@ -770,8 +768,6 @@
static bool supports_compare_and_exchange() { return true; }
- static const char* cpu_features() { return _features_str; }
-
static intx allocate_prefetch_distance() {
// This method should be called before allocate_prefetch_style().
//
--- a/hotspot/src/cpu/zero/vm/vm_version_zero.hpp Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/src/cpu/zero/vm/vm_version_zero.hpp Thu Dec 24 17:21:09 2015 +0100
@@ -31,9 +31,6 @@
class VM_Version : public Abstract_VM_Version {
public:
- static const char* cpu_features() {
- return "";
- }
static void initialize();
};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.aarch64/src/jdk/vm/ci/aarch64/AArch64.java Thu Dec 24 17:21:09 2015 +0100
@@ -0,0 +1,237 @@
+/*
+ * Copyright (c) 2015, 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.
+ *
+ * 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.
+ */
+package jdk.vm.ci.aarch64;
+
+import java.nio.ByteOrder;
+import java.util.EnumSet;
+
+import jdk.vm.ci.code.Architecture;
+import jdk.vm.ci.code.Register;
+import jdk.vm.ci.code.Register.RegisterCategory;
+import jdk.vm.ci.meta.JavaKind;
+import jdk.vm.ci.meta.PlatformKind;
+
+/**
+ * Represents the AArch64 architecture.
+ */
+public class AArch64 extends Architecture {
+
+ public static final RegisterCategory CPU = new RegisterCategory("CPU");
+
+ // General purpose CPU registers
+ public static final Register r0 = new Register(0, 0, "r0", CPU);
+ public static final Register r1 = new Register(1, 1, "r1", CPU);
+ public static final Register r2 = new Register(2, 2, "r2", CPU);
+ public static final Register r3 = new Register(3, 3, "r3", CPU);
+ public static final Register r4 = new Register(4, 4, "r4", CPU);
+ public static final Register r5 = new Register(5, 5, "r5", CPU);
+ public static final Register r6 = new Register(6, 6, "r6", CPU);
+ public static final Register r7 = new Register(7, 7, "r7", CPU);
+ public static final Register r8 = new Register(8, 8, "r8", CPU);
+ public static final Register r9 = new Register(9, 9, "r9", CPU);
+ public static final Register r10 = new Register(10, 10, "r10", CPU);
+ public static final Register r11 = new Register(11, 11, "r11", CPU);
+ public static final Register r12 = new Register(12, 12, "r12", CPU);
+ public static final Register r13 = new Register(13, 13, "r13", CPU);
+ public static final Register r14 = new Register(14, 14, "r14", CPU);
+ public static final Register r15 = new Register(15, 15, "r15", CPU);
+ public static final Register r16 = new Register(16, 16, "r16", CPU);
+ public static final Register r17 = new Register(17, 17, "r17", CPU);
+ public static final Register r18 = new Register(18, 18, "r18", CPU);
+ public static final Register r19 = new Register(19, 19, "r19", CPU);
+ public static final Register r20 = new Register(20, 20, "r20", CPU);
+ public static final Register r21 = new Register(21, 21, "r21", CPU);
+ public static final Register r22 = new Register(22, 22, "r22", CPU);
+ public static final Register r23 = new Register(23, 23, "r23", CPU);
+ public static final Register r24 = new Register(24, 24, "r24", CPU);
+ public static final Register r25 = new Register(25, 25, "r25", CPU);
+ public static final Register r26 = new Register(26, 26, "r26", CPU);
+ public static final Register r27 = new Register(27, 27, "r27", CPU);
+ public static final Register r28 = new Register(28, 28, "r28", CPU);
+ public static final Register r29 = new Register(29, 29, "r29", CPU);
+ public static final Register r30 = new Register(30, 30, "r30", CPU);
+ public static final Register r31 = new Register(31, 31, "r31", CPU);
+
+ public static final Register lr = r30;
+ public static final Register zr = r31;
+ public static final Register sp = r31;
+
+ public static final Register[] cpuRegisters = {
+ // @formatter:off
+ r0, r1, r2, r3, r4, r5, r6, r7,
+ r8, r9, r10, r11, r12, r13, r14, r15,
+ r16, r17, r18, r19, r20, r21, r22, r23,
+ r24, r25, r26, r27, r28, r29, r30, r31
+ // @formatter:on
+ };
+
+ public static final RegisterCategory SIMD = new RegisterCategory("SIMD");
+
+ // Simd registers
+ public static final Register v0 = new Register(32, 0, "v0", SIMD);
+ public static final Register v1 = new Register(33, 1, "v1", SIMD);
+ public static final Register v2 = new Register(34, 2, "v2", SIMD);
+ public static final Register v3 = new Register(35, 3, "v3", SIMD);
+ public static final Register v4 = new Register(36, 4, "v4", SIMD);
+ public static final Register v5 = new Register(37, 5, "v5", SIMD);
+ public static final Register v6 = new Register(38, 6, "v6", SIMD);
+ public static final Register v7 = new Register(39, 7, "v7", SIMD);
+ public static final Register v8 = new Register(40, 8, "v8", SIMD);
+ public static final Register v9 = new Register(41, 9, "v9", SIMD);
+ public static final Register v10 = new Register(42, 10, "v10", SIMD);
+ public static final Register v11 = new Register(43, 11, "v11", SIMD);
+ public static final Register v12 = new Register(44, 12, "v12", SIMD);
+ public static final Register v13 = new Register(45, 13, "v13", SIMD);
+ public static final Register v14 = new Register(46, 14, "v14", SIMD);
+ public static final Register v15 = new Register(47, 15, "v15", SIMD);
+ public static final Register v16 = new Register(48, 16, "v16", SIMD);
+ public static final Register v17 = new Register(49, 17, "v17", SIMD);
+ public static final Register v18 = new Register(50, 18, "v18", SIMD);
+ public static final Register v19 = new Register(51, 19, "v19", SIMD);
+ public static final Register v20 = new Register(52, 20, "v20", SIMD);
+ public static final Register v21 = new Register(53, 21, "v21", SIMD);
+ public static final Register v22 = new Register(54, 22, "v22", SIMD);
+ public static final Register v23 = new Register(55, 23, "v23", SIMD);
+ public static final Register v24 = new Register(56, 24, "v24", SIMD);
+ public static final Register v25 = new Register(57, 25, "v25", SIMD);
+ public static final Register v26 = new Register(58, 26, "v26", SIMD);
+ public static final Register v27 = new Register(59, 27, "v27", SIMD);
+ public static final Register v28 = new Register(60, 28, "v28", SIMD);
+ public static final Register v29 = new Register(61, 29, "v29", SIMD);
+ public static final Register v30 = new Register(62, 30, "v30", SIMD);
+ public static final Register v31 = new Register(63, 31, "v31", SIMD);
+
+ public static final Register[] simdRegisters = {
+ // @formatter:off
+ v0, v1, v2, v3, v4, v5, v6, v7,
+ v8, v9, v10, v11, v12, v13, v14, v15,
+ v16, v17, v18, v19, v20, v21, v22, v23,
+ v24, v25, v26, v27, v28, v29, v30, v31
+ // @formatter:on
+ };
+
+ public static final Register[] allRegisters = {
+ // @formatter:off
+ r0, r1, r2, r3, r4, r5, r6, r7,
+ r8, r9, r10, r11, r12, r13, r14, r15,
+ r16, r17, r18, r19, r20, r21, r22, r23,
+ r24, r25, r26, r27, r28, r29, r30, r31,
+
+ v0, v1, v2, v3, v4, v5, v6, v7,
+ v8, v9, v10, v11, v12, v13, v14, v15,
+ v16, v17, v18, v19, v20, v21, v22, v23,
+ v24, v25, v26, v27, v28, v29, v30, v31
+ // @formatter:on
+ };
+
+ /**
+ * Basic set of CPU features mirroring what is returned from the cpuid instruction. See:
+ * {@code VM_Version::cpuFeatureFlags}.
+ */
+ public static enum CPUFeature {
+ FP,
+ ASIMD,
+ EVTSTRM,
+ AES,
+ PMULL,
+ SHA1,
+ SHA2,
+ CRC32,
+ A53MAC,
+ DMB_ATOMICS
+ }
+
+ private final EnumSet<CPUFeature> features;
+
+ /**
+ * Set of flags to control code emission.
+ */
+ public static enum Flag {
+ UseBarriersForVolatile,
+ UseCRC32,
+ UseNeon
+ }
+
+ private final EnumSet<Flag> flags;
+
+ public AArch64(EnumSet<CPUFeature> features, EnumSet<Flag> flags) {
+ super("aarch64", AArch64Kind.QWORD, ByteOrder.LITTLE_ENDIAN, /* unalignedMemoryAccess */true, allRegisters, /* implicitMemoryBarriers */0, /* nativeCallDisplacementOffset */0,
+ /* returnAddressSize */0);
+ this.features = features;
+ this.flags = flags;
+ assert features.contains(CPUFeature.FP) : "minimum config for aarch64";
+ }
+
+ public EnumSet<CPUFeature> getFeatures() {
+ return features;
+ }
+
+ public EnumSet<Flag> getFlags() {
+ return flags;
+ }
+
+ @Override
+ public PlatformKind getPlatformKind(JavaKind javaKind) {
+ switch (javaKind) {
+ case Boolean:
+ case Byte:
+ return AArch64Kind.BYTE;
+ case Short:
+ case Char:
+ return AArch64Kind.WORD;
+ case Int:
+ return AArch64Kind.DWORD;
+ case Long:
+ case Object:
+ return AArch64Kind.QWORD;
+ case Float:
+ return AArch64Kind.SINGLE;
+ case Double:
+ return AArch64Kind.DOUBLE;
+ default:
+ return null;
+ }
+ }
+
+ @Override
+ public boolean canStoreValue(RegisterCategory category, PlatformKind platformKind) {
+ AArch64Kind kind = (AArch64Kind) platformKind;
+ if (kind.isInteger()) {
+ return category.equals(CPU);
+ } else if (kind.isSIMD()) {
+ return category.equals(SIMD);
+ }
+ return false;
+ }
+
+ @Override
+ public AArch64Kind getLargestStorableKind(RegisterCategory category) {
+ if (category.equals(CPU)) {
+ return AArch64Kind.QWORD;
+ } else if (category.equals(SIMD)) {
+ return AArch64Kind.V128_QWORD;
+ } else {
+ return null;
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.aarch64/src/jdk/vm/ci/aarch64/AArch64Kind.java Thu Dec 24 17:21:09 2015 +0100
@@ -0,0 +1,171 @@
+/*
+ * Copyright (c) 2015, 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.
+ *
+ * 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.
+ */
+package jdk.vm.ci.aarch64;
+
+import jdk.vm.ci.meta.PlatformKind;
+
+public enum AArch64Kind implements PlatformKind {
+
+ // scalar
+ BYTE(1),
+ WORD(2),
+ DWORD(4),
+ QWORD(8),
+ SINGLE(4),
+ DOUBLE(8),
+
+ // SIMD
+ V32_BYTE(4, BYTE),
+ V32_WORD(4, WORD),
+ V64_BYTE(8, BYTE),
+ V64_WORD(8, WORD),
+ V64_DWORD(8, DWORD),
+ V128_BYTE(16, BYTE),
+ V128_WORD(16, WORD),
+ V128_DWORD(16, DWORD),
+ V128_QWORD(16, QWORD),
+ V128_SINGLE(16, SINGLE),
+ V128_DOUBLE(16, DOUBLE),
+
+ MASK8(1),
+ MASK16(2),
+ MASK32(4),
+ MASK64(8);
+
+ private final int size;
+ private final int vectorLength;
+
+ private final AArch64Kind scalar;
+ private final EnumKey<AArch64Kind> key = new EnumKey<>(this);
+
+ private AArch64Kind(int size) {
+ this.size = size;
+ this.scalar = this;
+ this.vectorLength = 1;
+ }
+
+ private AArch64Kind(int size, AArch64Kind scalar) {
+ this.size = size;
+ this.scalar = scalar;
+
+ assert size % scalar.size == 0;
+ this.vectorLength = size / scalar.size;
+ }
+
+ public AArch64Kind getScalar() {
+ return scalar;
+ }
+
+ public int getSizeInBytes() {
+ return size;
+ }
+
+ public int getVectorLength() {
+ return vectorLength;
+ }
+
+ public Key getKey() {
+ return key;
+ }
+
+ public boolean isInteger() {
+ switch (this) {
+ case BYTE:
+ case WORD:
+ case DWORD:
+ case QWORD:
+ return true;
+ default:
+ return false;
+ }
+ }
+
+ public boolean isSIMD() {
+ switch (this) {
+ case SINGLE:
+ case DOUBLE:
+ case V32_BYTE:
+ case V32_WORD:
+ case V64_BYTE:
+ case V64_WORD:
+ case V64_DWORD:
+ case V128_BYTE:
+ case V128_WORD:
+ case V128_DWORD:
+ case V128_QWORD:
+ case V128_SINGLE:
+ case V128_DOUBLE:
+ return true;
+ default:
+ return false;
+ }
+ }
+
+ public boolean isMask() {
+ switch (this) {
+ case MASK8:
+ case MASK16:
+ case MASK32:
+ case MASK64:
+ return true;
+ default:
+ return false;
+ }
+ }
+
+ public char getTypeChar() {
+ switch (this) {
+ case BYTE:
+ return 'b';
+ case WORD:
+ return 'w';
+ case DWORD:
+ return 'd';
+ case QWORD:
+ return 'q';
+ case SINGLE:
+ return 'S';
+ case DOUBLE:
+ return 'D';
+ case V32_BYTE:
+ case V32_WORD:
+ case V64_BYTE:
+ case V64_WORD:
+ case V64_DWORD:
+ case V128_BYTE:
+ case V128_WORD:
+ case V128_DWORD:
+ case V128_QWORD:
+ case V128_SINGLE:
+ case V128_DOUBLE:
+ return 'v';
+ case MASK8:
+ case MASK16:
+ case MASK32:
+ case MASK64:
+ return 'k';
+ default:
+ return '-';
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot.aarch64/src/jdk/vm/ci/hotspot/aarch64/AArch64HotSpotJVMCIBackendFactory.java Thu Dec 24 17:21:09 2015 +0100
@@ -0,0 +1,131 @@
+/*
+ * Copyright (c) 2015, 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.
+ *
+ * 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.
+ */
+package jdk.vm.ci.hotspot.aarch64;
+
+import static jdk.vm.ci.inittimer.InitTimer.timer;
+
+import java.util.EnumSet;
+
+import jdk.vm.ci.aarch64.AArch64;
+import jdk.vm.ci.code.Architecture;
+import jdk.vm.ci.code.RegisterConfig;
+import jdk.vm.ci.code.TargetDescription;
+import jdk.vm.ci.code.stack.StackIntrospection;
+import jdk.vm.ci.hotspot.HotSpotCodeCacheProvider;
+import jdk.vm.ci.hotspot.HotSpotConstantReflectionProvider;
+import jdk.vm.ci.hotspot.HotSpotJVMCIBackendFactory;
+import jdk.vm.ci.hotspot.HotSpotJVMCIRuntimeProvider;
+import jdk.vm.ci.hotspot.HotSpotMetaAccessProvider;
+import jdk.vm.ci.hotspot.HotSpotStackIntrospection;
+import jdk.vm.ci.hotspot.HotSpotVMConfig;
+import jdk.vm.ci.inittimer.InitTimer;
+import jdk.vm.ci.meta.ConstantReflectionProvider;
+import jdk.vm.ci.runtime.JVMCIBackend;
+import jdk.vm.ci.service.ServiceProvider;
+
+@ServiceProvider(HotSpotJVMCIBackendFactory.class)
+public class AArch64HotSpotJVMCIBackendFactory implements HotSpotJVMCIBackendFactory {
+
+ protected EnumSet<AArch64.CPUFeature> computeFeatures(@SuppressWarnings("unused") HotSpotVMConfig config) {
+ // Configure the feature set using the HotSpot flag settings.
+ EnumSet<AArch64.CPUFeature> features = EnumSet.noneOf(AArch64.CPUFeature.class);
+ return features;
+ }
+
+ protected EnumSet<AArch64.Flag> computeFlags(@SuppressWarnings("unused") HotSpotVMConfig config) {
+ EnumSet<AArch64.Flag> flags = EnumSet.noneOf(AArch64.Flag.class);
+ return flags;
+ }
+
+ protected TargetDescription createTarget(HotSpotVMConfig config) {
+ final int stackFrameAlignment = 16;
+ final int implicitNullCheckLimit = 4096;
+ final boolean inlineObjects = true;
+ Architecture arch = new AArch64(computeFeatures(config), computeFlags(config));
+ return new TargetDescription(arch, true, stackFrameAlignment, implicitNullCheckLimit, inlineObjects);
+ }
+
+ protected HotSpotConstantReflectionProvider createConstantReflection(HotSpotJVMCIRuntimeProvider runtime) {
+ return new HotSpotConstantReflectionProvider(runtime);
+ }
+
+ protected RegisterConfig createRegisterConfig(HotSpotJVMCIRuntimeProvider runtime, TargetDescription target) {
+ return new AArch64HotSpotRegisterConfig(target.arch, runtime.getConfig());
+ }
+
+ protected HotSpotCodeCacheProvider createCodeCache(HotSpotJVMCIRuntimeProvider runtime, TargetDescription target, RegisterConfig regConfig) {
+ return new HotSpotCodeCacheProvider(runtime, runtime.getConfig(), target, regConfig);
+ }
+
+ protected HotSpotMetaAccessProvider createMetaAccess(HotSpotJVMCIRuntimeProvider runtime) {
+ return new HotSpotMetaAccessProvider(runtime);
+ }
+
+ @Override
+ public String getArchitecture() {
+ return "aarch64";
+ }
+
+ @Override
+ public String toString() {
+ return "JVMCIBackend:" + getArchitecture();
+ }
+
+ @SuppressWarnings("try")
+ public JVMCIBackend createJVMCIBackend(HotSpotJVMCIRuntimeProvider runtime, JVMCIBackend host) {
+
+ assert host == null;
+ TargetDescription target = createTarget(runtime.getConfig());
+
+ RegisterConfig regConfig;
+ HotSpotCodeCacheProvider codeCache;
+ ConstantReflectionProvider constantReflection;
+ HotSpotMetaAccessProvider metaAccess;
+ StackIntrospection stackIntrospection;
+ try (InitTimer t = timer("create providers")) {
+ try (InitTimer rt = timer("create MetaAccess provider")) {
+ metaAccess = createMetaAccess(runtime);
+ }
+ try (InitTimer rt = timer("create RegisterConfig")) {
+ regConfig = createRegisterConfig(runtime, target);
+ }
+ try (InitTimer rt = timer("create CodeCache provider")) {
+ codeCache = createCodeCache(runtime, target, regConfig);
+ }
+ try (InitTimer rt = timer("create ConstantReflection provider")) {
+ constantReflection = createConstantReflection(runtime);
+ }
+ try (InitTimer rt = timer("create StackIntrospection provider")) {
+ stackIntrospection = new HotSpotStackIntrospection(runtime);
+ }
+ }
+ try (InitTimer rt = timer("instantiate backend")) {
+ return createBackend(metaAccess, codeCache, constantReflection, stackIntrospection);
+ }
+ }
+
+ protected JVMCIBackend createBackend(HotSpotMetaAccessProvider metaAccess, HotSpotCodeCacheProvider codeCache, ConstantReflectionProvider constantReflection,
+ StackIntrospection stackIntrospection) {
+ return new JVMCIBackend(metaAccess, codeCache, constantReflection, stackIntrospection);
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot.aarch64/src/jdk/vm/ci/hotspot/aarch64/AArch64HotSpotRegisterConfig.java Thu Dec 24 17:21:09 2015 +0100
@@ -0,0 +1,298 @@
+/*
+ * Copyright (c) 2015, 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.
+ *
+ * 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.
+ */
+package jdk.vm.ci.hotspot.aarch64;
+
+import static jdk.vm.ci.aarch64.AArch64.lr;
+import static jdk.vm.ci.aarch64.AArch64.r0;
+import static jdk.vm.ci.aarch64.AArch64.r1;
+import static jdk.vm.ci.aarch64.AArch64.r12;
+import static jdk.vm.ci.aarch64.AArch64.r2;
+import static jdk.vm.ci.aarch64.AArch64.r27;
+import static jdk.vm.ci.aarch64.AArch64.r28;
+import static jdk.vm.ci.aarch64.AArch64.r29;
+import static jdk.vm.ci.aarch64.AArch64.r3;
+import static jdk.vm.ci.aarch64.AArch64.r4;
+import static jdk.vm.ci.aarch64.AArch64.r5;
+import static jdk.vm.ci.aarch64.AArch64.r6;
+import static jdk.vm.ci.aarch64.AArch64.r7;
+import static jdk.vm.ci.aarch64.AArch64.r9;
+import static jdk.vm.ci.aarch64.AArch64.sp;
+import static jdk.vm.ci.aarch64.AArch64.v0;
+import static jdk.vm.ci.aarch64.AArch64.v1;
+import static jdk.vm.ci.aarch64.AArch64.v2;
+import static jdk.vm.ci.aarch64.AArch64.v3;
+import static jdk.vm.ci.aarch64.AArch64.v4;
+import static jdk.vm.ci.aarch64.AArch64.v5;
+import static jdk.vm.ci.aarch64.AArch64.v6;
+import static jdk.vm.ci.aarch64.AArch64.v7;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
+import jdk.vm.ci.aarch64.AArch64;
+import jdk.vm.ci.code.Architecture;
+import jdk.vm.ci.code.CallingConvention;
+import jdk.vm.ci.code.CallingConvention.Type;
+import jdk.vm.ci.code.Register;
+import jdk.vm.ci.code.RegisterAttributes;
+import jdk.vm.ci.code.RegisterConfig;
+import jdk.vm.ci.code.StackSlot;
+import jdk.vm.ci.code.TargetDescription;
+import jdk.vm.ci.common.JVMCIError;
+import jdk.vm.ci.hotspot.HotSpotVMConfig;
+import jdk.vm.ci.meta.AllocatableValue;
+import jdk.vm.ci.meta.JavaKind;
+import jdk.vm.ci.meta.JavaType;
+import jdk.vm.ci.meta.LIRKind;
+import jdk.vm.ci.meta.PlatformKind;
+import jdk.vm.ci.meta.Value;
+
+public class AArch64HotSpotRegisterConfig implements RegisterConfig {
+
+ private final Architecture architecture;
+
+ private final Register[] allocatable;
+
+ private final int maxFrameSize;
+
+ /**
+ * The caller saved registers always include all parameter registers.
+ */
+ private final Register[] callerSaved;
+
+ private final boolean allAllocatableAreCallerSaved;
+
+ private final RegisterAttributes[] attributesMap;
+
+ public int getMaximumFrameSize() {
+ return maxFrameSize;
+ }
+
+ @Override
+ public Register[] getAllocatableRegisters() {
+ return allocatable.clone();
+ }
+
+ public Register[] filterAllocatableRegisters(PlatformKind kind, Register[] registers) {
+ ArrayList<Register> list = new ArrayList<>();
+ for (Register reg : registers) {
+ if (architecture.canStoreValue(reg.getRegisterCategory(), kind)) {
+ list.add(reg);
+ }
+ }
+
+ Register[] ret = list.toArray(new Register[list.size()]);
+ return ret;
+ }
+
+ @Override
+ public RegisterAttributes[] getAttributesMap() {
+ return attributesMap.clone();
+ }
+
+ private final Register[] javaGeneralParameterRegisters = {r1, r2, r3, r4, r5, r6, r7, r0};
+ private final Register[] nativeGeneralParameterRegisters = {r0, r1, r2, r3, r4, r5, r6, r7};
+ private final Register[] simdParameterRegisters = {v0, v1, v2, v3, v4, v5, v6, v7};
+
+ public static final Register inlineCacheRegister = r9;
+
+ /**
+ * Vtable stubs expect the metaspace Method in r12.
+ */
+ public static final Register metaspaceMethodRegister = r12;
+
+ public static final Register heapBaseRegister = r27;
+ public static final Register threadRegister = r28;
+ public static final Register fp = r29;
+
+ private static Register[] initAllocatable(Architecture arch, boolean reserveForHeapBase) {
+ Register[] allRegisters = arch.getAvailableValueRegisters();
+ Register[] registers = new Register[allRegisters.length - (reserveForHeapBase ? 5 : 4)];
+
+ int idx = 0;
+ for (Register reg : allRegisters) {
+ if (reg.equals(threadRegister) || reg.equals(fp) || reg.equals(lr) || reg.equals(sp)) {
+ // skip thread register, frame pointer, link register and stack pointer
+ continue;
+ }
+ if (reserveForHeapBase && reg.equals(heapBaseRegister)) {
+ // skip heap base register
+ continue;
+ }
+
+ registers[idx++] = reg;
+ }
+
+ assert idx == registers.length;
+ return registers;
+ }
+
+ public AArch64HotSpotRegisterConfig(Architecture architecture, HotSpotVMConfig config) {
+ this(architecture, config, initAllocatable(architecture, config.useCompressedOops));
+ assert callerSaved.length >= allocatable.length;
+ }
+
+ public AArch64HotSpotRegisterConfig(Architecture architecture, HotSpotVMConfig config, Register[] allocatable) {
+ this.architecture = architecture;
+ this.maxFrameSize = config.maxFrameSize;
+
+ this.allocatable = allocatable.clone();
+ Set<Register> callerSaveSet = new HashSet<>();
+ Collections.addAll(callerSaveSet, allocatable);
+ Collections.addAll(callerSaveSet, simdParameterRegisters);
+ Collections.addAll(callerSaveSet, javaGeneralParameterRegisters);
+ Collections.addAll(callerSaveSet, nativeGeneralParameterRegisters);
+ callerSaved = callerSaveSet.toArray(new Register[callerSaveSet.size()]);
+
+ allAllocatableAreCallerSaved = true;
+ attributesMap = RegisterAttributes.createMap(this, AArch64.allRegisters);
+ }
+
+ @Override
+ public Register[] getCallerSaveRegisters() {
+ return callerSaved;
+ }
+
+ public Register[] getCalleeSaveRegisters() {
+ return null;
+ }
+
+ @Override
+ public boolean areAllAllocatableRegistersCallerSaved() {
+ return allAllocatableAreCallerSaved;
+ }
+
+ @Override
+ public Register getRegisterForRole(int index) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public CallingConvention getCallingConvention(Type type, JavaType returnType, JavaType[] parameterTypes, TargetDescription target, boolean stackOnly) {
+ if (type == Type.NativeCall) {
+ return callingConvention(nativeGeneralParameterRegisters, returnType, parameterTypes, type, target, stackOnly);
+ }
+ // On x64, parameter locations are the same whether viewed
+ // from the caller or callee perspective
+ return callingConvention(javaGeneralParameterRegisters, returnType, parameterTypes, type, target, stackOnly);
+ }
+
+ public Register[] getCallingConventionRegisters(Type type, JavaKind kind) {
+ switch (kind) {
+ case Boolean:
+ case Byte:
+ case Short:
+ case Char:
+ case Int:
+ case Long:
+ case Object:
+ return type == Type.NativeCall ? nativeGeneralParameterRegisters : javaGeneralParameterRegisters;
+ case Float:
+ case Double:
+ return simdParameterRegisters;
+ default:
+ throw JVMCIError.shouldNotReachHere();
+ }
+ }
+
+ private CallingConvention callingConvention(Register[] generalParameterRegisters, JavaType returnType, JavaType[] parameterTypes, Type type, TargetDescription target, boolean stackOnly) {
+ AllocatableValue[] locations = new AllocatableValue[parameterTypes.length];
+
+ int currentGeneral = 0;
+ int currentSIMD = 0;
+ int currentStackOffset = 0;
+
+ for (int i = 0; i < parameterTypes.length; i++) {
+ final JavaKind kind = parameterTypes[i].getJavaKind().getStackKind();
+
+ switch (kind) {
+ case Byte:
+ case Boolean:
+ case Short:
+ case Char:
+ case Int:
+ case Long:
+ case Object:
+ if (!stackOnly && currentGeneral < generalParameterRegisters.length) {
+ Register register = generalParameterRegisters[currentGeneral++];
+ locations[i] = register.asValue(target.getLIRKind(kind));
+ }
+ break;
+ case Float:
+ case Double:
+ if (!stackOnly && currentSIMD < simdParameterRegisters.length) {
+ Register register = simdParameterRegisters[currentSIMD++];
+ locations[i] = register.asValue(target.getLIRKind(kind));
+ }
+ break;
+ default:
+ throw JVMCIError.shouldNotReachHere();
+ }
+
+ if (locations[i] == null) {
+ LIRKind lirKind = target.getLIRKind(kind);
+ locations[i] = StackSlot.get(lirKind, currentStackOffset, !type.out);
+ currentStackOffset += Math.max(lirKind.getPlatformKind().getSizeInBytes(), target.wordSize);
+ }
+ }
+
+ JavaKind returnKind = returnType == null ? JavaKind.Void : returnType.getJavaKind();
+ AllocatableValue returnLocation = returnKind == JavaKind.Void ? Value.ILLEGAL : getReturnRegister(returnKind).asValue(target.getLIRKind(returnKind.getStackKind()));
+ return new CallingConvention(currentStackOffset, returnLocation, locations);
+ }
+
+ @Override
+ public Register getReturnRegister(JavaKind kind) {
+ switch (kind) {
+ case Boolean:
+ case Byte:
+ case Char:
+ case Short:
+ case Int:
+ case Long:
+ case Object:
+ return r0;
+ case Float:
+ case Double:
+ return v0;
+ case Void:
+ case Illegal:
+ return null;
+ default:
+ throw new UnsupportedOperationException("no return register for type " + kind);
+ }
+ }
+
+ @Override
+ public Register getFrameRegister() {
+ return sp;
+ }
+
+ @Override
+ public String toString() {
+ return String.format("Allocatable: " + Arrays.toString(getAllocatableRegisters()) + "%n" + "CallerSave: " + Arrays.toString(getCallerSaveRegisters()) + "%n");
+ }
+}
--- a/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot.amd64/src/jdk/vm/ci/hotspot/amd64/AMD64HotSpotJVMCIBackendFactory.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot.amd64/src/jdk/vm/ci/hotspot/amd64/AMD64HotSpotJVMCIBackendFactory.java Thu Dec 24 17:21:09 2015 +0100
@@ -49,79 +49,79 @@
protected EnumSet<AMD64.CPUFeature> computeFeatures(HotSpotVMConfig config) {
// Configure the feature set using the HotSpot flag settings.
EnumSet<AMD64.CPUFeature> features = EnumSet.noneOf(AMD64.CPUFeature.class);
- if ((config.x86CPUFeatures & config.cpu3DNOWPREFETCH) != 0) {
+ if ((config.vmVersionFeatures & config.amd643DNOWPREFETCH) != 0) {
features.add(AMD64.CPUFeature.AMD_3DNOW_PREFETCH);
}
assert config.useSSE >= 2 : "minimum config for x64";
features.add(AMD64.CPUFeature.SSE);
features.add(AMD64.CPUFeature.SSE2);
- if ((config.x86CPUFeatures & config.cpuSSE3) != 0) {
+ if ((config.vmVersionFeatures & config.amd64SSE3) != 0) {
features.add(AMD64.CPUFeature.SSE3);
}
- if ((config.x86CPUFeatures & config.cpuSSSE3) != 0) {
+ if ((config.vmVersionFeatures & config.amd64SSSE3) != 0) {
features.add(AMD64.CPUFeature.SSSE3);
}
- if ((config.x86CPUFeatures & config.cpuSSE4A) != 0) {
+ if ((config.vmVersionFeatures & config.amd64SSE4A) != 0) {
features.add(AMD64.CPUFeature.SSE4A);
}
- if ((config.x86CPUFeatures & config.cpuSSE41) != 0) {
+ if ((config.vmVersionFeatures & config.amd64SSE41) != 0) {
features.add(AMD64.CPUFeature.SSE4_1);
}
- if ((config.x86CPUFeatures & config.cpuSSE42) != 0) {
+ if ((config.vmVersionFeatures & config.amd64SSE42) != 0) {
features.add(AMD64.CPUFeature.SSE4_2);
}
- if ((config.x86CPUFeatures & config.cpuPOPCNT) != 0) {
+ if ((config.vmVersionFeatures & config.amd64POPCNT) != 0) {
features.add(AMD64.CPUFeature.POPCNT);
}
- if ((config.x86CPUFeatures & config.cpuLZCNT) != 0) {
+ if ((config.vmVersionFeatures & config.amd64LZCNT) != 0) {
features.add(AMD64.CPUFeature.LZCNT);
}
- if ((config.x86CPUFeatures & config.cpuERMS) != 0) {
+ if ((config.vmVersionFeatures & config.amd64ERMS) != 0) {
features.add(AMD64.CPUFeature.ERMS);
}
- if ((config.x86CPUFeatures & config.cpuAVX) != 0) {
+ if ((config.vmVersionFeatures & config.amd64AVX) != 0) {
features.add(AMD64.CPUFeature.AVX);
}
- if ((config.x86CPUFeatures & config.cpuAVX2) != 0) {
+ if ((config.vmVersionFeatures & config.amd64AVX2) != 0) {
features.add(AMD64.CPUFeature.AVX2);
}
- if ((config.x86CPUFeatures & config.cpuAES) != 0) {
+ if ((config.vmVersionFeatures & config.amd64AES) != 0) {
features.add(AMD64.CPUFeature.AES);
}
- if ((config.x86CPUFeatures & config.cpu3DNOWPREFETCH) != 0) {
+ if ((config.vmVersionFeatures & config.amd643DNOWPREFETCH) != 0) {
features.add(AMD64.CPUFeature.AMD_3DNOW_PREFETCH);
}
- if ((config.x86CPUFeatures & config.cpuBMI1) != 0) {
+ if ((config.vmVersionFeatures & config.amd64BMI1) != 0) {
features.add(AMD64.CPUFeature.BMI1);
}
- if ((config.x86CPUFeatures & config.cpuBMI2) != 0) {
+ if ((config.vmVersionFeatures & config.amd64BMI2) != 0) {
features.add(AMD64.CPUFeature.BMI2);
}
- if ((config.x86CPUFeatures & config.cpuRTM) != 0) {
+ if ((config.vmVersionFeatures & config.amd64RTM) != 0) {
features.add(AMD64.CPUFeature.RTM);
}
- if ((config.x86CPUFeatures & config.cpuADX) != 0) {
+ if ((config.vmVersionFeatures & config.amd64ADX) != 0) {
features.add(AMD64.CPUFeature.ADX);
}
- if ((config.x86CPUFeatures & config.cpuAVX512F) != 0) {
+ if ((config.vmVersionFeatures & config.amd64AVX512F) != 0) {
features.add(AMD64.CPUFeature.AVX512F);
}
- if ((config.x86CPUFeatures & config.cpuAVX512DQ) != 0) {
+ if ((config.vmVersionFeatures & config.amd64AVX512DQ) != 0) {
features.add(AMD64.CPUFeature.AVX512DQ);
}
- if ((config.x86CPUFeatures & config.cpuAVX512PF) != 0) {
+ if ((config.vmVersionFeatures & config.amd64AVX512PF) != 0) {
features.add(AMD64.CPUFeature.AVX512PF);
}
- if ((config.x86CPUFeatures & config.cpuAVX512ER) != 0) {
+ if ((config.vmVersionFeatures & config.amd64AVX512ER) != 0) {
features.add(AMD64.CPUFeature.AVX512ER);
}
- if ((config.x86CPUFeatures & config.cpuAVX512CD) != 0) {
+ if ((config.vmVersionFeatures & config.amd64AVX512CD) != 0) {
features.add(AMD64.CPUFeature.AVX512CD);
}
- if ((config.x86CPUFeatures & config.cpuAVX512BW) != 0) {
+ if ((config.vmVersionFeatures & config.amd64AVX512BW) != 0) {
features.add(AMD64.CPUFeature.AVX512BW);
}
- if ((config.x86CPUFeatures & config.cpuAVX512VL) != 0) {
+ if ((config.vmVersionFeatures & config.amd64AVX512VL) != 0) {
features.add(AMD64.CPUFeature.AVX512VL);
}
return features;
--- a/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot.sparc/src/jdk/vm/ci/hotspot/sparc/SPARCHotSpotJVMCIBackendFactory.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot.sparc/src/jdk/vm/ci/hotspot/sparc/SPARCHotSpotJVMCIBackendFactory.java Thu Dec 24 17:21:09 2015 +0100
@@ -60,73 +60,73 @@
protected EnumSet<CPUFeature> computeFeatures(HotSpotVMConfig config) {
EnumSet<CPUFeature> features = EnumSet.noneOf(CPUFeature.class);
- if ((config.sparcFeatures & config.vis1Instructions) != 0) {
+ if ((config.vmVersionFeatures & config.sparcVis1Instructions) != 0) {
features.add(CPUFeature.VIS1);
}
- if ((config.sparcFeatures & config.vis2Instructions) != 0) {
+ if ((config.vmVersionFeatures & config.sparcVis2Instructions) != 0) {
features.add(CPUFeature.VIS2);
}
- if ((config.sparcFeatures & config.vis3Instructions) != 0) {
+ if ((config.vmVersionFeatures & config.sparcVis3Instructions) != 0) {
features.add(CPUFeature.VIS3);
}
- if ((config.sparcFeatures & config.cbcondInstructions) != 0) {
+ if ((config.vmVersionFeatures & config.sparcCbcondInstructions) != 0) {
features.add(CPUFeature.CBCOND);
}
- if ((config.sparcFeatures & config.v8Instructions) != 0) {
+ if ((config.vmVersionFeatures & config.sparcV8Instructions) != 0) {
features.add(CPUFeature.V8);
}
- if ((config.sparcFeatures & config.hardwareMul32) != 0) {
+ if ((config.vmVersionFeatures & config.sparcHardwareMul32) != 0) {
features.add(CPUFeature.HARDWARE_MUL32);
}
- if ((config.sparcFeatures & config.hardwareDiv32) != 0) {
+ if ((config.vmVersionFeatures & config.sparcHardwareDiv32) != 0) {
features.add(CPUFeature.HARDWARE_DIV32);
}
- if ((config.sparcFeatures & config.hardwareFsmuld) != 0) {
+ if ((config.vmVersionFeatures & config.sparcHardwareFsmuld) != 0) {
features.add(CPUFeature.HARDWARE_FSMULD);
}
- if ((config.sparcFeatures & config.hardwarePopc) != 0) {
+ if ((config.vmVersionFeatures & config.sparcHardwarePopc) != 0) {
features.add(CPUFeature.HARDWARE_POPC);
}
- if ((config.sparcFeatures & config.v9Instructions) != 0) {
+ if ((config.vmVersionFeatures & config.sparcV9Instructions) != 0) {
features.add(CPUFeature.V9);
}
- if ((config.sparcFeatures & config.sun4v) != 0) {
+ if ((config.vmVersionFeatures & config.sparcSun4v) != 0) {
features.add(CPUFeature.SUN4V);
}
- if ((config.sparcFeatures & config.blkInitInstructions) != 0) {
+ if ((config.vmVersionFeatures & config.sparcBlkInitInstructions) != 0) {
features.add(CPUFeature.BLK_INIT_INSTRUCTIONS);
}
- if ((config.sparcFeatures & config.fmafInstructions) != 0) {
+ if ((config.vmVersionFeatures & config.sparcFmafInstructions) != 0) {
features.add(CPUFeature.FMAF);
}
- if ((config.sparcFeatures & config.fmauInstructions) != 0) {
+ if ((config.vmVersionFeatures & config.sparcFmauInstructions) != 0) {
features.add(CPUFeature.FMAU);
}
- if ((config.sparcFeatures & config.sparc64Family) != 0) {
+ if ((config.vmVersionFeatures & config.sparcSparc64Family) != 0) {
features.add(CPUFeature.SPARC64_FAMILY);
}
- if ((config.sparcFeatures & config.mFamily) != 0) {
+ if ((config.vmVersionFeatures & config.sparcMFamily) != 0) {
features.add(CPUFeature.M_FAMILY);
}
- if ((config.sparcFeatures & config.tFamily) != 0) {
+ if ((config.vmVersionFeatures & config.sparcTFamily) != 0) {
features.add(CPUFeature.T_FAMILY);
}
- if ((config.sparcFeatures & config.t1Model) != 0) {
+ if ((config.vmVersionFeatures & config.sparcT1Model) != 0) {
features.add(CPUFeature.T1_MODEL);
}
- if ((config.sparcFeatures & config.sparc5Instructions) != 0) {
+ if ((config.vmVersionFeatures & config.sparcSparc5Instructions) != 0) {
features.add(CPUFeature.SPARC5);
}
- if ((config.sparcFeatures & config.aesInstructions) != 0) {
+ if ((config.vmVersionFeatures & config.sparcAesInstructions) != 0) {
features.add(CPUFeature.SPARC64_FAMILY);
}
- if ((config.sparcFeatures & config.sha1Instruction) != 0) {
+ if ((config.vmVersionFeatures & config.sparcSha1Instruction) != 0) {
features.add(CPUFeature.SHA1);
}
- if ((config.sparcFeatures & config.sha256Instruction) != 0) {
+ if ((config.vmVersionFeatures & config.sparcSha256Instruction) != 0) {
features.add(CPUFeature.SHA256);
}
- if ((config.sparcFeatures & config.sha512Instruction) != 0) {
+ if ((config.vmVersionFeatures & config.sparcSha512Instruction) != 0) {
features.add(CPUFeature.SHA512);
}
return features;
--- a/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotVMConfig.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotVMConfig.java Thu Dec 24 17:21:09 2015 +0100
@@ -907,67 +907,67 @@
@HotSpotVMFlag(name = "UseSSE") @Stable public int useSSE;
@HotSpotVMFlag(name = "UseAVX", archs = {"amd64"}) @Stable public int useAVX;
- // X86 specific values
- @HotSpotVMField(name = "VM_Version::_cpuFeatures", type = "uint64_t", get = HotSpotVMField.Type.VALUE, archs = {"amd64"}) @Stable public long x86CPUFeatures;
- @HotSpotVMConstant(name = "VM_Version::CPU_CX8", archs = {"amd64"}) @Stable public long cpuCX8;
- @HotSpotVMConstant(name = "VM_Version::CPU_CMOV", archs = {"amd64"}) @Stable public long cpuCMOV;
- @HotSpotVMConstant(name = "VM_Version::CPU_FXSR", archs = {"amd64"}) @Stable public long cpuFXSR;
- @HotSpotVMConstant(name = "VM_Version::CPU_HT", archs = {"amd64"}) @Stable public long cpuHT;
- @HotSpotVMConstant(name = "VM_Version::CPU_MMX", archs = {"amd64"}) @Stable public long cpuMMX;
- @HotSpotVMConstant(name = "VM_Version::CPU_3DNOW_PREFETCH", archs = {"amd64"}) @Stable public long cpu3DNOWPREFETCH;
- @HotSpotVMConstant(name = "VM_Version::CPU_SSE", archs = {"amd64"}) @Stable public long cpuSSE;
- @HotSpotVMConstant(name = "VM_Version::CPU_SSE2", archs = {"amd64"}) @Stable public long cpuSSE2;
- @HotSpotVMConstant(name = "VM_Version::CPU_SSE3", archs = {"amd64"}) @Stable public long cpuSSE3;
- @HotSpotVMConstant(name = "VM_Version::CPU_SSSE3", archs = {"amd64"}) @Stable public long cpuSSSE3;
- @HotSpotVMConstant(name = "VM_Version::CPU_SSE4A", archs = {"amd64"}) @Stable public long cpuSSE4A;
- @HotSpotVMConstant(name = "VM_Version::CPU_SSE4_1", archs = {"amd64"}) @Stable public long cpuSSE41;
- @HotSpotVMConstant(name = "VM_Version::CPU_SSE4_2", archs = {"amd64"}) @Stable public long cpuSSE42;
- @HotSpotVMConstant(name = "VM_Version::CPU_POPCNT", archs = {"amd64"}) @Stable public long cpuPOPCNT;
- @HotSpotVMConstant(name = "VM_Version::CPU_LZCNT", archs = {"amd64"}) @Stable public long cpuLZCNT;
- @HotSpotVMConstant(name = "VM_Version::CPU_TSC", archs = {"amd64"}) @Stable public long cpuTSC;
- @HotSpotVMConstant(name = "VM_Version::CPU_TSCINV", archs = {"amd64"}) @Stable public long cpuTSCINV;
- @HotSpotVMConstant(name = "VM_Version::CPU_AVX", archs = {"amd64"}) @Stable public long cpuAVX;
- @HotSpotVMConstant(name = "VM_Version::CPU_AVX2", archs = {"amd64"}) @Stable public long cpuAVX2;
- @HotSpotVMConstant(name = "VM_Version::CPU_AES", archs = {"amd64"}) @Stable public long cpuAES;
- @HotSpotVMConstant(name = "VM_Version::CPU_ERMS", archs = {"amd64"}) @Stable public long cpuERMS;
- @HotSpotVMConstant(name = "VM_Version::CPU_CLMUL", archs = {"amd64"}) @Stable public long cpuCLMUL;
- @HotSpotVMConstant(name = "VM_Version::CPU_BMI1", archs = {"amd64"}) @Stable public long cpuBMI1;
- @HotSpotVMConstant(name = "VM_Version::CPU_BMI2", archs = {"amd64"}) @Stable public long cpuBMI2;
- @HotSpotVMConstant(name = "VM_Version::CPU_RTM", archs = {"amd64"}) @Stable public long cpuRTM;
- @HotSpotVMConstant(name = "VM_Version::CPU_ADX", archs = {"amd64"}) @Stable public long cpuADX;
- @HotSpotVMConstant(name = "VM_Version::CPU_AVX512F", archs = {"amd64"}) @Stable public long cpuAVX512F;
- @HotSpotVMConstant(name = "VM_Version::CPU_AVX512DQ", archs = {"amd64"}) @Stable public long cpuAVX512DQ;
- @HotSpotVMConstant(name = "VM_Version::CPU_AVX512PF", archs = {"amd64"}) @Stable public long cpuAVX512PF;
- @HotSpotVMConstant(name = "VM_Version::CPU_AVX512ER", archs = {"amd64"}) @Stable public long cpuAVX512ER;
- @HotSpotVMConstant(name = "VM_Version::CPU_AVX512CD", archs = {"amd64"}) @Stable public long cpuAVX512CD;
- @HotSpotVMConstant(name = "VM_Version::CPU_AVX512BW", archs = {"amd64"}) @Stable public long cpuAVX512BW;
- @HotSpotVMConstant(name = "VM_Version::CPU_AVX512VL", archs = {"amd64"}) @Stable public long cpuAVX512VL;
+ @HotSpotVMField(name = "Abstract_VM_Version::_features", type = "uint64_t", get = HotSpotVMField.Type.VALUE) @Stable public long vmVersionFeatures;
+
+ // AMD64 specific values
+ @HotSpotVMConstant(name = "VM_Version::CPU_CX8", archs = {"amd64"}) @Stable public long amd64CX8;
+ @HotSpotVMConstant(name = "VM_Version::CPU_CMOV", archs = {"amd64"}) @Stable public long amd64CMOV;
+ @HotSpotVMConstant(name = "VM_Version::CPU_FXSR", archs = {"amd64"}) @Stable public long amd64FXSR;
+ @HotSpotVMConstant(name = "VM_Version::CPU_HT", archs = {"amd64"}) @Stable public long amd64HT;
+ @HotSpotVMConstant(name = "VM_Version::CPU_MMX", archs = {"amd64"}) @Stable public long amd64MMX;
+ @HotSpotVMConstant(name = "VM_Version::CPU_3DNOW_PREFETCH", archs = {"amd64"}) @Stable public long amd643DNOWPREFETCH;
+ @HotSpotVMConstant(name = "VM_Version::CPU_SSE", archs = {"amd64"}) @Stable public long amd64SSE;
+ @HotSpotVMConstant(name = "VM_Version::CPU_SSE2", archs = {"amd64"}) @Stable public long amd64SSE2;
+ @HotSpotVMConstant(name = "VM_Version::CPU_SSE3", archs = {"amd64"}) @Stable public long amd64SSE3;
+ @HotSpotVMConstant(name = "VM_Version::CPU_SSSE3", archs = {"amd64"}) @Stable public long amd64SSSE3;
+ @HotSpotVMConstant(name = "VM_Version::CPU_SSE4A", archs = {"amd64"}) @Stable public long amd64SSE4A;
+ @HotSpotVMConstant(name = "VM_Version::CPU_SSE4_1", archs = {"amd64"}) @Stable public long amd64SSE41;
+ @HotSpotVMConstant(name = "VM_Version::CPU_SSE4_2", archs = {"amd64"}) @Stable public long amd64SSE42;
+ @HotSpotVMConstant(name = "VM_Version::CPU_POPCNT", archs = {"amd64"}) @Stable public long amd64POPCNT;
+ @HotSpotVMConstant(name = "VM_Version::CPU_LZCNT", archs = {"amd64"}) @Stable public long amd64LZCNT;
+ @HotSpotVMConstant(name = "VM_Version::CPU_TSC", archs = {"amd64"}) @Stable public long amd64TSC;
+ @HotSpotVMConstant(name = "VM_Version::CPU_TSCINV", archs = {"amd64"}) @Stable public long amd64TSCINV;
+ @HotSpotVMConstant(name = "VM_Version::CPU_AVX", archs = {"amd64"}) @Stable public long amd64AVX;
+ @HotSpotVMConstant(name = "VM_Version::CPU_AVX2", archs = {"amd64"}) @Stable public long amd64AVX2;
+ @HotSpotVMConstant(name = "VM_Version::CPU_AES", archs = {"amd64"}) @Stable public long amd64AES;
+ @HotSpotVMConstant(name = "VM_Version::CPU_ERMS", archs = {"amd64"}) @Stable public long amd64ERMS;
+ @HotSpotVMConstant(name = "VM_Version::CPU_CLMUL", archs = {"amd64"}) @Stable public long amd64CLMUL;
+ @HotSpotVMConstant(name = "VM_Version::CPU_BMI1", archs = {"amd64"}) @Stable public long amd64BMI1;
+ @HotSpotVMConstant(name = "VM_Version::CPU_BMI2", archs = {"amd64"}) @Stable public long amd64BMI2;
+ @HotSpotVMConstant(name = "VM_Version::CPU_RTM", archs = {"amd64"}) @Stable public long amd64RTM;
+ @HotSpotVMConstant(name = "VM_Version::CPU_ADX", archs = {"amd64"}) @Stable public long amd64ADX;
+ @HotSpotVMConstant(name = "VM_Version::CPU_AVX512F", archs = {"amd64"}) @Stable public long amd64AVX512F;
+ @HotSpotVMConstant(name = "VM_Version::CPU_AVX512DQ", archs = {"amd64"}) @Stable public long amd64AVX512DQ;
+ @HotSpotVMConstant(name = "VM_Version::CPU_AVX512PF", archs = {"amd64"}) @Stable public long amd64AVX512PF;
+ @HotSpotVMConstant(name = "VM_Version::CPU_AVX512ER", archs = {"amd64"}) @Stable public long amd64AVX512ER;
+ @HotSpotVMConstant(name = "VM_Version::CPU_AVX512CD", archs = {"amd64"}) @Stable public long amd64AVX512CD;
+ @HotSpotVMConstant(name = "VM_Version::CPU_AVX512BW", archs = {"amd64"}) @Stable public long amd64AVX512BW;
+ @HotSpotVMConstant(name = "VM_Version::CPU_AVX512VL", archs = {"amd64"}) @Stable public long amd64AVX512VL;
// SPARC specific values
- @HotSpotVMField(name = "VM_Version::_features", type = "int", get = HotSpotVMField.Type.VALUE, archs = {"sparc"}) @Stable public int sparcFeatures;
- @HotSpotVMConstant(name = "VM_Version::vis3_instructions_m", archs = {"sparc"}) @Stable public int vis3Instructions;
- @HotSpotVMConstant(name = "VM_Version::vis2_instructions_m", archs = {"sparc"}) @Stable public int vis2Instructions;
- @HotSpotVMConstant(name = "VM_Version::vis1_instructions_m", archs = {"sparc"}) @Stable public int vis1Instructions;
- @HotSpotVMConstant(name = "VM_Version::cbcond_instructions_m", archs = {"sparc"}) @Stable public int cbcondInstructions;
- @HotSpotVMConstant(name = "VM_Version::v8_instructions_m", archs = {"sparc"}) @Stable public int v8Instructions;
- @HotSpotVMConstant(name = "VM_Version::hardware_mul32_m", archs = {"sparc"}) @Stable public int hardwareMul32;
- @HotSpotVMConstant(name = "VM_Version::hardware_div32_m", archs = {"sparc"}) @Stable public int hardwareDiv32;
- @HotSpotVMConstant(name = "VM_Version::hardware_fsmuld_m", archs = {"sparc"}) @Stable public int hardwareFsmuld;
- @HotSpotVMConstant(name = "VM_Version::hardware_popc_m", archs = {"sparc"}) @Stable public int hardwarePopc;
- @HotSpotVMConstant(name = "VM_Version::v9_instructions_m", archs = {"sparc"}) @Stable public int v9Instructions;
- @HotSpotVMConstant(name = "VM_Version::sun4v_m", archs = {"sparc"}) @Stable public int sun4v;
- @HotSpotVMConstant(name = "VM_Version::blk_init_instructions_m", archs = {"sparc"}) @Stable public int blkInitInstructions;
- @HotSpotVMConstant(name = "VM_Version::fmaf_instructions_m", archs = {"sparc"}) @Stable public int fmafInstructions;
- @HotSpotVMConstant(name = "VM_Version::fmau_instructions_m", archs = {"sparc"}) @Stable public int fmauInstructions;
- @HotSpotVMConstant(name = "VM_Version::sparc64_family_m", archs = {"sparc"}) @Stable public int sparc64Family;
- @HotSpotVMConstant(name = "VM_Version::M_family_m", archs = {"sparc"}) @Stable public int mFamily;
- @HotSpotVMConstant(name = "VM_Version::T_family_m", archs = {"sparc"}) @Stable public int tFamily;
- @HotSpotVMConstant(name = "VM_Version::T1_model_m", archs = {"sparc"}) @Stable public int t1Model;
- @HotSpotVMConstant(name = "VM_Version::sparc5_instructions_m", archs = {"sparc"}) @Stable public int sparc5Instructions;
- @HotSpotVMConstant(name = "VM_Version::aes_instructions_m", archs = {"sparc"}) @Stable public int aesInstructions;
- @HotSpotVMConstant(name = "VM_Version::sha1_instruction_m", archs = {"sparc"}) @Stable public int sha1Instruction;
- @HotSpotVMConstant(name = "VM_Version::sha256_instruction_m", archs = {"sparc"}) @Stable public int sha256Instruction;
- @HotSpotVMConstant(name = "VM_Version::sha512_instruction_m", archs = {"sparc"}) @Stable public int sha512Instruction;
+ @HotSpotVMConstant(name = "VM_Version::vis3_instructions_m", archs = {"sparc"}) @Stable public int sparcVis3Instructions;
+ @HotSpotVMConstant(name = "VM_Version::vis2_instructions_m", archs = {"sparc"}) @Stable public int sparcVis2Instructions;
+ @HotSpotVMConstant(name = "VM_Version::vis1_instructions_m", archs = {"sparc"}) @Stable public int sparcVis1Instructions;
+ @HotSpotVMConstant(name = "VM_Version::cbcond_instructions_m", archs = {"sparc"}) @Stable public int sparcCbcondInstructions;
+ @HotSpotVMConstant(name = "VM_Version::v8_instructions_m", archs = {"sparc"}) @Stable public int sparcV8Instructions;
+ @HotSpotVMConstant(name = "VM_Version::hardware_mul32_m", archs = {"sparc"}) @Stable public int sparcHardwareMul32;
+ @HotSpotVMConstant(name = "VM_Version::hardware_div32_m", archs = {"sparc"}) @Stable public int sparcHardwareDiv32;
+ @HotSpotVMConstant(name = "VM_Version::hardware_fsmuld_m", archs = {"sparc"}) @Stable public int sparcHardwareFsmuld;
+ @HotSpotVMConstant(name = "VM_Version::hardware_popc_m", archs = {"sparc"}) @Stable public int sparcHardwarePopc;
+ @HotSpotVMConstant(name = "VM_Version::v9_instructions_m", archs = {"sparc"}) @Stable public int sparcV9Instructions;
+ @HotSpotVMConstant(name = "VM_Version::sun4v_m", archs = {"sparc"}) @Stable public int sparcSun4v;
+ @HotSpotVMConstant(name = "VM_Version::blk_init_instructions_m", archs = {"sparc"}) @Stable public int sparcBlkInitInstructions;
+ @HotSpotVMConstant(name = "VM_Version::fmaf_instructions_m", archs = {"sparc"}) @Stable public int sparcFmafInstructions;
+ @HotSpotVMConstant(name = "VM_Version::fmau_instructions_m", archs = {"sparc"}) @Stable public int sparcFmauInstructions;
+ @HotSpotVMConstant(name = "VM_Version::sparc64_family_m", archs = {"sparc"}) @Stable public int sparcSparc64Family;
+ @HotSpotVMConstant(name = "VM_Version::M_family_m", archs = {"sparc"}) @Stable public int sparcMFamily;
+ @HotSpotVMConstant(name = "VM_Version::T_family_m", archs = {"sparc"}) @Stable public int sparcTFamily;
+ @HotSpotVMConstant(name = "VM_Version::T1_model_m", archs = {"sparc"}) @Stable public int sparcT1Model;
+ @HotSpotVMConstant(name = "VM_Version::sparc5_instructions_m", archs = {"sparc"}) @Stable public int sparcSparc5Instructions;
+ @HotSpotVMConstant(name = "VM_Version::aes_instructions_m", archs = {"sparc"}) @Stable public int sparcAesInstructions;
+ @HotSpotVMConstant(name = "VM_Version::sha1_instruction_m", archs = {"sparc"}) @Stable public int sparcSha1Instruction;
+ @HotSpotVMConstant(name = "VM_Version::sha256_instruction_m", archs = {"sparc"}) @Stable public int sparcSha256Instruction;
+ @HotSpotVMConstant(name = "VM_Version::sha512_instruction_m", archs = {"sparc"}) @Stable public int sparcSha512Instruction;
@HotSpotVMFlag(name = "UseBlockZeroing", archs = {"sparc"}) @Stable public boolean useBlockZeroing;
@HotSpotVMFlag(name = "BlockZeroingLowLimit", archs = {"sparc"}) @Stable public int blockZeroingLowLimit;
--- a/hotspot/src/os/aix/vm/os_aix.cpp Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/src/os/aix/vm/os_aix.cpp Thu Dec 24 17:21:09 2015 +0100
@@ -1643,7 +1643,7 @@
st->print("total %d", os::processor_count());
// It's not safe to query number of active processors after crash.
// st->print("(active %d)", os::active_processor_count());
- st->print(" %s", VM_Version::cpu_features());
+ st->print(" %s", VM_Version::features());
st->cr();
}
--- a/hotspot/src/share/vm/jvmci/vmStructs_jvmci.cpp Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/src/share/vm/jvmci/vmStructs_jvmci.cpp Thu Dec 24 17:21:09 2015 +0100
@@ -74,6 +74,8 @@
static_field(CompilerToVM::Data, cardtable_start_address, jbyte*) \
static_field(CompilerToVM::Data, cardtable_shift, int) \
\
+ static_field(Abstract_VM_Version, _features, uint64_t) \
+ \
nonstatic_field(Array<int>, _length, int) \
unchecked_nonstatic_field(Array<u1>, _data, sizeof(u1)) \
unchecked_nonstatic_field(Array<u2>, _data, sizeof(u2)) \
@@ -586,11 +588,7 @@
#ifdef TARGET_ARCH_x86
#define VM_STRUCTS_CPU(nonstatic_field, static_field, unchecked_nonstatic_field, volatile_nonstatic_field, nonproduct_nonstatic_field, c2_nonstatic_field, unchecked_c1_static_field, unchecked_c2_static_field) \
- volatile_nonstatic_field(JavaFrameAnchor, _last_Java_fp, intptr_t*) \
- static_field(VM_Version, _cpuFeatures, uint64_t)
-
-#define VM_TYPES_CPU(declare_type, declare_toplevel_type, declare_oop_type, declare_integer_type, declare_unsigned_integer_type, declare_c1_toplevel_type, declare_c2_type, declare_c2_toplevel_type) \
- declare_toplevel_type(VM_Version)
+ volatile_nonstatic_field(JavaFrameAnchor, _last_Java_fp, intptr_t*)
#define VM_INT_CONSTANTS_CPU(declare_constant, declare_preprocessor_constant, declare_c1_constant, declare_c2_constant, declare_c2_preprocessor_constant) \
LP64_ONLY(declare_constant(frame::arg_reg_save_area_bytes)) \
@@ -638,11 +636,7 @@
#ifdef TARGET_ARCH_sparc
#define VM_STRUCTS_CPU(nonstatic_field, static_field, unchecked_nonstatic_field, volatile_nonstatic_field, nonproduct_nonstatic_field, c2_nonstatic_field, unchecked_c1_static_field, unchecked_c2_static_field) \
- volatile_nonstatic_field(JavaFrameAnchor, _flags, int) \
- static_field(VM_Version, _features, int)
-
-#define VM_TYPES_CPU(declare_type, declare_toplevel_type, declare_oop_type, declare_integer_type, declare_unsigned_integer_type, declare_c1_toplevel_type, declare_c2_type, declare_c2_toplevel_type) \
- declare_toplevel_type(VM_Version)
+ volatile_nonstatic_field(JavaFrameAnchor, _flags, int)
#define VM_INT_CONSTANTS_CPU(declare_constant, declare_preprocessor_constant, declare_c1_constant, declare_c2_constant, declare_c2_preprocessor_constant) \
declare_constant(VM_Version::vis1_instructions_m) \
--- a/hotspot/src/share/vm/prims/whitebox.cpp Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/src/share/vm/prims/whitebox.cpp Thu Dec 24 17:21:09 2015 +0100
@@ -1005,9 +1005,9 @@
WB_END
WB_ENTRY(jstring, WB_GetCPUFeatures(JNIEnv* env, jobject o))
- const char* cpu_features = VM_Version::cpu_features();
+ const char* features = VM_Version::features_string();
ThreadToNativeFromVM ttn(thread);
- jstring features_string = env->NewStringUTF(cpu_features);
+ jstring features_string = env->NewStringUTF(features);
CHECK_JNI_EXCEPTION_(env, NULL);
--- a/hotspot/src/share/vm/runtime/os.cpp Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/src/share/vm/runtime/os.cpp Thu Dec 24 17:21:09 2015 +0100
@@ -819,7 +819,7 @@
st->print("total %d", os::processor_count());
// It's not safe to query number of active processors after crash
// st->print("(active %d)", os::active_processor_count());
- st->print(" %s", VM_Version::cpu_features());
+ st->print(" %s", VM_Version::features_string());
st->cr();
pd_print_cpu_info(st, buf, buflen);
}
--- a/hotspot/src/share/vm/runtime/vmStructs.cpp Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/src/share/vm/runtime/vmStructs.cpp Thu Dec 24 17:21:09 2015 +0100
@@ -1310,6 +1310,8 @@
\
static_field(Abstract_VM_Version, _s_vm_release, const char*) \
static_field(Abstract_VM_Version, _s_internal_vm_info_string, const char*) \
+ static_field(Abstract_VM_Version, _features, uint64_t) \
+ static_field(Abstract_VM_Version, _features_string, const char*) \
static_field(Abstract_VM_Version, _vm_major_version, int) \
static_field(Abstract_VM_Version, _vm_minor_version, int) \
static_field(Abstract_VM_Version, _vm_security_version, int) \
--- a/hotspot/src/share/vm/runtime/vm_version.cpp Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/src/share/vm/runtime/vm_version.cpp Thu Dec 24 17:21:09 2015 +0100
@@ -31,6 +31,10 @@
const char* Abstract_VM_Version::_s_vm_release = Abstract_VM_Version::vm_release();
const char* Abstract_VM_Version::_s_internal_vm_info_string = Abstract_VM_Version::internal_vm_info_string();
+
+uint64_t Abstract_VM_Version::_features = 0;
+const char* Abstract_VM_Version::_features_string = "";
+
bool Abstract_VM_Version::_supports_cx8 = false;
bool Abstract_VM_Version::_supports_atomic_getset4 = false;
bool Abstract_VM_Version::_supports_atomic_getset8 = false;
--- a/hotspot/src/share/vm/runtime/vm_version.hpp Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/src/share/vm/runtime/vm_version.hpp Thu Dec 24 17:21:09 2015 +0100
@@ -31,10 +31,17 @@
// VM_Version provides information about the VM.
class Abstract_VM_Version: AllStatic {
+ friend class VMStructs;
+ friend class JVMCIVMStructs;
+
protected:
- friend class VMStructs;
static const char* _s_vm_release;
static const char* _s_internal_vm_info_string;
+
+ // CPU feature flags.
+ static uint64_t _features;
+ static const char* _features_string;
+
// These are set by machine-dependent initializations
static bool _supports_cx8;
static bool _supports_atomic_getset4;
@@ -100,6 +107,14 @@
static const char* jre_release_version();
static const char* jdk_debug_level();
+ static uint64_t features() {
+ return _features;
+ }
+
+ static const char* features_string() {
+ return _features_string;
+ }
+
// does HW support an 8-byte compare-exchange operation?
static bool supports_cx8() {
#ifdef SUPPORTS_NATIVE_CX8
--- a/hotspot/test/compiler/jvmci/JVM_GetJVMCIRuntimeTest.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/JVM_GetJVMCIRuntimeTest.java Thu Dec 24 17:21:09 2015 +0100
@@ -25,7 +25,7 @@
/**
* @test
* @bug 8136421
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @library /testlibrary /
* @run main/othervm -XX:+UnlockExperimentalVMOptions
* -Dcompiler.jvmci.JVM_GetJVMCIRuntimeTest.positive=true
--- a/hotspot/test/compiler/jvmci/SecurityRestrictionsTest.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/SecurityRestrictionsTest.java Thu Dec 24 17:21:09 2015 +0100
@@ -25,7 +25,7 @@
/**
* @test
* @bug 8136421
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @library /testlibrary /test/lib /
* @compile ./common/CompilerToVMHelper.java
* @run main ClassFileInstaller jdk.vm.ci.hotspot.CompilerToVMHelper
--- a/hotspot/test/compiler/jvmci/compilerToVM/AllocateCompileIdTest.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/compilerToVM/AllocateCompileIdTest.java Thu Dec 24 17:21:09 2015 +0100
@@ -24,7 +24,7 @@
/**
* @test
* @bug 8136421
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @library /testlibrary /test/lib /
* @compile ../common/CompilerToVMHelper.java
* @build sun.hotspot.WhiteBox
--- a/hotspot/test/compiler/jvmci/compilerToVM/CanInlineMethodTest.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/compilerToVM/CanInlineMethodTest.java Thu Dec 24 17:21:09 2015 +0100
@@ -25,7 +25,7 @@
/**
* @test
* @bug 8136421
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @library /testlibrary /test/lib /
* @compile ../common/CompilerToVMHelper.java
* @build sun.hotspot.WhiteBox
--- a/hotspot/test/compiler/jvmci/compilerToVM/CollectCountersTest.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/compilerToVM/CollectCountersTest.java Thu Dec 24 17:21:09 2015 +0100
@@ -24,7 +24,7 @@
/*
* @test
* @bug 8136421
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @library / /testlibrary /test/lib/
* @compile ../common/CompilerToVMHelper.java
* @run main ClassFileInstaller
--- a/hotspot/test/compiler/jvmci/compilerToVM/DebugOutputTest.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/compilerToVM/DebugOutputTest.java Thu Dec 24 17:21:09 2015 +0100
@@ -24,7 +24,7 @@
/*
* @test
* @bug 8136421
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @library / /testlibrary /test/lib
* @compile ../common/CompilerToVMHelper.java
* @run main ClassFileInstaller
--- a/hotspot/test/compiler/jvmci/compilerToVM/DisassembleCodeBlobTest.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/compilerToVM/DisassembleCodeBlobTest.java Thu Dec 24 17:21:09 2015 +0100
@@ -25,7 +25,7 @@
/*
* @test
* @bug 8136421
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @library /testlibrary /test/lib /
* @ignore 8139700
* @compile ../common/CompilerToVMHelper.java
--- a/hotspot/test/compiler/jvmci/compilerToVM/DoNotInlineOrCompileTest.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/compilerToVM/DoNotInlineOrCompileTest.java Thu Dec 24 17:21:09 2015 +0100
@@ -25,7 +25,7 @@
/**
* @test
* @bug 8136421
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @library /testlibrary /test/lib /
* @compile ../common/CompilerToVMHelper.java
* @build sun.hotspot.WhiteBox
--- a/hotspot/test/compiler/jvmci/compilerToVM/ExecuteInstalledCodeTest.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/compilerToVM/ExecuteInstalledCodeTest.java Thu Dec 24 17:21:09 2015 +0100
@@ -21,7 +21,7 @@
/*
* @test
* @bug 8136421
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @library /testlibrary /test/lib /
* @compile ../common/CompilerToVMHelper.java
* @build sun.hotspot.WhiteBox
--- a/hotspot/test/compiler/jvmci/compilerToVM/FindUniqueConcreteMethodTest.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/compilerToVM/FindUniqueConcreteMethodTest.java Thu Dec 24 17:21:09 2015 +0100
@@ -24,7 +24,7 @@
/*
* @test
* @bug 8136421
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @library / /testlibrary /test/lib
* @compile ../common/CompilerToVMHelper.java
* @build compiler.jvmci.compilerToVM.FindUniqueConcreteMethodTest
--- a/hotspot/test/compiler/jvmci/compilerToVM/GetBytecodeTest.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/compilerToVM/GetBytecodeTest.java Thu Dec 24 17:21:09 2015 +0100
@@ -25,7 +25,7 @@
/**
* @test
* @bug 8136421
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @library /testlibrary /test/lib /
* @compile ../common/CompilerToVMHelper.java
* @run main ClassFileInstaller jdk.vm.ci.hotspot.CompilerToVMHelper
--- a/hotspot/test/compiler/jvmci/compilerToVM/GetClassInitializerTest.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/compilerToVM/GetClassInitializerTest.java Thu Dec 24 17:21:09 2015 +0100
@@ -24,7 +24,7 @@
/*
* @test
* @bug 8136421
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @library / /testlibrary /test/lib
* @compile ../common/CompilerToVMHelper.java
* @build compiler.jvmci.compilerToVM.GetClassInitializerTest
--- a/hotspot/test/compiler/jvmci/compilerToVM/GetConstantPoolTest.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/compilerToVM/GetConstantPoolTest.java Thu Dec 24 17:21:09 2015 +0100
@@ -25,7 +25,7 @@
/*
* @test
* @bug 8136421
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @library /testlibrary /test/lib /
* @compile ../common/CompilerToVMHelper.java ../common/PublicMetaspaceWrapperObject.java
* @build sun.hotspot.WhiteBox
--- a/hotspot/test/compiler/jvmci/compilerToVM/GetExceptionTableTest.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/compilerToVM/GetExceptionTableTest.java Thu Dec 24 17:21:09 2015 +0100
@@ -25,7 +25,7 @@
/**
* @test
* @bug 8136421
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @library /testlibrary /test/lib /
* @compile ../common/CompilerToVMHelper.java
* @run main ClassFileInstaller jdk.vm.ci.hotspot.CompilerToVMHelper
--- a/hotspot/test/compiler/jvmci/compilerToVM/GetImplementorTest.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/compilerToVM/GetImplementorTest.java Thu Dec 24 17:21:09 2015 +0100
@@ -24,7 +24,7 @@
/*
* @test
* @bug 8136421
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @library / /testlibrary /test/lib/
* @compile ../common/CompilerToVMHelper.java
* @build compiler.jvmci.compilerToVM.GetImplementorTest
--- a/hotspot/test/compiler/jvmci/compilerToVM/GetLineNumberTableTest.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/compilerToVM/GetLineNumberTableTest.java Thu Dec 24 17:21:09 2015 +0100
@@ -25,7 +25,7 @@
/**
* @test
* @bug 8136421
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @library /testlibrary /test/lib /
* @compile ../common/CompilerToVMHelper.java
* @run main ClassFileInstaller jdk.vm.ci.hotspot.CompilerToVMHelper
--- a/hotspot/test/compiler/jvmci/compilerToVM/GetLocalVariableTableTest.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/compilerToVM/GetLocalVariableTableTest.java Thu Dec 24 17:21:09 2015 +0100
@@ -25,7 +25,7 @@
/**
* @test
* @bug 8136421
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @library /testlibrary /test/lib /
* @clean compiler.jvmci.compilerToVM.*
* @compile -g DummyInterface.java
--- a/hotspot/test/compiler/jvmci/compilerToVM/GetMaxCallTargetOffsetTest.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/compilerToVM/GetMaxCallTargetOffsetTest.java Thu Dec 24 17:21:09 2015 +0100
@@ -24,7 +24,7 @@
/*
* @test
* @bug 8136421
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @library / /testlibrary /test/lib/
* @compile ../common/CompilerToVMHelper.java
* @build compiler.jvmci.compilerToVM.GetMaxCallTargetOffsetTest
--- a/hotspot/test/compiler/jvmci/compilerToVM/GetNextStackFrameTest.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/compilerToVM/GetNextStackFrameTest.java Thu Dec 24 17:21:09 2015 +0100
@@ -24,7 +24,7 @@
/*
* @test
* @bug 8136421
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @library / /testlibrary /test/lib
* @compile ../common/CompilerToVMHelper.java
* @run main ClassFileInstaller
--- a/hotspot/test/compiler/jvmci/compilerToVM/GetResolvedJavaMethodAtSlotTest.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/compilerToVM/GetResolvedJavaMethodAtSlotTest.java Thu Dec 24 17:21:09 2015 +0100
@@ -25,7 +25,7 @@
/**
* @test
* @bug 8136421
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @library /testlibrary /test/lib /
* @compile ../common/CompilerToVMHelper.java
* @run main ClassFileInstaller jdk.vm.ci.hotspot.CompilerToVMHelper
--- a/hotspot/test/compiler/jvmci/compilerToVM/GetResolvedJavaMethodTest.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/compilerToVM/GetResolvedJavaMethodTest.java Thu Dec 24 17:21:09 2015 +0100
@@ -24,7 +24,7 @@
/*
* @test
* @bug 8136421
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @library / /testlibrary /test/lib
* @compile ../common/CompilerToVMHelper.java
* ../common/PublicMetaspaceWrapperObject.java
--- a/hotspot/test/compiler/jvmci/compilerToVM/GetResolvedJavaTypeTest.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/compilerToVM/GetResolvedJavaTypeTest.java Thu Dec 24 17:21:09 2015 +0100
@@ -24,7 +24,7 @@
/*
* @test
* @bug 8136421
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @library / /testlibrary /test/lib
* @compile ../common/CompilerToVMHelper.java
* ../common/PublicMetaspaceWrapperObject.java
--- a/hotspot/test/compiler/jvmci/compilerToVM/GetStackTraceElementTest.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/compilerToVM/GetStackTraceElementTest.java Thu Dec 24 17:21:09 2015 +0100
@@ -25,7 +25,7 @@
/**
* @test
* @bug 8136421
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @library /testlibrary /test/lib /
* @compile ../common/CompilerToVMHelper.java
* @run main ClassFileInstaller jdk.vm.ci.hotspot.CompilerToVMHelper
--- a/hotspot/test/compiler/jvmci/compilerToVM/GetSymbolTest.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/compilerToVM/GetSymbolTest.java Thu Dec 24 17:21:09 2015 +0100
@@ -24,7 +24,7 @@
/*
* @test
* @bug 8136421
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @library / /testlibrary /test/lib
* @compile ../common/CompilerToVMHelper.java
* @build compiler.jvmci.compilerToVM.GetSymbolTest
--- a/hotspot/test/compiler/jvmci/compilerToVM/GetVtableIndexForInterfaceTest.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/compilerToVM/GetVtableIndexForInterfaceTest.java Thu Dec 24 17:21:09 2015 +0100
@@ -24,7 +24,7 @@
/*
* @test
* @bug 8136421
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @library / /testlibrary /test/lib
* @compile ../common/CompilerToVMHelper.java
* @build compiler.jvmci.compilerToVM.GetVtableIndexForInterfaceTest
--- a/hotspot/test/compiler/jvmci/compilerToVM/HasCompiledCodeForOSRTest.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/compilerToVM/HasCompiledCodeForOSRTest.java Thu Dec 24 17:21:09 2015 +0100
@@ -25,7 +25,7 @@
/**
* @test
* @bug 8136421
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @library /testlibrary /test/lib /
* @compile ../common/CompilerToVMHelper.java
* @build sun.hotspot.WhiteBox
--- a/hotspot/test/compiler/jvmci/compilerToVM/HasFinalizableSubclassTest.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/compilerToVM/HasFinalizableSubclassTest.java Thu Dec 24 17:21:09 2015 +0100
@@ -24,7 +24,7 @@
/*
* @test
* @bug 8136421
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @library / /testlibrary /test/lib
* @compile ../common/CompilerToVMHelper.java
* @build compiler.jvmci.compilerToVM.HasFinalizableSubclassTest
--- a/hotspot/test/compiler/jvmci/compilerToVM/InitializeConfigurationTest.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/compilerToVM/InitializeConfigurationTest.java Thu Dec 24 17:21:09 2015 +0100
@@ -24,7 +24,7 @@
/*
* @test
* @bug 8136421
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @library / /testlibrary
* @compile ../common/CompilerToVMHelper.java
* @build compiler.jvmci.compilerToVM.InitializeConfigurationTest
--- a/hotspot/test/compiler/jvmci/compilerToVM/InvalidateInstalledCodeTest.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/compilerToVM/InvalidateInstalledCodeTest.java Thu Dec 24 17:21:09 2015 +0100
@@ -25,7 +25,7 @@
/*
* @test
* @bug 8136421
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @library /testlibrary /test/lib /
* @ignore 8139700
* @compile ../common/CompilerToVMHelper.java
--- a/hotspot/test/compiler/jvmci/compilerToVM/IsMatureTest.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/compilerToVM/IsMatureTest.java Thu Dec 24 17:21:09 2015 +0100
@@ -24,7 +24,7 @@
/*
* @test
* @bug 8136421
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @library / /testlibrary /test/lib
* @compile ../common/CompilerToVMHelper.java
* @build sun.hotspot.WhiteBox IsMatureTest
--- a/hotspot/test/compiler/jvmci/compilerToVM/JVM_RegisterJVMCINatives.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/compilerToVM/JVM_RegisterJVMCINatives.java Thu Dec 24 17:21:09 2015 +0100
@@ -25,7 +25,7 @@
/*
* @test
* @bug 8136421
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @library /testlibrary /
* @run main/othervm -XX:+UnlockExperimentalVMOptions
* -Dcompiler.jvmci.compilerToVM.JVM_RegisterJVMCINatives.positive=true
--- a/hotspot/test/compiler/jvmci/compilerToVM/LookupKlassInPoolTest.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/compilerToVM/LookupKlassInPoolTest.java Thu Dec 24 17:21:09 2015 +0100
@@ -25,7 +25,7 @@
/*
* @test
* @bug 8136421
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @summary Testing compiler.jvmci.CompilerToVM.lookupKlassInPool method
* @library /testlibrary /test/lib /
* @compile ../common/CompilerToVMHelper.java
--- a/hotspot/test/compiler/jvmci/compilerToVM/LookupTypeTest.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/compilerToVM/LookupTypeTest.java Thu Dec 24 17:21:09 2015 +0100
@@ -24,7 +24,7 @@
/*
* @test
* @bug 8136421
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @library / /testlibrary
* @compile ../common/CompilerToVMHelper.java
* @build compiler.jvmci.compilerToVM.LookupTypeTest
--- a/hotspot/test/compiler/jvmci/compilerToVM/MaterializeVirtualObjectTest.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/compilerToVM/MaterializeVirtualObjectTest.java Thu Dec 24 17:21:09 2015 +0100
@@ -24,7 +24,7 @@
/*
* @test
* @bug 8136421
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @library / /testlibrary /test/lib
* @ignore 8139703
* @compile ../common/CompilerToVMHelper.java
--- a/hotspot/test/compiler/jvmci/compilerToVM/MethodIsIgnoredBySecurityStackWalkTest.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/compilerToVM/MethodIsIgnoredBySecurityStackWalkTest.java Thu Dec 24 17:21:09 2015 +0100
@@ -25,7 +25,7 @@
/**
* @test
* @bug 8136421
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @library /testlibrary /test/lib /
* @compile ../common/CompilerToVMHelper.java
* @run main ClassFileInstaller jdk.vm.ci.hotspot.CompilerToVMHelper
--- a/hotspot/test/compiler/jvmci/compilerToVM/ReadUncompressedOopTest.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/compilerToVM/ReadUncompressedOopTest.java Thu Dec 24 17:21:09 2015 +0100
@@ -24,7 +24,7 @@
/*
* @test
* @bug 8136421
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @library / /testlibrary /test/lib/
* @compile ../common/CompilerToVMHelper.java
* @build compiler.jvmci.compilerToVM.ReadUncompressedOopTest
--- a/hotspot/test/compiler/jvmci/compilerToVM/ReprofileTest.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/compilerToVM/ReprofileTest.java Thu Dec 24 17:21:09 2015 +0100
@@ -25,7 +25,7 @@
/**
* @test
* @bug 8136421
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @library /testlibrary /test/lib /
* @compile ../common/CompilerToVMHelper.java
* @build sun.hotspot.WhiteBox
--- a/hotspot/test/compiler/jvmci/compilerToVM/ResolveConstantInPoolTest.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/compilerToVM/ResolveConstantInPoolTest.java Thu Dec 24 17:21:09 2015 +0100
@@ -25,7 +25,7 @@
/*
* @test
* @bug 8136421
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @library /testlibrary /test/lib /
* @compile ../common/CompilerToVMHelper.java
* @build compiler.jvmci.compilerToVM.ResolveConstantInPoolTest
--- a/hotspot/test/compiler/jvmci/compilerToVM/ResolveMethodTest.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/compilerToVM/ResolveMethodTest.java Thu Dec 24 17:21:09 2015 +0100
@@ -24,7 +24,7 @@
/*
* @test
* @bug 8136421
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @library / /testlibrary /test/lib
* @compile ../common/CompilerToVMHelper.java
* @build compiler.jvmci.compilerToVM.ResolveMethodTest
--- a/hotspot/test/compiler/jvmci/compilerToVM/ResolveTypeInPoolTest.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/compilerToVM/ResolveTypeInPoolTest.java Thu Dec 24 17:21:09 2015 +0100
@@ -25,7 +25,7 @@
/*
* @test
* @bug 8136421
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @summary Testing compiler.jvmci.CompilerToVM.resolveTypeInPool method
* @library /testlibrary /test/lib /
* @compile ../common/CompilerToVMHelper.java
--- a/hotspot/test/compiler/jvmci/compilerToVM/ShouldDebugNonSafepointsTest.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/compilerToVM/ShouldDebugNonSafepointsTest.java Thu Dec 24 17:21:09 2015 +0100
@@ -24,7 +24,7 @@
/*
* @test
* @bug 8136421
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @library / /testlibrary /test/lib/
* @compile ../common/CompilerToVMHelper.java
* @build compiler.jvmci.compilerToVM.ShouldDebugNonSafepointsTest
--- a/hotspot/test/compiler/jvmci/compilerToVM/ShouldInlineMethodTest.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/compilerToVM/ShouldInlineMethodTest.java Thu Dec 24 17:21:09 2015 +0100
@@ -25,7 +25,7 @@
/**
* @test
* @bug 8136421
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @library /testlibrary /test/lib /
* @compile ../common/CompilerToVMHelper.java
* @build sun.hotspot.WhiteBox
--- a/hotspot/test/compiler/jvmci/errors/TestInvalidCompilationResult.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/errors/TestInvalidCompilationResult.java Thu Dec 24 17:21:09 2015 +0100
@@ -23,7 +23,7 @@
/**
* @test
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @compile CodeInstallerTest.java
* @run junit/othervm -da:jdk.vm.ci... -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI compiler.jvmci.errors.TestInvalidCompilationResult
*/
--- a/hotspot/test/compiler/jvmci/errors/TestInvalidDebugInfo.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/errors/TestInvalidDebugInfo.java Thu Dec 24 17:21:09 2015 +0100
@@ -23,7 +23,7 @@
/**
* @test
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @compile CodeInstallerTest.java
* @run junit/othervm -da:jdk.vm.ci... -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI compiler.jvmci.errors.TestInvalidDebugInfo
*/
--- a/hotspot/test/compiler/jvmci/errors/TestInvalidOopMap.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/errors/TestInvalidOopMap.java Thu Dec 24 17:21:09 2015 +0100
@@ -23,7 +23,7 @@
/**
* @test
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @compile CodeInstallerTest.java
* @run junit/othervm -da:jdk.vm.ci... -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI compiler.jvmci.errors.TestInvalidOopMap
*/
--- a/hotspot/test/compiler/jvmci/events/JvmciCreateMetaAccessContextTest.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/events/JvmciCreateMetaAccessContextTest.java Thu Dec 24 17:21:09 2015 +0100
@@ -24,7 +24,7 @@
/*
* @test
* @bug 8136421
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @library / /testlibrary
* @compile ./MetaAccessWrapper.java
* @build compiler.jvmci.common.JVMCIHelpers
--- a/hotspot/test/compiler/jvmci/events/JvmciNotifyInstallEventTest.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/events/JvmciNotifyInstallEventTest.java Thu Dec 24 17:21:09 2015 +0100
@@ -24,7 +24,7 @@
/*
* @test
* @bug 8136421
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @library / /testlibrary
* @compile ../common/CompilerToVMHelper.java
* @build compiler.jvmci.common.JVMCIHelpers
--- a/hotspot/test/compiler/jvmci/events/JvmciShutdownEventTest.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/events/JvmciShutdownEventTest.java Thu Dec 24 17:21:09 2015 +0100
@@ -24,7 +24,7 @@
/*
* @test
* @bug 8136421
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @library /testlibrary /
* @build compiler.jvmci.common.JVMCIHelpers
* compiler.jvmci.events.JvmciShutdownEventListener
--- a/hotspot/test/compiler/jvmci/jdk.vm.ci.options.test/src/jdk/vm/ci/options/test/NestedBooleanOptionValueTest.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/jdk.vm.ci.options.test/src/jdk/vm/ci/options/test/NestedBooleanOptionValueTest.java Thu Dec 24 17:21:09 2015 +0100
@@ -23,7 +23,7 @@
/**
* @test
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @run junit jdk.vm.ci.options.test.NestedBooleanOptionValueTest
*/
--- a/hotspot/test/compiler/jvmci/jdk.vm.ci.options.test/src/jdk/vm/ci/options/test/TestOptionValue.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/jdk.vm.ci.options.test/src/jdk/vm/ci/options/test/TestOptionValue.java Thu Dec 24 17:21:09 2015 +0100
@@ -23,7 +23,7 @@
/**
* @test
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @run junit jdk.vm.ci.options.test.TestOptionValue
*/
--- a/hotspot/test/compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/ConstantTest.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/ConstantTest.java Thu Dec 24 17:21:09 2015 +0100
@@ -23,7 +23,7 @@
/**
* @test
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @compile ConstantTest.java FieldUniverse.java TypeUniverse.java TestMetaAccessProvider.java
* @run junit/othervm -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI jdk.vm.ci.runtime.test.ConstantTest
*/
--- a/hotspot/test/compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/RedefineClassTest.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/RedefineClassTest.java Thu Dec 24 17:21:09 2015 +0100
@@ -23,7 +23,7 @@
/**
* @test
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @compile RedefineClassTest.java TypeUniverse.java TestMetaAccessProvider.java
* @run junit/othervm -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI jdk.vm.ci.runtime.test.RedefineClassTest
*/
--- a/hotspot/test/compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/ResolvedJavaTypeResolveConcreteMethodTest.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/ResolvedJavaTypeResolveConcreteMethodTest.java Thu Dec 24 17:21:09 2015 +0100
@@ -23,7 +23,7 @@
/**
* @test
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @run junit/othervm -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI jdk.vm.ci.runtime.test.ResolvedJavaTypeResolveConcreteMethodTest
*/
--- a/hotspot/test/compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/ResolvedJavaTypeResolveMethodTest.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/ResolvedJavaTypeResolveMethodTest.java Thu Dec 24 17:21:09 2015 +0100
@@ -23,7 +23,7 @@
/**
* @test
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @run junit/othervm -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI jdk.vm.ci.runtime.test.ResolvedJavaTypeResolveMethodTest
*/
--- a/hotspot/test/compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/TestConstantReflectionProvider.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/TestConstantReflectionProvider.java Thu Dec 24 17:21:09 2015 +0100
@@ -23,7 +23,7 @@
/**
* @test
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @compile TestConstantReflectionProvider.java TypeUniverse.java TestMetaAccessProvider.java
* @run junit/othervm -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI jdk.vm.ci.runtime.test.TestConstantReflectionProvider
*/
--- a/hotspot/test/compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/TestJavaField.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/TestJavaField.java Thu Dec 24 17:21:09 2015 +0100
@@ -23,7 +23,7 @@
/**
* @test
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @compile TestJavaField.java FieldUniverse.java TypeUniverse.java TestMetaAccessProvider.java
* @run junit/othervm -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI jdk.vm.ci.runtime.test.TestJavaField
*/
--- a/hotspot/test/compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/TestJavaMethod.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/TestJavaMethod.java Thu Dec 24 17:21:09 2015 +0100
@@ -23,7 +23,7 @@
/**
* @test
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @compile TestJavaMethod.java MethodUniverse.java TypeUniverse.java TestMetaAccessProvider.java NameAndSignature.java
* @run junit/othervm -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI jdk.vm.ci.runtime.test.TestJavaMethod
*/
--- a/hotspot/test/compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/TestJavaType.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/TestJavaType.java Thu Dec 24 17:21:09 2015 +0100
@@ -23,7 +23,7 @@
/**
* @test
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @compile TestJavaType.java TypeUniverse.java TestMetaAccessProvider.java
* @run junit/othervm -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI jdk.vm.ci.runtime.test.TestJavaType
*/
--- a/hotspot/test/compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/TestMetaAccessProvider.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/TestMetaAccessProvider.java Thu Dec 24 17:21:09 2015 +0100
@@ -23,7 +23,7 @@
/**
* @test
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @compile TestMetaAccessProvider.java TypeUniverse.java TestMetaAccessProvider.java
* @run junit/othervm -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI jdk.vm.ci.runtime.test.TestMetaAccessProvider
*/
--- a/hotspot/test/compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/TestResolvedJavaField.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/TestResolvedJavaField.java Thu Dec 24 17:21:09 2015 +0100
@@ -23,7 +23,7 @@
/**
* @test
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @compile TestResolvedJavaField.java FieldUniverse.java TypeUniverse.java TestMetaAccessProvider.java
* @run junit/othervm -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI jdk.vm.ci.runtime.test.TestResolvedJavaField
*/
--- a/hotspot/test/compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/TestResolvedJavaMethod.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/TestResolvedJavaMethod.java Thu Dec 24 17:21:09 2015 +0100
@@ -23,7 +23,7 @@
/**
* @test
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @compile TestResolvedJavaMethod.java MethodUniverse.java TypeUniverse.java TestMetaAccessProvider.java
* @run junit/othervm -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI jdk.vm.ci.runtime.test.TestResolvedJavaMethod
*/
--- a/hotspot/test/compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/TestResolvedJavaType.java Wed Dec 23 23:08:16 2015 +0300
+++ b/hotspot/test/compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/TestResolvedJavaType.java Thu Dec 24 17:21:09 2015 +0100
@@ -23,7 +23,7 @@
/**
* @test
- * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9") & os.arch != "aarch64"
+ * @requires (os.simpleArch == "x64" | os.simpleArch == "sparcv9" | os.simpleArch == "aarch64")
* @compile TestResolvedJavaType.java TypeUniverse.java TestMetaAccessProvider.java NameAndSignature.java
* @run junit/othervm -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI jdk.vm.ci.runtime.test.TestResolvedJavaType
*/