OpenJDK / jdk / jdk10
changeset 25912:54911b14d5ee
Merge
author | anoll |
---|---|
date | Fri, 25 Jul 2014 09:44:53 +0000 |
parents | d47a5d9c5b89 4d54044eecb5 |
children | f43b5dab2dd3 |
files | jdk/src/macosx/native/sun/awt/awt.m jdk/src/share/classes/com/sun/jmx/remote/util/CacheMap.java jdk/src/share/classes/sun/awt/WindowClosingListener.java jdk/src/share/classes/sun/awt/WindowClosingSupport.java jdk/test/java/util/stream/test/org/openjdk/tests/java/util/stream/ExplodeOpTest.java jdk/test/java/util/stream/test/org/openjdk/tests/java/util/stream/SummaryStatisticsTest.java jdk/test/javax/management/remote/mandatory/util/CacheMapTest.java langtools/test/tools/javac/unicode/NonasciiDigit2.java langtools/test/tools/javac/unicode/NonasciiDigit2.out langtools/test/tools/sjavac/ExclPatternWrapper.java langtools/test/tools/sjavac/JavacOptionPrepWrapper.java langtools/test/tools/sjavac/OptionDecodingWrapper.java langtools/test/tools/sjavac/SJavacTestUtil.java langtools/test/tools/sjavac/SJavacWrapper.java langtools/test/tools/sjavac/SerializationWrapper.java |
diffstat | 721 files changed, 13382 insertions(+), 5988 deletions(-) [+] |
line wrap: on
line diff
--- a/.hgtags Thu Jul 24 09:15:38 2014 +0200 +++ b/.hgtags Fri Jul 25 09:44:53 2014 +0000 @@ -265,3 +265,4 @@ 89731ae72a761afdf4262e8b9513f302f6563f89 jdk9-b20 28dd0c7beb3cad9cf95f17b4b5ad87eb447a4084 jdk9-b21 9678e0db8ff6ed845d4c2ee4a3baf7f386a777e5 jdk9-b22 +39cfdc2dcaf3f195c55398e4e677ab053b07e3d2 jdk9-b23
--- a/.hgtags-top-repo Thu Jul 24 09:15:38 2014 +0200 +++ b/.hgtags-top-repo Fri Jul 25 09:44:53 2014 +0000 @@ -265,3 +265,4 @@ ee4fd72b2ec3d92497f37163352f294aa695c6fb jdk9-b20 9052803f4d01feda28b3d65f2b64dd457d21c7b6 jdk9-b21 8e4bdab4c362aadde2d321f968cd503a2f779e2f jdk9-b22 +88567461a2cd9b7fb431fee6440005a694df1f47 jdk9-b23
--- a/common/autoconf/flags.m4 Thu Jul 24 09:15:38 2014 +0200 +++ b/common/autoconf/flags.m4 Fri Jul 25 09:44:53 2014 +0000 @@ -407,11 +407,7 @@ C_O_FLAG_HI="-O3" C_O_FLAG_NORM="-O2" fi - if test "x$HAS_CFLAG_OPTIMIZE_DEBUG" = "xtrue"; then - C_O_FLAG_DEBUG="$CFLAG_OPTIMIZE_DEBUG_FLAG" - else - C_O_FLAG_DEBUG="-O0" - fi + C_O_FLAG_DEBUG="-O0" C_O_FLAG_NONE="-O0" elif test "x$TOOLCHAIN_TYPE" = xclang; then if test "x$OPENJDK_TARGET_OS" = xmacosx; then
--- a/common/autoconf/generated-configure.sh Thu Jul 24 09:15:38 2014 +0200 +++ b/common/autoconf/generated-configure.sh Fri Jul 25 09:44:53 2014 +0000 @@ -4311,7 +4311,7 @@ #CUSTOM_AUTOCONF_INCLUDE # Do not change or remove the following line, it is needed for consistency checks: -DATE_WHEN_GENERATED=1403557683 +DATE_WHEN_GENERATED=1404942241 ############################################################################### # @@ -42011,11 +42011,7 @@ C_O_FLAG_HI="-O3" C_O_FLAG_NORM="-O2" fi - if test "x$HAS_CFLAG_OPTIMIZE_DEBUG" = "xtrue"; then - C_O_FLAG_DEBUG="$CFLAG_OPTIMIZE_DEBUG_FLAG" - else - C_O_FLAG_DEBUG="-O0" - fi + C_O_FLAG_DEBUG="-O0" C_O_FLAG_NONE="-O0" elif test "x$TOOLCHAIN_TYPE" = xclang; then if test "x$OPENJDK_TARGET_OS" = xmacosx; then
--- a/corba/.hgtags Thu Jul 24 09:15:38 2014 +0200 +++ b/corba/.hgtags Fri Jul 25 09:44:53 2014 +0000 @@ -265,3 +265,4 @@ 87f36eecb1665012d01c5cf102494e591c943ea6 jdk9-b20 3615a4e7f0542ca7552ad6454b742c73ee211d8e jdk9-b21 ddc07abf4307855c0dc904cc5c96cc764023a930 jdk9-b22 +57735d66face054440a63ce99789eac5a5ee1dfd jdk9-b23
--- a/hotspot/.hgtags Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/.hgtags Fri Jul 25 09:44:53 2014 +0000 @@ -425,3 +425,4 @@ c1af79d122ec9f715fa29312b5e91763f3a4dfc4 jdk9-b20 17b4a5e831b398738feedb0afe75245744510153 jdk9-b21 518d1fcc0799494f013e00e0a94a91b6f212d54f jdk9-b22 +dd472cdacc32e3afc7c5bfa7ef16ea0e0befb7fa jdk9-b23
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/Klass.java Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/Klass.java Fri Jul 25 09:44:53 2014 +0000 @@ -55,7 +55,10 @@ layoutHelper = new IntField(type.getJIntField("_layout_helper"), 0); name = type.getAddressField("_name"); accessFlags = new CIntField(type.getCIntegerField("_access_flags"), 0); - traceIDField = type.getField("_trace_id"); + try { + traceIDField = type.getField("_trace_id"); + } catch(Exception e) { + } subklass = new MetadataField(type.getAddressField("_subklass"), 0); nextSibling = new MetadataField(type.getAddressField("_next_sibling"), 0); @@ -108,7 +111,11 @@ public AccessFlags getAccessFlagsObj(){ return new AccessFlags(getAccessFlags()); } public Klass getSubklassKlass() { return (Klass) subklass.getValue(this); } public Klass getNextSiblingKlass() { return (Klass) nextSibling.getValue(this); } - public long traceID() { return traceIDField.getJLong(addr); } + + public long traceID() { + if (traceIDField == null) return 0; + return traceIDField.getJLong(addr); + } // computed access flags - takes care of inner classes etc. // This is closer to actual source level than getAccessFlags() etc.
--- a/hotspot/make/jprt.properties Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/make/jprt.properties Fri Jul 25 09:44:53 2014 +0000 @@ -126,7 +126,7 @@ ${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-jvm98, \ ${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-jvm98_nontiered, \ ${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-scimark, \ - ${jprt.my.solaris.sparcv9}-product-c2-runThese, \ + ${jprt.my.solaris.sparcv9}-product-c2-runThese8, \ ${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-GCBasher_SerialGC, \ ${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-GCBasher_ParallelGC, \ ${jprt.my.solaris.sparcv9}-{product|fastdebug}-c2-GCBasher_ParNewGC, \ @@ -150,8 +150,9 @@ ${jprt.my.solaris.x64}-{product|fastdebug}-c2-jvm98, \ ${jprt.my.solaris.x64}-{product|fastdebug}-c2-jvm98_nontiered, \ ${jprt.my.solaris.x64}-{product|fastdebug}-c2-scimark, \ - ${jprt.my.solaris.x64}-product-c2-runThese, \ - ${jprt.my.solaris.x64}-product-c2-runThese_Xcomp, \ + ${jprt.my.solaris.x64}-product-c2-runThese8, \ + ${jprt.my.solaris.x64}-product-c2-runThese8_Xcomp_lang, \ + ${jprt.my.solaris.x64}-product-c2-runThese8_Xcomp_vm, \ ${jprt.my.solaris.x64}-{product|fastdebug}-c2-GCBasher_SerialGC, \ ${jprt.my.solaris.x64}-{product|fastdebug}-c2-GCBasher_ParallelGC, \ ${jprt.my.solaris.x64}-{product|fastdebug}-c2-GCBasher_ParNewGC, \ @@ -175,9 +176,11 @@ ${jprt.my.linux.i586}-{product|fastdebug}-{c1|c2}-jvm98, \ ${jprt.my.linux.i586}-{product|fastdebug}-c2-jvm98_nontiered, \ ${jprt.my.linux.i586}-{product|fastdebug}-{c1|c2}-scimark, \ - ${jprt.my.linux.i586}-product-c1-runThese_Xcomp, \ - ${jprt.my.linux.i586}-fastdebug-c1-runThese_Xshare, \ - ${jprt.my.linux.i586}-fastdebug-c2-runThese_Xcomp, \ + ${jprt.my.linux.i586}-product-c1-runThese8_Xcomp_lang, \ + ${jprt.my.linux.i586}-product-c1-runThese8_Xcomp_vm, \ + ${jprt.my.linux.i586}-fastdebug-c1-runThese8_Xshare, \ + ${jprt.my.linux.i586}-fastdebug-c2-runThese8_Xcomp_lang, \ + ${jprt.my.linux.i586}-fastdebug-c2-runThese8_Xcomp_vm, \ ${jprt.my.linux.i586}-{product|fastdebug}-{c1|c2}-GCBasher_SerialGC, \ ${jprt.my.linux.i586}-{product|fastdebug}-{c1|c2}-GCBasher_ParallelGC, \ ${jprt.my.linux.i586}-{product|fastdebug}-{c1|c2}-GCBasher_ParNewGC, \ @@ -243,9 +246,10 @@ ${jprt.my.windows.i586}-{product|fastdebug}-{c1|c2}-jvm98, \ ${jprt.my.windows.i586}-{product|fastdebug}-c2-jvm98_nontiered, \ ${jprt.my.windows.i586}-{product|fastdebug}-{c1|c2}-scimark, \ - ${jprt.my.windows.i586}-product-{c1|c2}-runThese, \ - ${jprt.my.windows.i586}-product-{c1|c2}-runThese_Xcomp, \ - ${jprt.my.windows.i586}-fastdebug-c1-runThese_Xshare, \ + ${jprt.my.windows.i586}-product-{c1|c2}-runThese8, \ + ${jprt.my.windows.i586}-product-{c1|c2}-runThese8_Xcomp_lang, \ + ${jprt.my.windows.i586}-product-{c1|c2}-runThese8_Xcomp_vm, \ + ${jprt.my.windows.i586}-fastdebug-c1-runThese8_Xshare, \ ${jprt.my.windows.i586}-{product|fastdebug}-{c1|c2}-GCBasher_SerialGC, \ ${jprt.my.windows.i586}-{product|fastdebug}-{c1|c2}-GCBasher_ParallelGC, \ ${jprt.my.windows.i586}-{product|fastdebug}-{c1|c2}-GCBasher_ParNewGC, \ @@ -269,8 +273,9 @@ ${jprt.my.windows.x64}-{product|fastdebug}-c2-jvm98, \ ${jprt.my.windows.x64}-{product|fastdebug}-c2-jvm98_nontiered, \ ${jprt.my.windows.x64}-{product|fastdebug}-c2-scimark, \ - ${jprt.my.windows.x64}-product-c2-runThese, \ - ${jprt.my.windows.x64}-product-c2-runThese_Xcomp, \ + ${jprt.my.windows.x64}-product-c2-runThese8, \ + ${jprt.my.windows.x64}-product-c2-runThese8_Xcomp_lang, \ + ${jprt.my.windows.x64}-product-c2-runThese8_Xcomp_vm, \ ${jprt.my.windows.x64}-{product|fastdebug}-c2-GCBasher_SerialGC, \ ${jprt.my.windows.x64}-{product|fastdebug}-c2-GCBasher_ParallelGC, \ ${jprt.my.windows.x64}-{product|fastdebug}-c2-GCBasher_ParNewGC, \
--- a/hotspot/src/cpu/ppc/vm/frame_ppc.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/cpu/ppc/vm/frame_ppc.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -36,7 +36,6 @@ #include "runtime/signature.hpp" #include "runtime/stubCodeGenerator.hpp" #include "runtime/stubRoutines.hpp" -#include "vmreg_ppc.inline.hpp" #ifdef COMPILER1 #include "c1/c1_Runtime1.hpp" #include "runtime/vframeArray.hpp" @@ -155,15 +154,6 @@ } } -void frame::pd_gc_epilog() { - if (is_interpreted_frame()) { - // Set constant pool cache entry for interpreter. - Method* m = interpreter_frame_method(); - - *interpreter_frame_cpoolcache_addr() = m->constants()->cache(); - } -} - bool frame::is_interpreted_frame_valid(JavaThread* thread) const { // Is there anything to do? assert(is_interpreted_frame(), "Not an interpreted frame");
--- a/hotspot/src/cpu/ppc/vm/frame_ppc.inline.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/cpu/ppc/vm/frame_ppc.inline.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. * Copyright 2012, 2014 SAP AG. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * @@ -27,6 +27,7 @@ #define CPU_PPC_VM_FRAME_PPC_INLINE_HPP #include "code/codeCache.hpp" +#include "code/vmreg.inline.hpp" // Inline functions for ppc64 frames: @@ -134,12 +135,12 @@ return (intptr_t**)&istate->_locals; } -inline intptr_t* frame::interpreter_frame_bcx_addr() const { +inline intptr_t* frame::interpreter_frame_bcp_addr() const { interpreterState istate = get_interpreterState(); return (intptr_t*)&istate->_bcp; } -inline intptr_t* frame::interpreter_frame_mdx_addr() const { +inline intptr_t* frame::interpreter_frame_mdp_addr() const { interpreterState istate = get_interpreterState(); return (intptr_t*)&istate->_mdx; } @@ -209,10 +210,10 @@ inline intptr_t** frame::interpreter_frame_locals_addr() const { return (intptr_t**) &(get_ijava_state()->locals); } -inline intptr_t* frame::interpreter_frame_bcx_addr() const { +inline intptr_t* frame::interpreter_frame_bcp_addr() const { return (intptr_t*) &(get_ijava_state()->bcp); } -inline intptr_t* frame::interpreter_frame_mdx_addr() const { +inline intptr_t* frame::interpreter_frame_mdp_addr() const { return (intptr_t*) &(get_ijava_state()->mdx); } // Pointer beyond the "oldest/deepest" BasicObjectLock on stack.
--- a/hotspot/src/cpu/ppc/vm/icache_ppc.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/cpu/ppc/vm/icache_ppc.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -68,7 +68,6 @@ } void ICacheStubGenerator::generate_icache_flush(ICache::flush_icache_stub_t* flush_icache_stub) { - StubCodeMark mark(this, "ICache", "flush_icache_stub"); *flush_icache_stub = (ICache::flush_icache_stub_t)ICache::ppc64_flush_icache;
--- a/hotspot/src/cpu/ppc/vm/interpreterRT_ppc.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/cpu/ppc/vm/interpreterRT_ppc.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,6 +1,6 @@ /* - * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved. - * Copyright 2012, 2013 SAP AG. All rights reserved. + * Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright 2012, 2014 SAP AG. 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 @@ -26,6 +26,7 @@ #ifndef CPU_PPC_VM_INTERPRETERRT_PPC_HPP #define CPU_PPC_VM_INTERPRETERRT_PPC_HPP +#include "asm/macroAssembler.hpp" #include "memory/allocation.hpp" // native method calls
--- a/hotspot/src/cpu/ppc/vm/interpreter_ppc.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/cpu/ppc/vm/interpreter_ppc.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -30,6 +30,7 @@ #include "interpreter/interpreter.hpp" #include "interpreter/interpreterGenerator.hpp" #include "interpreter/interpreterRuntime.hpp" +#include "interpreter/interp_masm.hpp" #include "interpreter/templateTable.hpp" #include "oops/arrayOop.hpp" #include "oops/methodData.hpp"
--- a/hotspot/src/cpu/ppc/vm/macroAssembler_ppc.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/cpu/ppc/vm/macroAssembler_ppc.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -32,6 +32,7 @@ #include "memory/resourceArea.hpp" #include "prims/methodHandles.hpp" #include "runtime/biasedLocking.hpp" +#include "runtime/icache.hpp" #include "runtime/interfaceSupport.hpp" #include "runtime/objectMonitor.hpp" #include "runtime/os.hpp"
--- a/hotspot/src/cpu/ppc/vm/ppc.ad Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/cpu/ppc/vm/ppc.ad Fri Jul 25 09:44:53 2014 +0000 @@ -267,7 +267,7 @@ // It's worth about 1% on SPEC geomean to get this right. // Chunk0, chunk1, and chunk2 form the MachRegisterNumbers enumeration -// in adGlobals_ppc64.hpp which defines the <register>_num values, e.g. +// in adGlobals_ppc.hpp which defines the <register>_num values, e.g. // R3_num. Therefore, R3_num may not be (and in reality is not) // the same as R3->encoding()! Furthermore, we cannot make any // assumptions on ordering, e.g. R3_num may be less than R2_num. @@ -1632,7 +1632,7 @@ static enum RC rc_class(OptoReg::Name reg) { // Return the register class for the given register. The given register // reg is a <register>_num value, which is an index into the MachRegisterNumbers - // enumeration in adGlobals_ppc64.hpp. + // enumeration in adGlobals_ppc.hpp. if (reg == OptoReg::Bad) return rc_bad;
--- a/hotspot/src/cpu/ppc/vm/register_ppc.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/cpu/ppc/vm/register_ppc.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. * Copyright 2012, 2014 SAP AG. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * @@ -27,7 +27,6 @@ #define CPU_PPC_VM_REGISTER_PPC_HPP #include "asm/register.hpp" -#include "vm_version_ppc.hpp" // forward declaration class Address; @@ -92,8 +91,8 @@ inline friend Register as_Register(int encoding); // accessors - int encoding() const { assert(is_valid(), "invalid register"); return value(); } - VMReg as_VMReg(); + int encoding() const { assert(is_valid(), "invalid register"); return value(); } + inline VMReg as_VMReg(); Register successor() const { return as_Register(encoding() + 1); } // testers @@ -208,8 +207,8 @@ inline friend ConditionRegister as_ConditionRegister(int encoding); // accessors - int encoding() const { assert(is_valid(), "invalid register"); return value(); } - VMReg as_VMReg(); + int encoding() const { assert(is_valid(), "invalid register"); return value(); } + inline VMReg as_VMReg(); // testers bool is_valid() const { return (0 <= value() && value() < number_of_registers); } @@ -264,7 +263,7 @@ // accessors int encoding() const { assert(is_valid(), "invalid register"); return value(); } - VMReg as_VMReg(); + inline VMReg as_VMReg(); FloatRegister successor() const { return as_FloatRegister(encoding() + 1); } // testers @@ -365,7 +364,7 @@ // accessors int encoding() const { assert(is_valid(), "invalid register"); return value(); } - VMReg as_VMReg(); + inline VMReg as_VMReg(); // testers bool is_valid() const { return 0 <= value() && value() < number_of_registers; }
--- a/hotspot/src/cpu/ppc/vm/runtime_ppc.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/cpu/ppc/vm/runtime_ppc.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,6 +1,6 @@ /* - * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. - * Copyright 2012, 2013 SAP AG. All rights reserved. + * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright 2012, 2014 SAP AG. 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,6 +30,7 @@ #include "classfile/systemDictionary.hpp" #include "code/vmreg.hpp" #include "interpreter/interpreter.hpp" +#include "interpreter/interp_masm.hpp" #include "nativeInst_ppc.hpp" #include "opto/runtime.hpp" #include "runtime/interfaceSupport.hpp" @@ -37,7 +38,6 @@ #include "runtime/stubRoutines.hpp" #include "runtime/vframeArray.hpp" #include "utilities/globalDefinitions.hpp" -#include "vmreg_ppc.inline.hpp" #endif #define __ masm->
--- a/hotspot/src/cpu/ppc/vm/sharedRuntime_ppc.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/cpu/ppc/vm/sharedRuntime_ppc.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * Copyright 2012, 2014 SAP AG. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * @@ -29,16 +29,17 @@ #include "code/icBuffer.hpp" #include "code/vtableStubs.hpp" #include "interpreter/interpreter.hpp" +#include "interpreter/interp_masm.hpp" #include "oops/compiledICHolder.hpp" #include "prims/jvmtiRedefineClassesTrace.hpp" #include "runtime/sharedRuntime.hpp" #include "runtime/vframeArray.hpp" #include "vmreg_ppc.inline.hpp" -#include "adfiles/ad_ppc_64.hpp" #ifdef COMPILER1 #include "c1/c1_Runtime1.hpp" #endif #ifdef COMPILER2 +#include "adfiles/ad_ppc_64.hpp" #include "opto/runtime.hpp" #endif
--- a/hotspot/src/cpu/ppc/vm/stubGenerator_ppc.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/cpu/ppc/vm/stubGenerator_ppc.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * Copyright 2012, 2014 SAP AG. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * @@ -401,11 +401,11 @@ __ load_const(exception_file, (void*)__FILE__); __ load_const(exception_line, (void*)__LINE__); - __ std(R3_ARG1, thread_(pending_exception)); + __ std(R3_ARG1, in_bytes(JavaThread::pending_exception_offset()), R16_thread); // store into `char *' - __ std(exception_file, thread_(exception_file)); + __ std(exception_file, in_bytes(JavaThread::exception_file_offset()), R16_thread); // store into `int' - __ stw(exception_line, thread_(exception_line)); + __ stw(exception_line, in_bytes(JavaThread::exception_line_offset()), R16_thread); // complete return to VM assert(StubRoutines::_call_stub_return_address != NULL, "must have been generated before"); @@ -524,8 +524,6 @@ int frame_size_in_bytes = frame::abi_reg_args_size; OopMap* map = new OopMap(frame_size_in_bytes / sizeof(jint), 0); - StubCodeMark mark(this, "StubRoutines", "throw_exception"); - address start = __ pc(); __ save_LR_CR(R11_scratch1); @@ -846,8 +844,6 @@ // // Don't generate, rather use C++ code. address generate_verify_oop() { - StubCodeMark mark(this, "StubRoutines", "verify_oop"); - // this is actually a `FunctionDescriptor*'. address start = 0;
--- a/hotspot/src/cpu/ppc/vm/templateInterpreter_ppc.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/cpu/ppc/vm/templateInterpreter_ppc.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -30,6 +30,7 @@ #include "interpreter/interpreter.hpp" #include "interpreter/interpreterGenerator.hpp" #include "interpreter/interpreterRuntime.hpp" +#include "interpreter/interp_masm.hpp" #include "interpreter/templateTable.hpp" #include "oops/arrayOop.hpp" #include "oops/methodData.hpp"
--- a/hotspot/src/cpu/ppc/vm/templateTable_ppc_64.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/cpu/ppc/vm/templateTable_ppc_64.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -27,6 +27,7 @@ #include "asm/macroAssembler.inline.hpp" #include "interpreter/interpreter.hpp" #include "interpreter/interpreterRuntime.hpp" +#include "interpreter/interp_masm.hpp" #include "interpreter/templateInterpreter.hpp" #include "interpreter/templateTable.hpp" #include "memory/universe.inline.hpp"
--- a/hotspot/src/cpu/ppc/vm/vmreg_ppc.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/cpu/ppc/vm/vmreg_ppc.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -26,10 +26,28 @@ #ifndef CPU_PPC_VM_VMREG_PPC_HPP #define CPU_PPC_VM_VMREG_PPC_HPP - bool is_Register(); - Register as_Register(); +inline bool is_Register() { + return (unsigned int)value() < (unsigned int)ConcreteRegisterImpl::max_gpr; +} + +inline bool is_FloatRegister() { + return value() >= ConcreteRegisterImpl::max_gpr && + value() < ConcreteRegisterImpl::max_fpr; +} - bool is_FloatRegister(); - FloatRegister as_FloatRegister(); +inline Register as_Register() { + assert(is_Register() && is_even(value()), "even-aligned GPR name"); + return ::as_Register(value()>>1); +} + +inline FloatRegister as_FloatRegister() { + assert(is_FloatRegister() && is_even(value()), "must be"); + return ::as_FloatRegister((value() - ConcreteRegisterImpl::max_gpr) >> 1); +} + +inline bool is_concrete() { + assert(is_reg(), "must be"); + return is_even(value()); +} #endif // CPU_PPC_VM_VMREG_PPC_HPP
--- a/hotspot/src/cpu/ppc/vm/vmreg_ppc.inline.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/cpu/ppc/vm/vmreg_ppc.inline.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -44,28 +44,5 @@ return VMRegImpl::as_VMReg((encoding()) + ConcreteRegisterImpl::max_cnd); } -inline bool VMRegImpl::is_Register() { - return (unsigned int)value() < (unsigned int)ConcreteRegisterImpl::max_gpr; -} - -inline bool VMRegImpl::is_FloatRegister() { - return value() >= ConcreteRegisterImpl::max_gpr && - value() < ConcreteRegisterImpl::max_fpr; -} - -inline Register VMRegImpl::as_Register() { - assert(is_Register() && is_even(value()), "even-aligned GPR name"); - return ::as_Register(value()>>1); -} - -inline FloatRegister VMRegImpl::as_FloatRegister() { - assert(is_FloatRegister() && is_even(value()), "must be"); - return ::as_FloatRegister((value() - ConcreteRegisterImpl::max_gpr) >> 1); -} - -inline bool VMRegImpl::is_concrete() { - assert(is_reg(), "must be"); - return is_even(value()); -} #endif // CPU_PPC_VM_VMREG_PPC_INLINE_HPP
--- a/hotspot/src/cpu/sparc/vm/c1_Runtime1_sparc.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/cpu/sparc/vm/c1_Runtime1_sparc.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, 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 @@ -31,7 +31,6 @@ #include "oops/compiledICHolder.hpp" #include "oops/oop.inline.hpp" #include "prims/jvmtiExport.hpp" -#include "register_sparc.hpp" #include "runtime/sharedRuntime.hpp" #include "runtime/signature.hpp" #include "runtime/vframeArray.hpp"
--- a/hotspot/src/cpu/sparc/vm/frame_sparc.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/cpu/sparc/vm/frame_sparc.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -23,6 +23,7 @@ */ #include "precompiled.hpp" +#include "code/codeCache.hpp" #include "interpreter/interpreter.hpp" #include "memory/resourceArea.hpp" #include "oops/markOop.hpp" @@ -593,17 +594,6 @@ return this->fp() == fp; } - -void frame::pd_gc_epilog() { - if (is_interpreted_frame()) { - // set constant pool cache entry for interpreter - Method* m = interpreter_frame_method(); - - *interpreter_frame_cpoolcache_addr() = m->constants()->cache(); - } -} - - bool frame::is_interpreted_frame_valid(JavaThread* thread) const { #ifdef CC_INTERP // Is there anything to do? @@ -641,10 +631,10 @@ return false; } - // validate bci/bcx + // validate bci/bcp - intptr_t bcx = interpreter_frame_bcx(); - if (m->validate_bci_from_bcx(bcx) < 0) { + address bcp = interpreter_frame_bcp(); + if (m->validate_bci_from_bcp(bcp) < 0) { return false; }
--- a/hotspot/src/cpu/sparc/vm/frame_sparc.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/cpu/sparc/vm/frame_sparc.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -78,7 +78,6 @@ // Lesp first free element of expression stack // (which grows towards __higher__ addresses) // Lbcp is set to address of bytecode to execute -// It is accessed in the frame under the name "bcx". // It may at times (during GC) be an index instead. // Lmethod the method being interpreted // Llocals the base pointer for accessing the locals array
--- a/hotspot/src/cpu/sparc/vm/frame_sparc.inline.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/cpu/sparc/vm/frame_sparc.inline.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -26,6 +26,7 @@ #define CPU_SPARC_VM_FRAME_SPARC_INLINE_HPP #include "asm/macroAssembler.hpp" +#include "code/vmreg.inline.hpp" // Inline functions for SPARC frames: @@ -98,12 +99,12 @@ return (intptr_t**) &istate->_locals; } -inline intptr_t* frame::interpreter_frame_bcx_addr() const { +inline intptr_t* frame::interpreter_frame_bcp_addr() const { interpreterState istate = get_interpreterState(); return (intptr_t*) &istate->_bcp; } -inline intptr_t* frame::interpreter_frame_mdx_addr() const { +inline intptr_t* frame::interpreter_frame_mdp_addr() const { interpreterState istate = get_interpreterState(); return (intptr_t*) &istate->_mdx; } @@ -165,12 +166,11 @@ return (intptr_t**) sp_addr_at( Llocals->sp_offset_in_saved_window()); } -inline intptr_t* frame::interpreter_frame_bcx_addr() const { - // %%%%% reinterpreting Lbcp as a bcx +inline intptr_t* frame::interpreter_frame_bcp_addr() const { return (intptr_t*) sp_addr_at( Lbcp->sp_offset_in_saved_window()); } -inline intptr_t* frame::interpreter_frame_mdx_addr() const { +inline intptr_t* frame::interpreter_frame_mdp_addr() const { // %%%%% reinterpreting ImethodDataPtr as a mdx return (intptr_t*) sp_addr_at( ImethodDataPtr->sp_offset_in_saved_window()); }
--- a/hotspot/src/cpu/sparc/vm/interpreterRT_sparc.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/cpu/sparc/vm/interpreterRT_sparc.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -23,6 +23,7 @@ */ #include "precompiled.hpp" +#include "asm/macroAssembler.inline.hpp" #include "interpreter/interpreter.hpp" #include "interpreter/interpreterRuntime.hpp" #include "memory/allocation.inline.hpp"
--- a/hotspot/src/cpu/sparc/vm/interpreter_sparc.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/cpu/sparc/vm/interpreter_sparc.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -28,6 +28,7 @@ #include "interpreter/interpreter.hpp" #include "interpreter/interpreterGenerator.hpp" #include "interpreter/interpreterRuntime.hpp" +#include "interpreter/interp_masm.hpp" #include "interpreter/templateTable.hpp" #include "oops/arrayOop.hpp" #include "oops/methodData.hpp"
--- a/hotspot/src/cpu/sparc/vm/macroAssembler_sparc.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/cpu/sparc/vm/macroAssembler_sparc.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -23,7 +23,7 @@ */ #include "precompiled.hpp" -#include "asm/assembler.inline.hpp" +#include "asm/macroAssembler.inline.hpp" #include "compiler/disassembler.hpp" #include "gc_interface/collectedHeap.inline.hpp" #include "interpreter/interpreter.hpp"
--- a/hotspot/src/cpu/sparc/vm/macroAssembler_sparc.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/cpu/sparc/vm/macroAssembler_sparc.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -186,8 +186,7 @@ // the interpreter to work right // (These assignments must be compatible with L7_thread_cache; see above.) -// Since Lbcp points into the middle of the method object, -// it is temporarily converted into a "bcx" during GC. +// Lbcp points into the middle of the method object. // Exception processing // These registers are passed into exception handlers.
--- a/hotspot/src/cpu/sparc/vm/methodHandles_sparc.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/cpu/sparc/vm/methodHandles_sparc.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2008, 2014, 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 @@ -25,6 +25,7 @@ #include "precompiled.hpp" #include "asm/macroAssembler.hpp" #include "interpreter/interpreter.hpp" +#include "interpreter/interp_masm.hpp" #include "memory/allocation.inline.hpp" #include "prims/methodHandles.hpp"
--- a/hotspot/src/cpu/sparc/vm/register_sparc.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/cpu/sparc/vm/register_sparc.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, 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 @@ -26,7 +26,6 @@ #define CPU_SPARC_VM_REGISTER_SPARC_HPP #include "asm/register.hpp" -#include "vm_version_sparc.hpp" // forward declaration class Address; @@ -65,7 +64,7 @@ friend Register as_oRegister(int number); friend Register as_gRegister(int number); - VMReg as_VMReg(); + inline VMReg as_VMReg(); // accessors int encoding() const { assert(is_valid(), "invalid register"); return value(); } @@ -234,7 +233,7 @@ }; // construction - VMReg as_VMReg( ); + inline VMReg as_VMReg( ); // accessors int encoding() const { assert(is_valid(), "invalid register"); return value(); }
--- a/hotspot/src/cpu/sparc/vm/templateInterpreter_sparc.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/cpu/sparc/vm/templateInterpreter_sparc.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -28,6 +28,7 @@ #include "interpreter/interpreter.hpp" #include "interpreter/interpreterGenerator.hpp" #include "interpreter/interpreterRuntime.hpp" +#include "interpreter/interp_masm.hpp" #include "interpreter/templateTable.hpp" #include "oops/arrayOop.hpp" #include "oops/methodData.hpp" @@ -1785,7 +1786,7 @@ __ verify_thread(); // expression stack is undefined here // O0: exception, i.e. Oexception - // Lbcp: exception bcx + // Lbcp: exception bcp __ verify_oop(Oexception);
--- a/hotspot/src/cpu/sparc/vm/templateTable_sparc.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/cpu/sparc/vm/templateTable_sparc.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -25,6 +25,7 @@ #include "precompiled.hpp" #include "interpreter/interpreter.hpp" #include "interpreter/interpreterRuntime.hpp" +#include "interpreter/interp_masm.hpp" #include "interpreter/templateTable.hpp" #include "memory/universe.inline.hpp" #include "oops/methodData.hpp"
--- a/hotspot/src/cpu/sparc/vm/vmreg_sparc.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/cpu/sparc/vm/vmreg_sparc.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -25,10 +25,35 @@ #ifndef CPU_SPARC_VM_VMREG_SPARC_HPP #define CPU_SPARC_VM_VMREG_SPARC_HPP - bool is_Register(); - Register as_Register(); +inline bool is_Register() { return value() >= 0 && value() < ConcreteRegisterImpl::max_gpr; } +inline bool is_FloatRegister() { return value() >= ConcreteRegisterImpl::max_gpr && + value() < ConcreteRegisterImpl::max_fpr; } +inline Register as_Register() { + + assert( is_Register() && is_even(value()), "even-aligned GPR name" ); + // Yuk + return ::as_Register(value()>>1); +} - bool is_FloatRegister(); - FloatRegister as_FloatRegister(); +inline FloatRegister as_FloatRegister() { + assert( is_FloatRegister(), "must be" ); + // Yuk + return ::as_FloatRegister( value() - ConcreteRegisterImpl::max_gpr ); +} + +inline bool is_concrete() { + assert(is_reg(), "must be"); + int v = value(); + if ( v < ConcreteRegisterImpl::max_gpr ) { + return is_even(v); + } + // F0..F31 + if ( v <= ConcreteRegisterImpl::max_gpr + 31) return true; + if ( v < ConcreteRegisterImpl::max_fpr) { + return is_even(v); + } + assert(false, "what register?"); + return false; +} #endif // CPU_SPARC_VM_VMREG_SPARC_HPP
--- a/hotspot/src/cpu/sparc/vm/vmreg_sparc.inline.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/cpu/sparc/vm/vmreg_sparc.inline.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -33,35 +33,5 @@ inline VMReg FloatRegisterImpl::as_VMReg() { return VMRegImpl::as_VMReg( ConcreteRegisterImpl::max_gpr + encoding() ); } -inline bool VMRegImpl::is_Register() { return value() >= 0 && value() < ConcreteRegisterImpl::max_gpr; } -inline bool VMRegImpl::is_FloatRegister() { return value() >= ConcreteRegisterImpl::max_gpr && - value() < ConcreteRegisterImpl::max_fpr; } -inline Register VMRegImpl::as_Register() { - - assert( is_Register() && is_even(value()), "even-aligned GPR name" ); - // Yuk - return ::as_Register(value()>>1); -} - -inline FloatRegister VMRegImpl::as_FloatRegister() { - assert( is_FloatRegister(), "must be" ); - // Yuk - return ::as_FloatRegister( value() - ConcreteRegisterImpl::max_gpr ); -} - -inline bool VMRegImpl::is_concrete() { - assert(is_reg(), "must be"); - int v = value(); - if ( v < ConcreteRegisterImpl::max_gpr ) { - return is_even(v); - } - // F0..F31 - if ( v <= ConcreteRegisterImpl::max_gpr + 31) return true; - if ( v < ConcreteRegisterImpl::max_fpr) { - return is_even(v); - } - assert(false, "what register?"); - return false; -} #endif // CPU_SPARC_VM_VMREG_SPARC_INLINE_HPP
--- a/hotspot/src/cpu/x86/vm/frame_x86.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/cpu/x86/vm/frame_x86.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -537,10 +537,6 @@ return _fp == (fp - diff); } -void frame::pd_gc_epilog() { - // nothing done here now -} - bool frame::is_interpreted_frame_valid(JavaThread* thread) const { // QQQ #ifdef CC_INTERP @@ -577,10 +573,10 @@ return false; } - // validate bci/bcx + // validate bci/bcp - intptr_t bcx = interpreter_frame_bcx(); - if (m->validate_bci_from_bcx(bcx) < 0) { + address bcp = interpreter_frame_bcp(); + if (m->validate_bci_from_bcp(bcp) < 0) { return false; } @@ -692,10 +688,10 @@ DESCRIBE_FP_OFFSET(interpreter_frame_sender_sp); DESCRIBE_FP_OFFSET(interpreter_frame_last_sp); DESCRIBE_FP_OFFSET(interpreter_frame_method); - DESCRIBE_FP_OFFSET(interpreter_frame_mdx); + DESCRIBE_FP_OFFSET(interpreter_frame_mdp); DESCRIBE_FP_OFFSET(interpreter_frame_cache); DESCRIBE_FP_OFFSET(interpreter_frame_locals); - DESCRIBE_FP_OFFSET(interpreter_frame_bcx); + DESCRIBE_FP_OFFSET(interpreter_frame_bcp); DESCRIBE_FP_OFFSET(interpreter_frame_initial_sp); #endif }
--- a/hotspot/src/cpu/x86/vm/frame_x86.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/cpu/x86/vm/frame_x86.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -40,7 +40,7 @@ // ... | monitor block size // [monitors ] / // [monitor block size ] -// [byte code index/pointr] = bcx() bcx_offset +// [byte code pointer ] = bcp() bcp_offset // [pointer to locals ] = locals() locals_offset // [constant pool cache ] = cache() cache_offset // [methodData ] = mdp() mdx_offset @@ -111,11 +111,11 @@ // outgoing sp before a call to an invoked method interpreter_frame_last_sp_offset = interpreter_frame_sender_sp_offset - 1, interpreter_frame_method_offset = interpreter_frame_last_sp_offset - 1, - interpreter_frame_mdx_offset = interpreter_frame_method_offset - 1, - interpreter_frame_cache_offset = interpreter_frame_mdx_offset - 1, + interpreter_frame_mdp_offset = interpreter_frame_method_offset - 1, + interpreter_frame_cache_offset = interpreter_frame_mdp_offset - 1, interpreter_frame_locals_offset = interpreter_frame_cache_offset - 1, - interpreter_frame_bcx_offset = interpreter_frame_locals_offset - 1, - interpreter_frame_initial_sp_offset = interpreter_frame_bcx_offset - 1, + interpreter_frame_bcp_offset = interpreter_frame_locals_offset - 1, + interpreter_frame_initial_sp_offset = interpreter_frame_bcp_offset - 1, interpreter_frame_monitor_block_top_offset = interpreter_frame_initial_sp_offset, interpreter_frame_monitor_block_bottom_offset = interpreter_frame_initial_sp_offset,
--- a/hotspot/src/cpu/x86/vm/frame_x86.inline.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/cpu/x86/vm/frame_x86.inline.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -26,6 +26,7 @@ #define CPU_X86_VM_FRAME_X86_INLINE_HPP #include "code/codeCache.hpp" +#include "code/vmreg.inline.hpp" // Inline functions for Intel frames: @@ -168,7 +169,7 @@ return &(get_interpreterState()->_locals); } -inline intptr_t* frame::interpreter_frame_bcx_addr() const { +inline intptr_t* frame::interpreter_frame_bcp_addr() const { assert(is_interpreted_frame(), "must be interpreted"); return (intptr_t*) &(get_interpreterState()->_bcp); } @@ -188,7 +189,7 @@ return &(get_interpreterState()->_method); } -inline intptr_t* frame::interpreter_frame_mdx_addr() const { +inline intptr_t* frame::interpreter_frame_mdp_addr() const { assert(is_interpreted_frame(), "must be interpreted"); return (intptr_t*) &(get_interpreterState()->_mdx); } @@ -210,13 +211,13 @@ return *(intptr_t**)addr_at(interpreter_frame_last_sp_offset); } -inline intptr_t* frame::interpreter_frame_bcx_addr() const { - return (intptr_t*)addr_at(interpreter_frame_bcx_offset); +inline intptr_t* frame::interpreter_frame_bcp_addr() const { + return (intptr_t*)addr_at(interpreter_frame_bcp_offset); } -inline intptr_t* frame::interpreter_frame_mdx_addr() const { - return (intptr_t*)addr_at(interpreter_frame_mdx_offset); +inline intptr_t* frame::interpreter_frame_mdp_addr() const { + return (intptr_t*)addr_at(interpreter_frame_mdp_offset); }
--- a/hotspot/src/cpu/x86/vm/interp_masm_x86.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/cpu/x86/vm/interp_masm_x86.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -134,7 +134,7 @@ shll(tmp, exact_log2(DataLayout::cell_size)); addptr(mdp, tmp); } - movptr(Address(rbp, frame::interpreter_frame_mdx_offset * wordSize), mdp); + movptr(Address(rbp, frame::interpreter_frame_mdp_offset * wordSize), mdp); } else { assert(MethodData::profile_return(), "either profile call args or call ret"); update_mdp_by_constant(mdp, in_bytes(TypeEntriesAtCall::return_only_size()));
--- a/hotspot/src/cpu/x86/vm/interp_masm_x86_32.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/cpu/x86/vm/interp_masm_x86_32.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -826,7 +826,7 @@ // Test ImethodDataPtr. If it is null, continue at the specified label void InterpreterMacroAssembler::test_method_data_pointer(Register mdp, Label& zero_continue) { assert(ProfileInterpreter, "must be profiling interpreter"); - movptr(mdp, Address(rbp, frame::interpreter_frame_mdx_offset * wordSize)); + movptr(mdp, Address(rbp, frame::interpreter_frame_mdp_offset * wordSize)); testptr(mdp, mdp); jcc(Assembler::zero, zero_continue); } @@ -853,7 +853,7 @@ addptr(rbx, in_bytes(MethodData::data_offset())); addptr(rax, rbx); bind(set_mdp); - movptr(Address(rbp, frame::interpreter_frame_mdx_offset * wordSize), rax); + movptr(Address(rbp, frame::interpreter_frame_mdp_offset * wordSize), rax); pop(rbx); pop(rax); } @@ -975,7 +975,7 @@ assert(ProfileInterpreter, "must be profiling interpreter"); Address disp_address(mdp_in, offset_of_disp); addptr(mdp_in,disp_address); - movptr(Address(rbp, frame::interpreter_frame_mdx_offset * wordSize), mdp_in); + movptr(Address(rbp, frame::interpreter_frame_mdp_offset * wordSize), mdp_in); } @@ -983,14 +983,14 @@ assert(ProfileInterpreter, "must be profiling interpreter"); Address disp_address(mdp_in, reg, Address::times_1, offset_of_disp); addptr(mdp_in, disp_address); - movptr(Address(rbp, frame::interpreter_frame_mdx_offset * wordSize), mdp_in); + movptr(Address(rbp, frame::interpreter_frame_mdp_offset * wordSize), mdp_in); } void InterpreterMacroAssembler::update_mdp_by_constant(Register mdp_in, int constant) { assert(ProfileInterpreter, "must be profiling interpreter"); addptr(mdp_in, constant); - movptr(Address(rbp, frame::interpreter_frame_mdx_offset * wordSize), mdp_in); + movptr(Address(rbp, frame::interpreter_frame_mdp_offset * wordSize), mdp_in); }
--- a/hotspot/src/cpu/x86/vm/interp_masm_x86_32.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/cpu/x86/vm/interp_masm_x86_32.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -61,8 +61,8 @@ #else - void save_bcp() { movptr(Address(rbp, frame::interpreter_frame_bcx_offset * wordSize), rsi); } - void restore_bcp() { movptr(rsi, Address(rbp, frame::interpreter_frame_bcx_offset * wordSize)); } + void save_bcp() { movptr(Address(rbp, frame::interpreter_frame_bcp_offset * wordSize), rsi); } + void restore_bcp() { movptr(rsi, Address(rbp, frame::interpreter_frame_bcp_offset * wordSize)); } void restore_locals() { movptr(rdi, Address(rbp, frame::interpreter_frame_locals_offset * wordSize)); } // Helpers for runtime call arguments/results
--- a/hotspot/src/cpu/x86/vm/interp_masm_x86_64.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/cpu/x86/vm/interp_masm_x86_64.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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 @@ -841,7 +841,7 @@ void InterpreterMacroAssembler::test_method_data_pointer(Register mdp, Label& zero_continue) { assert(ProfileInterpreter, "must be profiling interpreter"); - movptr(mdp, Address(rbp, frame::interpreter_frame_mdx_offset * wordSize)); + movptr(mdp, Address(rbp, frame::interpreter_frame_mdp_offset * wordSize)); testptr(mdp, mdp); jcc(Assembler::zero, zero_continue); } @@ -868,7 +868,7 @@ addptr(rbx, in_bytes(MethodData::data_offset())); addptr(rax, rbx); bind(set_mdp); - movptr(Address(rbp, frame::interpreter_frame_mdx_offset * wordSize), rax); + movptr(Address(rbp, frame::interpreter_frame_mdp_offset * wordSize), rax); pop(rbx); pop(rax); } @@ -991,7 +991,7 @@ assert(ProfileInterpreter, "must be profiling interpreter"); Address disp_address(mdp_in, offset_of_disp); addptr(mdp_in, disp_address); - movptr(Address(rbp, frame::interpreter_frame_mdx_offset * wordSize), mdp_in); + movptr(Address(rbp, frame::interpreter_frame_mdp_offset * wordSize), mdp_in); } @@ -1001,7 +1001,7 @@ assert(ProfileInterpreter, "must be profiling interpreter"); Address disp_address(mdp_in, reg, Address::times_1, offset_of_disp); addptr(mdp_in, disp_address); - movptr(Address(rbp, frame::interpreter_frame_mdx_offset * wordSize), mdp_in); + movptr(Address(rbp, frame::interpreter_frame_mdp_offset * wordSize), mdp_in); } @@ -1009,7 +1009,7 @@ int constant) { assert(ProfileInterpreter, "must be profiling interpreter"); addptr(mdp_in, constant); - movptr(Address(rbp, frame::interpreter_frame_mdx_offset * wordSize), mdp_in); + movptr(Address(rbp, frame::interpreter_frame_mdp_offset * wordSize), mdp_in); }
--- a/hotspot/src/cpu/x86/vm/interp_masm_x86_64.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/cpu/x86/vm/interp_masm_x86_64.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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 @@ -58,11 +58,11 @@ // Interpreter-specific registers void save_bcp() { - movptr(Address(rbp, frame::interpreter_frame_bcx_offset * wordSize), r13); + movptr(Address(rbp, frame::interpreter_frame_bcp_offset * wordSize), r13); } void restore_bcp() { - movptr(r13, Address(rbp, frame::interpreter_frame_bcx_offset * wordSize)); + movptr(r13, Address(rbp, frame::interpreter_frame_bcp_offset * wordSize)); } void restore_locals() {
--- a/hotspot/src/cpu/x86/vm/interpreter_x86_32.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/cpu/x86/vm/interpreter_x86_32.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -28,6 +28,7 @@ #include "interpreter/interpreter.hpp" #include "interpreter/interpreterGenerator.hpp" #include "interpreter/interpreterRuntime.hpp" +#include "interpreter/interp_masm.hpp" #include "interpreter/templateTable.hpp" #include "oops/arrayOop.hpp" #include "oops/methodData.hpp"
--- a/hotspot/src/cpu/x86/vm/interpreter_x86_64.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/cpu/x86/vm/interpreter_x86_64.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -28,6 +28,7 @@ #include "interpreter/interpreter.hpp" #include "interpreter/interpreterGenerator.hpp" #include "interpreter/interpreterRuntime.hpp" +#include "interpreter/interp_masm.hpp" #include "interpreter/templateTable.hpp" #include "oops/arrayOop.hpp" #include "oops/methodData.hpp"
--- a/hotspot/src/cpu/x86/vm/register_x86.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/cpu/x86/vm/register_x86.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, 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 @@ -26,7 +26,6 @@ #define CPU_X86_VM_REGISTER_X86_HPP #include "asm/register.hpp" -#include "vm_version_x86.hpp" class VMRegImpl; typedef VMRegImpl* VMReg; @@ -59,7 +58,7 @@ // construction inline friend Register as_Register(int encoding); - VMReg as_VMReg(); + inline VMReg as_VMReg(); // accessors int encoding() const { assert(is_valid(), "invalid register"); return (intptr_t)this; } @@ -110,9 +109,10 @@ // construction inline friend FloatRegister as_FloatRegister(int encoding); - VMReg as_VMReg(); + inline VMReg as_VMReg(); // derived registers, offsets, and addresses + FloatRegister successor() const { return as_FloatRegister(encoding() + 1); } // accessors @@ -152,7 +152,7 @@ // construction friend XMMRegister as_XMMRegister(int encoding); - VMReg as_VMReg(); + inline VMReg as_VMReg(); // derived registers, offsets, and addresses XMMRegister successor() const { return as_XMMRegister(encoding() + 1); }
--- a/hotspot/src/cpu/x86/vm/templateInterpreter_x86_32.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/cpu/x86/vm/templateInterpreter_x86_32.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -28,6 +28,7 @@ #include "interpreter/interpreter.hpp" #include "interpreter/interpreterGenerator.hpp" #include "interpreter/interpreterRuntime.hpp" +#include "interpreter/interp_masm.hpp" #include "interpreter/templateTable.hpp" #include "oops/arrayOop.hpp" #include "oops/methodData.hpp" @@ -51,7 +52,7 @@ #ifndef CC_INTERP const int method_offset = frame::interpreter_frame_method_offset * wordSize; -const int bci_offset = frame::interpreter_frame_bcx_offset * wordSize; +const int bcp_offset = frame::interpreter_frame_bcp_offset * wordSize; const int locals_offset = frame::interpreter_frame_locals_offset * wordSize; //------------------------------------------------------------------------------------------------------------------------
--- a/hotspot/src/cpu/x86/vm/templateInterpreter_x86_64.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/cpu/x86/vm/templateInterpreter_x86_64.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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 @@ -28,6 +28,7 @@ #include "interpreter/interpreter.hpp" #include "interpreter/interpreterGenerator.hpp" #include "interpreter/interpreterRuntime.hpp" +#include "interpreter/interp_masm.hpp" #include "interpreter/templateTable.hpp" #include "oops/arrayOop.hpp" #include "oops/methodData.hpp" @@ -51,7 +52,7 @@ #ifndef CC_INTERP const int method_offset = frame::interpreter_frame_method_offset * wordSize; -const int bci_offset = frame::interpreter_frame_bcx_offset * wordSize; +const int bcp_offset = frame::interpreter_frame_bcp_offset * wordSize; const int locals_offset = frame::interpreter_frame_locals_offset * wordSize; //-----------------------------------------------------------------------------
--- a/hotspot/src/cpu/x86/vm/templateTable_x86_32.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/cpu/x86/vm/templateTable_x86_32.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -26,6 +26,7 @@ #include "asm/macroAssembler.hpp" #include "interpreter/interpreter.hpp" #include "interpreter/interpreterRuntime.hpp" +#include "interpreter/interp_masm.hpp" #include "interpreter/templateTable.hpp" #include "memory/universe.inline.hpp" #include "oops/methodData.hpp"
--- a/hotspot/src/cpu/x86/vm/templateTable_x86_64.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/cpu/x86/vm/templateTable_x86_64.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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 @@ -26,6 +26,7 @@ #include "asm/macroAssembler.hpp" #include "interpreter/interpreter.hpp" #include "interpreter/interpreterRuntime.hpp" +#include "interpreter/interp_masm.hpp" #include "interpreter/templateTable.hpp" #include "memory/universe.inline.hpp" #include "oops/methodData.hpp"
--- a/hotspot/src/cpu/x86/vm/vmreg_x86.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/cpu/x86/vm/vmreg_x86.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -25,13 +25,49 @@ #ifndef CPU_X86_VM_VMREG_X86_HPP #define CPU_X86_VM_VMREG_X86_HPP - bool is_Register(); - Register as_Register(); + + +inline bool is_Register() { + return (unsigned int) value() < (unsigned int) ConcreteRegisterImpl::max_gpr; +} + +inline bool is_FloatRegister() { + return value() >= ConcreteRegisterImpl::max_gpr && value() < ConcreteRegisterImpl::max_fpr; +} + +inline bool is_XMMRegister() { + return value() >= ConcreteRegisterImpl::max_fpr && value() < ConcreteRegisterImpl::max_xmm; +} + +inline Register as_Register() { - bool is_FloatRegister(); - FloatRegister as_FloatRegister(); + assert( is_Register(), "must be"); + // Yuk +#ifdef AMD64 + return ::as_Register(value() >> 1); +#else + return ::as_Register(value()); +#endif // AMD64 +} - bool is_XMMRegister(); - XMMRegister as_XMMRegister(); +inline FloatRegister as_FloatRegister() { + assert( is_FloatRegister() && is_even(value()), "must be" ); + // Yuk + return ::as_FloatRegister((value() - ConcreteRegisterImpl::max_gpr) >> 1); +} + +inline XMMRegister as_XMMRegister() { + assert( is_XMMRegister() && is_even(value()), "must be" ); + // Yuk + return ::as_XMMRegister((value() - ConcreteRegisterImpl::max_fpr) >> 3); +} + +inline bool is_concrete() { + assert(is_reg(), "must be"); +#ifndef AMD64 + if (is_Register()) return true; +#endif // AMD64 + return is_even(value()); +} #endif // CPU_X86_VM_VMREG_X86_HPP
--- a/hotspot/src/cpu/x86/vm/vmreg_x86.inline.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/cpu/x86/vm/vmreg_x86.inline.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -42,48 +42,4 @@ return VMRegImpl::as_VMReg((encoding() << 3) + ConcreteRegisterImpl::max_fpr); } - -inline bool VMRegImpl::is_Register() { - return (unsigned int) value() < (unsigned int) ConcreteRegisterImpl::max_gpr; -} - -inline bool VMRegImpl::is_FloatRegister() { - return value() >= ConcreteRegisterImpl::max_gpr && value() < ConcreteRegisterImpl::max_fpr; -} - -inline bool VMRegImpl::is_XMMRegister() { - return value() >= ConcreteRegisterImpl::max_fpr && value() < ConcreteRegisterImpl::max_xmm; -} - -inline Register VMRegImpl::as_Register() { - - assert( is_Register(), "must be"); - // Yuk -#ifdef AMD64 - return ::as_Register(value() >> 1); -#else - return ::as_Register(value()); -#endif // AMD64 -} - -inline FloatRegister VMRegImpl::as_FloatRegister() { - assert( is_FloatRegister() && is_even(value()), "must be" ); - // Yuk - return ::as_FloatRegister((value() - ConcreteRegisterImpl::max_gpr) >> 1); -} - -inline XMMRegister VMRegImpl::as_XMMRegister() { - assert( is_XMMRegister() && is_even(value()), "must be" ); - // Yuk - return ::as_XMMRegister((value() - ConcreteRegisterImpl::max_fpr) >> 3); -} - -inline bool VMRegImpl::is_concrete() { - assert(is_reg(), "must be"); -#ifndef AMD64 - if (is_Register()) return true; -#endif // AMD64 - return is_even(value()); -} - #endif // CPU_X86_VM_VMREG_X86_INLINE_HPP
--- a/hotspot/src/cpu/x86/vm/x86.ad Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/cpu/x86/vm/x86.ad Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ // -// Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2011, 2014, 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 @@ -487,6 +487,8 @@ // To keep related declarations/definitions/uses close together, // we switch between source %{ }% and source_hpp %{ }% freely as needed. +class NativeJump; + class CallStubImpl { //--------------------------------------------------------------
--- a/hotspot/src/cpu/zero/vm/frame_zero.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/cpu/zero/vm/frame_zero.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved. * Copyright 2007, 2008, 2009, 2010, 2011 Red Hat, Inc. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * @@ -119,9 +119,6 @@ return false; } -void frame::pd_gc_epilog() { -} - bool frame::is_interpreted_frame_valid(JavaThread *thread) const { ShouldNotCallThis(); return false;
--- a/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved. * Copyright 2007, 2008, 2009, 2010 Red Hat, Inc. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * @@ -101,7 +101,7 @@ return &(get_interpreterState()->_locals); } -inline intptr_t* frame::interpreter_frame_bcx_addr() const { +inline intptr_t* frame::interpreter_frame_bcp_addr() const { return (intptr_t*) &(get_interpreterState()->_bcp); } @@ -113,7 +113,7 @@ return &(get_interpreterState()->_method); } -inline intptr_t* frame::interpreter_frame_mdx_addr() const { +inline intptr_t* frame::interpreter_frame_mdp_addr() const { return (intptr_t*) &(get_interpreterState()->_mdx); }
--- a/hotspot/src/os/aix/vm/os_aix.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/os/aix/vm/os_aix.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -66,6 +66,7 @@ #include "runtime/thread.inline.hpp" #include "runtime/threadCritical.hpp" #include "runtime/timer.hpp" +#include "runtime/vm_version.hpp" #include "services/attachListener.hpp" #include "services/runtimeService.hpp" #include "utilities/decoder.hpp"
--- a/hotspot/src/os/aix/vm/os_aix.inline.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/os/aix/vm/os_aix.inline.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -36,9 +36,6 @@ #include <sys/ioctl.h> #include <netdb.h> -// Defined in the system headers included above. -#undef rem_size - inline void* os::thread_local_storage_at(int index) { return pthread_getspecific((pthread_key_t)index); }
--- a/hotspot/src/os/bsd/dtrace/generateJvmOffsets.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/os/bsd/dtrace/generateJvmOffsets.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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 @@ -202,11 +202,11 @@ GEN_VALUE(OFFSET_interpreter_frame_method, 2 * pointer_size); /* L2 in saved window */ GEN_VALUE(OFFSET_interpreter_frame_sender_sp, 13 * pointer_size); /* I5 in saved window */ // Fake value for consistency. It is not going to be used. - GEN_VALUE(OFFSET_interpreter_frame_bcx_offset, 0xFFFF); + GEN_VALUE(OFFSET_interpreter_frame_bcp_offset, 0xFFFF); #elif defined(i386) || defined(__i386) || defined(__amd64) GEN_VALUE(OFFSET_interpreter_frame_sender_sp, -1 * pointer_size); GEN_VALUE(OFFSET_interpreter_frame_method, -3 * pointer_size); - GEN_VALUE(OFFSET_interpreter_frame_bcx_offset, -7 * pointer_size); + GEN_VALUE(OFFSET_interpreter_frame_bcp_offset, -7 * pointer_size); #endif GEN_OFFS(Klass, _name);
--- a/hotspot/src/os/bsd/dtrace/libjvm_db.c Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/os/bsd/dtrace/libjvm_db.c Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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 @@ -164,7 +164,7 @@ int32_t SIZE_CodeCache_log2_segment; uint64_t methodPtr; - uint64_t bcx; + uint64_t bcp; Nmethod_t *N; /*Inlined methods support */ Frame_t prev_fr; @@ -260,6 +260,9 @@ uint64_t base; int err; + /* Clear *vmp now in case we jump to fail: */ + memset(vmp, 0, sizeof(VMStructEntry)); + err = ps_pglobal_lookup(J->P, LIBJVM_SO, "gHotSpotVMStructs", &sym_addr); CHECK_FAIL(err); err = read_pointer(J, sym_addr, &gHotSpotVMStructs); @@ -1068,19 +1071,9 @@ return err; } -int is_bci(intptr_t bcx) { - switch (DATA_MODEL) { - case PR_MODEL_LP64: - return ((uintptr_t) bcx) <= ((uintptr_t) MAX_METHOD_CODE_SIZE) ; - case PR_MODEL_ILP32: - default: - return 0 <= bcx && bcx <= MAX_METHOD_CODE_SIZE; - } -} - static int name_for_imethod(jvm_agent_t* J, - uint64_t bcx, + uint64_t bcp, uint64_t method, char *result, size_t size, @@ -1095,7 +1088,7 @@ err = read_pointer(J, method + OFFSET_Method_constMethod, &constMethod); CHECK_FAIL(err); - bci = is_bci(bcx) ? bcx : bcx - (constMethod + (uint64_t) SIZE_ConstMethod); + bci = bcp - (constMethod + (uint64_t) SIZE_ConstMethod); if (debug) fprintf(stderr, "\t name_for_imethod: BEGIN: method: %#llx\n", method); @@ -1169,7 +1162,7 @@ if (err == PS_OK && strncmp(name, "Interpreter", 11) == 0) { *is_interpreted = 1; if (is_method(J, J->methodPtr)) { - return name_for_imethod(J, J->bcx, J->methodPtr, result, size, jframe); + return name_for_imethod(J, J->bcp, J->methodPtr, result, size, jframe); } } @@ -1326,7 +1319,7 @@ /* arguments given to read_pointer need to be worst case sized */ uint64_t methodPtr = 0; uint64_t sender_sp; - uint64_t bcx = 0; + uint64_t bcp = 0; int is_interpreted = 0; int result = PS_OK; int err = PS_OK; @@ -1357,7 +1350,7 @@ * regs[R_PC] contains a CALL instruction pc offset. */ pc += 8; - bcx = (uintptr_t) regs[R_L1]; + bcp = (uintptr_t) regs[R_L1]; methodPtr = (uintptr_t) regs[R_L2]; sender_sp = regs[R_I5]; if (debug > 2) { @@ -1385,13 +1378,13 @@ if (read_pointer(J, fp + OFFSET_interpreter_frame_sender_sp, &sender_sp) != PS_OK) { sender_sp = 0; } - if (read_pointer(J, fp + OFFSET_interpreter_frame_bcx_offset, &bcx) != PS_OK) { - bcx = 0; + if (read_pointer(J, fp + OFFSET_interpreter_frame_bcp_offset, &bcp) != PS_OK) { + bcp = 0; } #endif /* i386 */ J->methodPtr = methodPtr; - J->bcx = bcx; + J->bcp = bcp; /* On x86 with C2 JVM: native frame may have wrong regs[R_FP] * For example: JVM_SuspendThread frame poins to the top interpreted frame. @@ -1402,7 +1395,7 @@ */ #ifndef X86_COMPILER2 if (is_method(J, J->methodPtr)) { - result = name_for_imethod(J, bcx, J->methodPtr, name, size, jframe); + result = name_for_imethod(J, bcp, J->methodPtr, name, size, jframe); /* If the methodPtr is a method then this is highly likely to be an interpreter frame */ if (result >= 0) { @@ -1416,7 +1409,7 @@ } #ifdef X86_COMPILER2 else if (is_method(J, J->methodPtr)) { - result = name_for_imethod(J, bcx, J->methodPtr, name, size, jframe); + result = name_for_imethod(J, bcp, J->methodPtr, name, size, jframe); /* If the methodPtr is a method then this is highly likely to be an interpreter frame */ if (result >= 0) {
--- a/hotspot/src/os/solaris/dtrace/generateJvmOffsets.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/os/solaris/dtrace/generateJvmOffsets.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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 @@ -197,11 +197,11 @@ GEN_VALUE(OFFSET_interpreter_frame_method, 2 * pointer_size); /* L2 in saved window */ GEN_VALUE(OFFSET_interpreter_frame_sender_sp, 13 * pointer_size); /* I5 in saved window */ // Fake value for consistency. It is not going to be used. - GEN_VALUE(OFFSET_interpreter_frame_bcx_offset, 0xFFFF); + GEN_VALUE(OFFSET_interpreter_frame_bcp_offset, 0xFFFF); #elif defined(i386) || defined(__i386) || defined(__amd64) GEN_VALUE(OFFSET_interpreter_frame_sender_sp, -1 * pointer_size); GEN_VALUE(OFFSET_interpreter_frame_method, -3 * pointer_size); - GEN_VALUE(OFFSET_interpreter_frame_bcx_offset, -7 * pointer_size); + GEN_VALUE(OFFSET_interpreter_frame_bcp_offset, -7 * pointer_size); #endif GEN_OFFS(Klass, _name);
--- a/hotspot/src/os/solaris/dtrace/libjvm_db.c Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/os/solaris/dtrace/libjvm_db.c Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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 @@ -164,7 +164,7 @@ int32_t SIZE_CodeCache_log2_segment; uint64_t methodPtr; - uint64_t bcx; + uint64_t bcp; Nmethod_t *N; /*Inlined methods support */ Frame_t prev_fr; @@ -260,6 +260,9 @@ uint64_t base; int err; + /* Clear *vmp now in case we jump to fail: */ + memset(vmp, 0, sizeof(VMStructEntry)); + err = ps_pglobal_lookup(J->P, LIBJVM_SO, "gHotSpotVMStructs", &sym_addr); CHECK_FAIL(err); err = read_pointer(J, sym_addr, &gHotSpotVMStructs); @@ -1068,19 +1071,9 @@ return err; } -int is_bci(intptr_t bcx) { - switch (DATA_MODEL) { - case PR_MODEL_LP64: - return ((uintptr_t) bcx) <= ((uintptr_t) MAX_METHOD_CODE_SIZE) ; - case PR_MODEL_ILP32: - default: - return 0 <= bcx && bcx <= MAX_METHOD_CODE_SIZE; - } -} - static int name_for_imethod(jvm_agent_t* J, - uint64_t bcx, + uint64_t bcp, uint64_t method, char *result, size_t size, @@ -1095,7 +1088,7 @@ err = read_pointer(J, method + OFFSET_Method_constMethod, &constMethod); CHECK_FAIL(err); - bci = is_bci(bcx) ? bcx : bcx - (constMethod + (uint64_t) SIZE_ConstMethod); + bci = bcp - (constMethod + (uint64_t) SIZE_ConstMethod); if (debug) fprintf(stderr, "\t name_for_imethod: BEGIN: method: %#llx\n", method); @@ -1169,7 +1162,7 @@ if (err == PS_OK && strncmp(name, "Interpreter", 11) == 0) { *is_interpreted = 1; if (is_method(J, J->methodPtr)) { - return name_for_imethod(J, J->bcx, J->methodPtr, result, size, jframe); + return name_for_imethod(J, J->bcp, J->methodPtr, result, size, jframe); } } @@ -1326,7 +1319,7 @@ /* arguments given to read_pointer need to be worst case sized */ uint64_t methodPtr = 0; uint64_t sender_sp; - uint64_t bcx = 0; + uint64_t bcp = 0; int is_interpreted = 0; int result = PS_OK; int err = PS_OK; @@ -1357,7 +1350,7 @@ * regs[R_PC] contains a CALL instruction pc offset. */ pc += 8; - bcx = (uintptr_t) regs[R_L1]; + bcp = (uintptr_t) regs[R_L1]; methodPtr = (uintptr_t) regs[R_L2]; sender_sp = regs[R_I5]; if (debug > 2) { @@ -1385,13 +1378,13 @@ if (read_pointer(J, fp + OFFSET_interpreter_frame_sender_sp, &sender_sp) != PS_OK) { sender_sp = 0; } - if (read_pointer(J, fp + OFFSET_interpreter_frame_bcx_offset, &bcx) != PS_OK) { - bcx = 0; + if (read_pointer(J, fp + OFFSET_interpreter_frame_bcp_offset, &bcp) != PS_OK) { + bcp = 0; } #endif /* i386 */ J->methodPtr = methodPtr; - J->bcx = bcx; + J->bcp = bcp; /* On x86 with C2 JVM: native frame may have wrong regs[R_FP] * For example: JVM_SuspendThread frame poins to the top interpreted frame. @@ -1402,7 +1395,7 @@ */ #ifndef X86_COMPILER2 if (is_method(J, J->methodPtr)) { - result = name_for_imethod(J, bcx, J->methodPtr, name, size, jframe); + result = name_for_imethod(J, bcp, J->methodPtr, name, size, jframe); /* If the methodPtr is a method then this is highly likely to be an interpreter frame */ if (result >= 0) { @@ -1416,7 +1409,7 @@ } #ifdef X86_COMPILER2 else if (is_method(J, J->methodPtr)) { - result = name_for_imethod(J, bcx, J->methodPtr, name, size, jframe); + result = name_for_imethod(J, bcp, J->methodPtr, name, size, jframe); /* If the methodPtr is a method then this is highly likely to be an interpreter frame */ if (result >= 0) {
--- a/hotspot/src/os/solaris/vm/os_solaris.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/os/solaris/vm/os_solaris.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -59,6 +59,7 @@ #include "runtime/thread.inline.hpp" #include "runtime/threadCritical.hpp" #include "runtime/timer.hpp" +#include "runtime/vm_version.hpp" #include "services/attachListener.hpp" #include "services/memTracker.hpp" #include "services/runtimeService.hpp"
--- a/hotspot/src/os/windows/vm/os_windows.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/os/windows/vm/os_windows.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -62,6 +62,7 @@ #include "runtime/thread.inline.hpp" #include "runtime/threadCritical.hpp" #include "runtime/timer.hpp" +#include "runtime/vm_version.hpp" #include "services/attachListener.hpp" #include "services/memTracker.hpp" #include "services/runtimeService.hpp"
--- a/hotspot/src/os_cpu/aix_ppc/vm/atomic_aix_ppc.inline.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/os_cpu/aix_ppc/vm/atomic_aix_ppc.inline.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,6 +1,6 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * Copyright 2012, 2013 SAP AG. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2014, SAP AG. 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 @@ -28,7 +28,6 @@ #include "runtime/atomic.hpp" #include "runtime/os.hpp" -#include "vm_version_ppc.hpp" #ifndef _LP64 #error "Atomic currently only impleneted for PPC64"
--- a/hotspot/src/os_cpu/aix_ppc/vm/orderAccess_aix_ppc.inline.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/os_cpu/aix_ppc/vm/orderAccess_aix_ppc.inline.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,6 +1,6 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * Copyright 2012, 2013 SAP AG. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2014, SAP AG. 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 @@ -27,7 +27,6 @@ #define OS_CPU_AIX_OJDKPPC_VM_ORDERACCESS_AIX_PPC_INLINE_HPP #include "runtime/orderAccess.hpp" -#include "vm_version_ppc.hpp" // Implementation of class OrderAccess.
--- a/hotspot/src/os_cpu/bsd_x86/vm/atomic_bsd_x86.inline.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/os_cpu/bsd_x86/vm/atomic_bsd_x86.inline.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, 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 @@ -27,7 +27,6 @@ #include "runtime/atomic.hpp" #include "runtime/os.hpp" -#include "vm_version_x86.hpp" // Implementation of class atomic
--- a/hotspot/src/os_cpu/bsd_x86/vm/orderAccess_bsd_x86.inline.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/os_cpu/bsd_x86/vm/orderAccess_bsd_x86.inline.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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 @@ -28,7 +28,6 @@ #include "runtime/atomic.inline.hpp" #include "runtime/orderAccess.hpp" #include "runtime/os.hpp" -#include "vm_version_x86.hpp" // Implementation of class OrderAccess.
--- a/hotspot/src/os_cpu/bsd_zero/vm/atomic_bsd_zero.inline.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/os_cpu/bsd_zero/vm/atomic_bsd_zero.inline.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved. * Copyright 2007, 2008, 2011 Red Hat, Inc. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * @@ -28,7 +28,6 @@ #include "runtime/atomic.hpp" #include "runtime/os.hpp" -#include "vm_version_zero.hpp" // Implementation of class atomic
--- a/hotspot/src/os_cpu/bsd_zero/vm/orderAccess_bsd_zero.inline.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/os_cpu/bsd_zero/vm/orderAccess_bsd_zero.inline.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved. * Copyright 2007, 2008, 2009 Red Hat, Inc. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * @@ -27,7 +27,6 @@ #define OS_CPU_BSD_ZERO_VM_ORDERACCESS_BSD_ZERO_INLINE_HPP #include "runtime/orderAccess.hpp" -#include "vm_version_zero.hpp" #ifdef ARM
--- a/hotspot/src/os_cpu/linux_ppc/vm/atomic_linux_ppc.inline.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/os_cpu/linux_ppc/vm/atomic_linux_ppc.inline.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,6 +1,6 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * Copyright 2012, 2013 SAP AG. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2014, SAP AG. 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 @@ -28,7 +28,6 @@ #include "runtime/atomic.hpp" #include "runtime/os.hpp" -#include "vm_version_ppc.hpp" #ifndef PPC64 #error "Atomic currently only implemented for PPC64"
--- a/hotspot/src/os_cpu/linux_ppc/vm/orderAccess_linux_ppc.inline.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/os_cpu/linux_ppc/vm/orderAccess_linux_ppc.inline.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,6 +1,6 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * Copyright 2012, 2013 SAP AG. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2014, SAP AG. 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 @@ -27,7 +27,6 @@ #define OS_CPU_LINUX_PPC_VM_ORDERACCESS_LINUX_PPC_INLINE_HPP #include "runtime/orderAccess.hpp" -#include "vm_version_ppc.hpp" #ifndef PPC64 #error "OrderAccess currently only implemented for PPC64"
--- a/hotspot/src/os_cpu/linux_sparc/vm/atomic_linux_sparc.inline.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/os_cpu/linux_sparc/vm/atomic_linux_sparc.inline.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, 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 @@ -27,7 +27,6 @@ #include "runtime/atomic.hpp" #include "runtime/os.hpp" -#include "vm_version_sparc.hpp" // Implementation of class atomic
--- a/hotspot/src/os_cpu/linux_sparc/vm/orderAccess_linux_sparc.inline.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/os_cpu/linux_sparc/vm/orderAccess_linux_sparc.inline.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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 @@ -26,7 +26,6 @@ #define OS_CPU_LINUX_SPARC_VM_ORDERACCESS_LINUX_SPARC_INLINE_HPP #include "runtime/orderAccess.hpp" -#include "vm_version_sparc.hpp" // Implementation of class OrderAccess.
--- a/hotspot/src/os_cpu/linux_sparc/vm/os_linux_sparc.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/os_cpu/linux_sparc/vm/os_linux_sparc.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -118,7 +118,7 @@ *ret_sp = os::Linux::ucontext_get_sp(uc); } if (ret_fp) { - *ret_fp = os::Linux::ucontext_get_fp(uc); + *ret_fp = (intptr_t*)NULL; } } else { // construct empty ExtendedPC for return value checking @@ -136,18 +136,15 @@ frame os::fetch_frame_from_context(void* ucVoid) { intptr_t* sp; - intptr_t* fp; - ExtendedPC epc = fetch_frame_from_context(ucVoid, &sp, &fp); - return frame(sp, fp, epc.pc()); + ExtendedPC epc = fetch_frame_from_context(ucVoid, &sp, NULL); + return frame(sp, frame::unpatchable, epc.pc()); } frame os::get_sender_for_C_frame(frame* fr) { - return frame(fr->sender_sp(), fr->link(), fr->sender_pc()); + return frame(fr->sender_sp(), frame::unpatchable, fr->sender_pc()); } frame os::current_frame() { - fprintf(stderr, "current_frame()"); - intptr_t* sp = StubRoutines::Sparc::flush_callers_register_windows_func()(); frame myframe(sp, frame::unpatchable, CAST_FROM_FN_PTR(address, os::current_frame));
--- a/hotspot/src/os_cpu/linux_x86/vm/atomic_linux_x86.inline.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/os_cpu/linux_x86/vm/atomic_linux_x86.inline.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, 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 @@ -27,7 +27,6 @@ #include "runtime/atomic.hpp" #include "runtime/os.hpp" -#include "vm_version_x86.hpp" // Implementation of class atomic
--- a/hotspot/src/os_cpu/linux_x86/vm/orderAccess_linux_x86.inline.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/os_cpu/linux_x86/vm/orderAccess_linux_x86.inline.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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 @@ -28,7 +28,6 @@ #include "runtime/atomic.inline.hpp" #include "runtime/orderAccess.hpp" #include "runtime/os.hpp" -#include "vm_version_x86.hpp" // Implementation of class OrderAccess.
--- a/hotspot/src/os_cpu/linux_zero/vm/atomic_linux_zero.inline.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/os_cpu/linux_zero/vm/atomic_linux_zero.inline.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved. * Copyright 2007, 2008, 2011 Red Hat, Inc. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * @@ -28,7 +28,6 @@ #include "runtime/atomic.hpp" #include "runtime/os.hpp" -#include "vm_version_zero.hpp" // Implementation of class atomic
--- a/hotspot/src/os_cpu/linux_zero/vm/orderAccess_linux_zero.inline.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/os_cpu/linux_zero/vm/orderAccess_linux_zero.inline.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved. * Copyright 2007, 2008, 2009 Red Hat, Inc. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * @@ -27,7 +27,6 @@ #define OS_CPU_LINUX_ZERO_VM_ORDERACCESS_LINUX_ZERO_INLINE_HPP #include "runtime/orderAccess.hpp" -#include "vm_version_zero.hpp" #ifdef ARM
--- a/hotspot/src/os_cpu/solaris_sparc/vm/atomic_solaris_sparc.inline.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/os_cpu/solaris_sparc/vm/atomic_solaris_sparc.inline.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, 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 @@ -27,7 +27,6 @@ #include "runtime/atomic.hpp" #include "runtime/os.hpp" -#include "vm_version_sparc.hpp" // Implementation of class atomic
--- a/hotspot/src/os_cpu/solaris_sparc/vm/orderAccess_solaris_sparc.inline.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/os_cpu/solaris_sparc/vm/orderAccess_solaris_sparc.inline.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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 @@ -27,7 +27,6 @@ #include "runtime/atomic.inline.hpp" #include "runtime/orderAccess.hpp" -#include "vm_version_sparc.hpp" // Implementation of class OrderAccess.
--- a/hotspot/src/os_cpu/solaris_sparc/vm/os_solaris_sparc.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/os_cpu/solaris_sparc/vm/os_solaris_sparc.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -27,6 +27,7 @@ #include "classfile/classLoader.hpp" #include "classfile/systemDictionary.hpp" #include "classfile/vmSymbols.hpp" +#include "code/codeCache.hpp" #include "code/icBuffer.hpp" #include "code/vtableStubs.hpp" #include "interpreter/interpreter.hpp"
--- a/hotspot/src/os_cpu/solaris_x86/vm/atomic_solaris_x86.inline.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/os_cpu/solaris_x86/vm/atomic_solaris_x86.inline.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, 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 @@ -27,7 +27,6 @@ #include "runtime/atomic.hpp" #include "runtime/os.hpp" -#include "vm_version_x86.hpp" inline void Atomic::store (jbyte store_value, jbyte* dest) { *dest = store_value; } inline void Atomic::store (jshort store_value, jshort* dest) { *dest = store_value; }
--- a/hotspot/src/os_cpu/solaris_x86/vm/orderAccess_solaris_x86.inline.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/os_cpu/solaris_x86/vm/orderAccess_solaris_x86.inline.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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 @@ -28,7 +28,6 @@ #include "runtime/atomic.inline.hpp" #include "runtime/orderAccess.hpp" #include "runtime/os.hpp" -#include "vm_version_x86.hpp" // Implementation of class OrderAccess.
--- a/hotspot/src/os_cpu/windows_x86/vm/atomic_windows_x86.inline.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/os_cpu/windows_x86/vm/atomic_windows_x86.inline.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, 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 @@ -27,7 +27,6 @@ #include "runtime/atomic.hpp" #include "runtime/os.hpp" -#include "vm_version_x86.hpp" // The following alternative implementations are needed because // Windows 95 doesn't support (some of) the corresponding Windows NT
--- a/hotspot/src/os_cpu/windows_x86/vm/orderAccess_windows_x86.inline.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/os_cpu/windows_x86/vm/orderAccess_windows_x86.inline.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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 @@ -28,7 +28,6 @@ #include "runtime/atomic.inline.hpp" #include "runtime/orderAccess.hpp" #include "runtime/os.hpp" -#include "vm_version_x86.hpp" // Implementation of class OrderAccess.
--- a/hotspot/src/share/vm/adlc/main.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/adlc/main.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -213,7 +213,8 @@ AD.addInclude(AD._CPP_file, "memory/allocation.inline.hpp"); AD.addInclude(AD._CPP_file, "asm/macroAssembler.inline.hpp"); AD.addInclude(AD._CPP_file, "code/compiledIC.hpp"); - AD.addInclude(AD._CPP_file, "code/vmreg.hpp"); + AD.addInclude(AD._CPP_file, "code/nativeInst.hpp"); + AD.addInclude(AD._CPP_file, "code/vmreg.inline.hpp"); AD.addInclude(AD._CPP_file, "gc_interface/collectedHeap.inline.hpp"); AD.addInclude(AD._CPP_file, "oops/compiledICHolder.hpp"); AD.addInclude(AD._CPP_file, "oops/markOop.hpp"); @@ -230,23 +231,8 @@ AD.addInclude(AD._CPP_file, "runtime/sharedRuntime.hpp"); AD.addInclude(AD._CPP_file, "runtime/stubRoutines.hpp"); AD.addInclude(AD._CPP_file, "utilities/growableArray.hpp"); -#ifdef TARGET_ARCH_x86 - AD.addInclude(AD._CPP_file, "nativeInst_x86.hpp"); - AD.addInclude(AD._CPP_file, "vmreg_x86.inline.hpp"); -#endif -#ifdef TARGET_ARCH_sparc - AD.addInclude(AD._CPP_file, "nativeInst_sparc.hpp"); - AD.addInclude(AD._CPP_file, "vmreg_sparc.inline.hpp"); -#endif -#ifdef TARGET_ARCH_arm - AD.addInclude(AD._CPP_file, "nativeInst_arm.hpp"); - AD.addInclude(AD._CPP_file, "vmreg_arm.inline.hpp"); -#endif -#ifdef TARGET_ARCH_ppc - AD.addInclude(AD._CPP_file, "nativeInst_ppc.hpp"); - AD.addInclude(AD._CPP_file, "vmreg_ppc.inline.hpp"); -#endif AD.addInclude(AD._HPP_file, "memory/allocation.hpp"); + AD.addInclude(AD._HPP_file, "code/nativeInst.hpp"); AD.addInclude(AD._HPP_file, "opto/machnode.hpp"); AD.addInclude(AD._HPP_file, "opto/node.hpp"); AD.addInclude(AD._HPP_file, "opto/regalloc.hpp");
--- a/hotspot/src/share/vm/asm/assembler.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/asm/assembler.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -26,34 +26,15 @@ #define SHARE_VM_ASM_ASSEMBLER_HPP #include "asm/codeBuffer.hpp" +#include "asm/register.hpp" #include "code/oopRecorder.hpp" #include "code/relocInfo.hpp" #include "memory/allocation.hpp" +#include "runtime/vm_version.hpp" #include "utilities/debug.hpp" #include "utilities/growableArray.hpp" #include "utilities/top.hpp" -#ifdef TARGET_ARCH_x86 -# include "register_x86.hpp" -# include "vm_version_x86.hpp" -#endif -#ifdef TARGET_ARCH_sparc -# include "register_sparc.hpp" -# include "vm_version_sparc.hpp" -#endif -#ifdef TARGET_ARCH_zero -# include "register_zero.hpp" -# include "vm_version_zero.hpp" -#endif -#ifdef TARGET_ARCH_arm -# include "register_arm.hpp" -# include "vm_version_arm.hpp" -#endif -#ifdef TARGET_ARCH_ppc -# include "register_ppc.hpp" -# include "vm_version_ppc.hpp" -#endif - // This file contains platform-independent assembler declarations. class MacroAssembler;
--- a/hotspot/src/share/vm/asm/codeBuffer.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/asm/codeBuffer.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -28,6 +28,7 @@ #include "memory/gcLocker.hpp" #include "oops/methodData.hpp" #include "oops/oop.inline.hpp" +#include "runtime/icache.hpp" #include "utilities/copy.hpp" #include "utilities/xmlstream.hpp"
--- a/hotspot/src/share/vm/c1/c1_CodeStubs.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/c1/c1_CodeStubs.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, 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,6 +30,7 @@ #include "c1/c1_Instruction.hpp" #include "c1/c1_LIR.hpp" #include "c1/c1_Runtime1.hpp" +#include "code/nativeInst.hpp" #include "utilities/array.hpp" #include "utilities/macros.hpp"
--- a/hotspot/src/share/vm/c1/c1_Defs.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/c1/c1_Defs.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, 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 @@ -26,21 +26,7 @@ #define SHARE_VM_C1_C1_DEFS_HPP #include "utilities/globalDefinitions.hpp" -#ifdef TARGET_ARCH_x86 -# include "register_x86.hpp" -#endif -#ifdef TARGET_ARCH_sparc -# include "register_sparc.hpp" -#endif -#ifdef TARGET_ARCH_zero -# include "register_zero.hpp" -#endif -#ifdef TARGET_ARCH_arm -# include "register_arm.hpp" -#endif -#ifdef TARGET_ARCH_ppc -# include "register_ppc.hpp" -#endif +#include "asm/register.hpp" // set frame size and return address offset to these values in blobs // (if the compiled frame uses ebp as link pointer on IA; otherwise,
--- a/hotspot/src/share/vm/c1/c1_FrameMap.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/c1/c1_FrameMap.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, 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 @@ -25,24 +25,8 @@ #include "precompiled.hpp" #include "c1/c1_FrameMap.hpp" #include "c1/c1_LIR.hpp" +#include "code/vmreg.inline.hpp" #include "runtime/sharedRuntime.hpp" -#ifdef TARGET_ARCH_x86 -# include "vmreg_x86.inline.hpp" -#endif -#ifdef TARGET_ARCH_sparc -# include "vmreg_sparc.inline.hpp" -#endif -#ifdef TARGET_ARCH_zero -# include "vmreg_zero.inline.hpp" -#endif -#ifdef TARGET_ARCH_arm -# include "vmreg_arm.inline.hpp" -#endif -#ifdef TARGET_ARCH_ppc -# include "vmreg_ppc.inline.hpp" -#endif - - //-----------------------------------------------------
--- a/hotspot/src/share/vm/c1/c1_GraphBuilder.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/c1/c1_GraphBuilder.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, 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 @@ -36,6 +36,7 @@ #include "interpreter/bytecode.hpp" #include "runtime/sharedRuntime.hpp" #include "runtime/compilationPolicy.hpp" +#include "runtime/vm_version.hpp" #include "utilities/bitMap.inline.hpp" class BlockListBuilder VALUE_OBJ_CLASS_SPEC {
--- a/hotspot/src/share/vm/c1/c1_LIRAssembler.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/c1/c1_LIRAssembler.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, 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,27 +30,6 @@ #include "c1/c1_MacroAssembler.hpp" #include "c1/c1_ValueStack.hpp" #include "ci/ciInstance.hpp" -#ifdef TARGET_ARCH_x86 -# include "nativeInst_x86.hpp" -# include "vmreg_x86.inline.hpp" -#endif -#ifdef TARGET_ARCH_sparc -# include "nativeInst_sparc.hpp" -# include "vmreg_sparc.inline.hpp" -#endif -#ifdef TARGET_ARCH_zero -# include "nativeInst_zero.hpp" -# include "vmreg_zero.inline.hpp" -#endif -#ifdef TARGET_ARCH_arm -# include "nativeInst_arm.hpp" -# include "vmreg_arm.inline.hpp" -#endif -#ifdef TARGET_ARCH_ppc -# include "nativeInst_ppc.hpp" -# include "vmreg_ppc.inline.hpp" -#endif - void LIR_Assembler::patching_epilog(PatchingStub* patch, LIR_PatchCode patch_code, Register obj, CodeEmitInfo* info) { // we must have enough patching space so that call can be inserted
--- a/hotspot/src/share/vm/c1/c1_LIRGenerator.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/c1/c1_LIRGenerator.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2014, 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 @@ -34,6 +34,7 @@ #include "ci/ciObjArray.hpp" #include "runtime/sharedRuntime.hpp" #include "runtime/stubRoutines.hpp" +#include "runtime/vm_version.hpp" #include "utilities/bitMap.inline.hpp" #include "utilities/macros.hpp" #if INCLUDE_ALL_GCS
--- a/hotspot/src/share/vm/c1/c1_LinearScan.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/c1/c1_LinearScan.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2014, 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 @@ -31,23 +31,8 @@ #include "c1/c1_LIRGenerator.hpp" #include "c1/c1_LinearScan.hpp" #include "c1/c1_ValueStack.hpp" +#include "code/vmreg.inline.hpp" #include "utilities/bitMap.inline.hpp" -#ifdef TARGET_ARCH_x86 -# include "vmreg_x86.inline.hpp" -#endif -#ifdef TARGET_ARCH_sparc -# include "vmreg_sparc.inline.hpp" -#endif -#ifdef TARGET_ARCH_zero -# include "vmreg_zero.inline.hpp" -#endif -#ifdef TARGET_ARCH_arm -# include "vmreg_arm.inline.hpp" -#endif -#ifdef TARGET_ARCH_ppc -# include "vmreg_ppc.inline.hpp" -#endif - #ifndef PRODUCT
--- a/hotspot/src/share/vm/c1/c1_Runtime1.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/c1/c1_Runtime1.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -56,6 +56,7 @@ #include "runtime/threadCritical.hpp" #include "runtime/vframe.hpp" #include "runtime/vframeArray.hpp" +#include "runtime/vm_version.hpp" #include "utilities/copy.hpp" #include "utilities/events.hpp"
--- a/hotspot/src/share/vm/classfile/bytecodeAssembler.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/classfile/bytecodeAssembler.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2014, 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 @@ -28,22 +28,7 @@ #include "interpreter/bytecodes.hpp" #include "memory/oopFactory.hpp" #include "oops/constantPool.hpp" - -#ifdef TARGET_ARCH_x86 -# include "bytes_x86.hpp" -#endif -#ifdef TARGET_ARCH_sparc -# include "bytes_sparc.hpp" -#endif -#ifdef TARGET_ARCH_zero -# include "bytes_zero.hpp" -#endif -#ifdef TARGET_ARCH_arm -# include "bytes_arm.hpp" -#endif -#ifdef TARGET_ARCH_ppc -# include "bytes_ppc.hpp" -#endif +#include "utilities/bytes.hpp" u2 BytecodeConstantPool::find_or_add(BytecodeCPEntry const& bcpe) { u2 index;
--- a/hotspot/src/share/vm/classfile/classFileStream.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/classfile/classFileStream.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -25,22 +25,8 @@ #ifndef SHARE_VM_CLASSFILE_CLASSFILESTREAM_HPP #define SHARE_VM_CLASSFILE_CLASSFILESTREAM_HPP +#include "utilities/bytes.hpp" #include "utilities/top.hpp" -#ifdef TARGET_ARCH_x86 -# include "bytes_x86.hpp" -#endif -#ifdef TARGET_ARCH_sparc -# include "bytes_sparc.hpp" -#endif -#ifdef TARGET_ARCH_zero -# include "bytes_zero.hpp" -#endif -#ifdef TARGET_ARCH_arm -# include "bytes_arm.hpp" -#endif -#ifdef TARGET_ARCH_ppc -# include "bytes_ppc.hpp" -#endif // Input stream for reading .class file //
--- a/hotspot/src/share/vm/classfile/javaClasses.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/classfile/javaClasses.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -1639,9 +1639,9 @@ if (fr.is_first_frame()) break; address pc = fr.pc(); if (fr.is_interpreted_frame()) { - intptr_t bcx = fr.interpreter_frame_bcx(); + address bcp = fr.interpreter_frame_bcp(); method = fr.interpreter_frame_method(); - bci = fr.is_bci(bcx) ? bcx : method->bci_from((address)bcx); + bci = method->bci_from(bcp); fr = fr.sender(&map); } else { CodeBlob* cb = fr.cb();
--- a/hotspot/src/share/vm/classfile/stackMapTable.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/classfile/stackMapTable.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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,22 +30,8 @@ #include "memory/allocation.hpp" #include "oops/constantPool.hpp" #include "oops/method.hpp" +#include "utilities/bytes.hpp" #include "utilities/globalDefinitions.hpp" -#ifdef TARGET_ARCH_x86 -# include "bytes_x86.hpp" -#endif -#ifdef TARGET_ARCH_sparc -# include "bytes_sparc.hpp" -#endif -#ifdef TARGET_ARCH_zero -# include "bytes_zero.hpp" -#endif -#ifdef TARGET_ARCH_arm -# include "bytes_arm.hpp" -#endif -#ifdef TARGET_ARCH_ppc -# include "bytes_ppc.hpp" -#endif class StackMapReader;
--- a/hotspot/src/share/vm/classfile/verifier.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/classfile/verifier.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -45,21 +45,7 @@ #include "runtime/javaCalls.hpp" #include "runtime/orderAccess.inline.hpp" #include "runtime/os.hpp" -#ifdef TARGET_ARCH_x86 -# include "bytes_x86.hpp" -#endif -#ifdef TARGET_ARCH_sparc -# include "bytes_sparc.hpp" -#endif -#ifdef TARGET_ARCH_zero -# include "bytes_zero.hpp" -#endif -#ifdef TARGET_ARCH_arm -# include "bytes_arm.hpp" -#endif -#ifdef TARGET_ARCH_ppc -# include "bytes_ppc.hpp" -#endif +#include "utilities/bytes.hpp" #define NOFAILOVER_MAJOR_VERSION 51 #define NONZERO_PADDING_BYTES_IN_SWITCH_MAJOR_VERSION 51 @@ -439,7 +425,7 @@ if (_bci != -1 && method != NULL) { streamIndentor si(ss); const char* bytecode_name = "<invalid>"; - if (method->validate_bci_from_bcx(_bci) != -1) { + if (method->validate_bci(_bci) != -1) { Bytecodes::Code code = Bytecodes::code_or_bp_at(method->bcp_from(_bci)); if (Bytecodes::is_defined(code)) { bytecode_name = Bytecodes::name(code);
--- a/hotspot/src/share/vm/code/codeBlob.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/code/codeBlob.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -39,21 +39,6 @@ #include "runtime/sharedRuntime.hpp" #include "runtime/vframe.hpp" #include "services/memoryService.hpp" -#ifdef TARGET_ARCH_x86 -# include "nativeInst_x86.hpp" -#endif -#ifdef TARGET_ARCH_sparc -# include "nativeInst_sparc.hpp" -#endif -#ifdef TARGET_ARCH_zero -# include "nativeInst_zero.hpp" -#endif -#ifdef TARGET_ARCH_arm -# include "nativeInst_arm.hpp" -#endif -#ifdef TARGET_ARCH_ppc -# include "nativeInst_ppc.hpp" -#endif #ifdef COMPILER1 #include "c1/c1_Runtime1.hpp" #endif
--- a/hotspot/src/share/vm/code/compiledIC.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/code/compiledIC.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -25,23 +25,9 @@ #ifndef SHARE_VM_CODE_COMPILEDIC_HPP #define SHARE_VM_CODE_COMPILEDIC_HPP +#include "code/nativeInst.hpp" #include "interpreter/linkResolver.hpp" #include "oops/compiledICHolder.hpp" -#ifdef TARGET_ARCH_x86 -# include "nativeInst_x86.hpp" -#endif -#ifdef TARGET_ARCH_sparc -# include "nativeInst_sparc.hpp" -#endif -#ifdef TARGET_ARCH_zero -# include "nativeInst_zero.hpp" -#endif -#ifdef TARGET_ARCH_arm -# include "nativeInst_arm.hpp" -#endif -#ifdef TARGET_ARCH_ppc -# include "nativeInst_ppc.hpp" -#endif //----------------------------------------------------------------------------- // The CompiledIC represents a compiled inline cache.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hotspot/src/share/vm/code/nativeInst.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2014, 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. + * + */ + +#ifndef SHARE_VM_CODE_NATIVEINST_HPP +#define SHARE_VM_CODE_NATIVEINST_HPP + +#ifdef TARGET_ARCH_x86 +# include "nativeInst_x86.hpp" +#endif +#ifdef TARGET_ARCH_sparc +# include "nativeInst_sparc.hpp" +#endif +#ifdef TARGET_ARCH_zero +# include "nativeInst_zero.hpp" +#endif +#ifdef TARGET_ARCH_arm +# include "nativeInst_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "nativeInst_ppc.hpp" +#endif + +#endif // SHARE_VM_CODE_NATIVEINST_HPP
--- a/hotspot/src/share/vm/code/vmreg.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/code/vmreg.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, 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 @@ -25,34 +25,13 @@ #ifndef SHARE_VM_CODE_VMREG_HPP #define SHARE_VM_CODE_VMREG_HPP +#include "asm/register.hpp" #include "memory/allocation.hpp" #include "utilities/globalDefinitions.hpp" -#include "asm/register.hpp" #ifdef COMPILER2 #include "opto/adlcVMDeps.hpp" #include "utilities/ostream.hpp" -#ifdef TARGET_ARCH_MODEL_x86_32 -# include "adfiles/adGlobals_x86_32.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_x86_64 -# include "adfiles/adGlobals_x86_64.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_sparc -# include "adfiles/adGlobals_sparc.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_zero -# include "adfiles/adGlobals_zero.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_arm -# include "adfiles/adGlobals_arm.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_ppc_32 -# include "adfiles/adGlobals_ppc_32.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_ppc_64 -# include "adfiles/adGlobals_ppc_64.hpp" -#endif #endif //------------------------------VMReg------------------------------------------ @@ -107,7 +86,7 @@ // also a register you could use in the assembler. On machines with // 64bit registers only one half of the VMReg (and OptoReg) is considered // concrete. - bool is_concrete(); + // bool is_concrete(); // VMRegs are 4 bytes wide on all platforms static const int stack_slot_size;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hotspot/src/share/vm/code/vmreg.inline.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2014, 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. + * + */ + +#ifndef SHARE_VM_CODE_VMREG_INLINE_HPP +#define SHARE_VM_CODE_VMREG_INLINE_HPP + +#include "asm/register.hpp" +#include "code/vmreg.hpp" +#ifdef TARGET_ARCH_x86 +# include "vmreg_x86.inline.hpp" +#endif +#ifdef TARGET_ARCH_sparc +# include "vmreg_sparc.inline.hpp" +#endif +#ifdef TARGET_ARCH_zero +# include "vmreg_zero.inline.hpp" +#endif +#ifdef TARGET_ARCH_arm +# include "vmreg_arm.inline.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "vmreg_ppc.inline.hpp" +#endif + +#endif // SHARE_VM_CODE_VMREG_INLINE_HPP
--- a/hotspot/src/share/vm/compiler/compileLog.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/compiler/compileLog.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -24,6 +24,7 @@ #include "precompiled.hpp" #include "ci/ciMethod.hpp" +#include "code/codeCache.hpp" #include "compiler/compileLog.hpp" #include "memory/allocation.inline.hpp" #include "oops/method.hpp"
--- a/hotspot/src/share/vm/compiler/oopMap.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/compiler/oopMap.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -36,6 +36,9 @@ #ifdef COMPILER1 #include "c1/c1_Defs.hpp" #endif +#ifdef COMPILER2 +#include "opto/optoreg.hpp" +#endif // OopMapStream
--- a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -1904,12 +1904,12 @@ assert(size > new_size, "Split from a smaller block?"); assert(is_aligned(chunk), "alignment problem"); assert(size == adjustObjectSize(size), "alignment problem"); - size_t rem_size = size - new_size; - assert(rem_size == adjustObjectSize(rem_size), "alignment problem"); - assert(rem_size >= MinChunkSize, "Free chunk smaller than minimum"); + size_t rem_sz = size - new_size; + assert(rem_sz == adjustObjectSize(rem_sz), "alignment problem"); + assert(rem_sz >= MinChunkSize, "Free chunk smaller than minimum"); FreeChunk* ffc = (FreeChunk*)((HeapWord*)chunk + new_size); assert(is_aligned(ffc), "alignment problem"); - ffc->set_size(rem_size); + ffc->set_size(rem_sz); ffc->link_next(NULL); ffc->link_prev(NULL); // Mark as a free block for other (parallel) GC threads. // Above must occur before BOT is updated below. @@ -1917,18 +1917,18 @@ OrderAccess::storestore(); assert(chunk->is_free() && ffc->is_free(), "Error"); _bt.split_block((HeapWord*)chunk, chunk->size(), new_size); - if (rem_size < SmallForDictionary) { + if (rem_sz < SmallForDictionary) { bool is_par = (SharedHeap::heap()->n_par_threads() > 0); - if (is_par) _indexedFreeListParLocks[rem_size]->lock(); + if (is_par) _indexedFreeListParLocks[rem_sz]->lock(); assert(!is_par || (SharedHeap::heap()->n_par_threads() == SharedHeap::heap()->workers()->active_workers()), "Mismatch"); returnChunkToFreeList(ffc); - split(size, rem_size); - if (is_par) _indexedFreeListParLocks[rem_size]->unlock(); + split(size, rem_sz); + if (is_par) _indexedFreeListParLocks[rem_sz]->unlock(); } else { returnChunkToDictionary(ffc); - split(size ,rem_size); + split(size, rem_sz); } chunk->set_size(new_size); return chunk;
--- a/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -891,6 +891,10 @@ guarantee(!g1h->mark_in_progress(), "invariant"); } +bool ConcurrentMark::nextMarkBitmapIsClear() { + return _nextMarkBitMap->getNextMarkedWordAddress(_heap_start, _heap_end) == _heap_end; +} + class NoteStartOfMarkHRClosure: public HeapRegionClosure { public: bool doHeapRegion(HeapRegion* r) { @@ -3358,7 +3362,8 @@ // abandon current marking iteration due to a Full GC void ConcurrentMark::abort() { - // Clear all marks to force marking thread to do nothing + // Clear all marks in the next bitmap for the next marking cycle. This will allow us to skip the next + // concurrent bitmap clearing. _nextMarkBitMap->clearAll(); // Note we cannot clear the previous marking bitmap here
--- a/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -736,6 +736,9 @@ // Clear the next marking bitmap (will be called concurrently). void clearNextBitmap(); + // Return whether the next mark bitmap has no marks set. + bool nextMarkBitmapIsClear(); + // These two do the work that needs to be done before and after the // initial root checkpoint. Since this checkpoint can be done at two // different points (i.e. an explicit pause or piggy-backed on a
--- a/hotspot/src/share/vm/gc_implementation/g1/concurrentMarkThread.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/gc_implementation/g1/concurrentMarkThread.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -277,9 +277,13 @@ // We now want to allow clearing of the marking bitmap to be // suspended by a collection pause. - { + // We may have aborted just before the remark. Do not bother clearing the + // bitmap then, as it has been done during mark abort. + if (!cm()->has_aborted()) { SuspendibleThreadSetJoiner sts; _cm->clearNextBitmap(); + } else { + assert(!G1VerifyBitmaps || _cm->nextMarkBitmapIsClear(), "Next mark bitmap must be clear"); } }
--- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -2950,10 +2950,17 @@ } } -CompactibleSpace* G1CollectedHeap::first_compactible_space() { - return n_regions() > 0 ? region_at(0) : NULL; -} - +HeapRegion* G1CollectedHeap::next_compaction_region(const HeapRegion* from) const { + // We're not using an iterator given that it will wrap around when + // it reaches the last region and this is not what we want here. + for (uint index = from->hrs_index() + 1; index < n_regions(); index++) { + HeapRegion* hr = region_at(index); + if (!hr->isHumongous()) { + return hr; + } + } + return NULL; +} Space* G1CollectedHeap::space_containing(const void* addr) const { return heap_region_containing(addr);
--- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1158,19 +1158,19 @@ } // The total number of regions in the heap. - uint n_regions() { return _hrs.length(); } + uint n_regions() const { return _hrs.length(); } // The max number of regions in the heap. - uint max_regions() { return _hrs.max_length(); } + uint max_regions() const { return _hrs.max_length(); } // The number of regions that are completely free. - uint free_regions() { return _free_list.length(); } + uint free_regions() const { return _free_list.length(); } // The number of regions that are not completely free. - uint used_regions() { return n_regions() - free_regions(); } + uint used_regions() const { return n_regions() - free_regions(); } // The number of regions available for "regular" expansion. - uint expansion_regions() { return _expansion_regions; } + uint expansion_regions() const { return _expansion_regions; } // Factory method for HeapRegion instances. It will return NULL if // the allocation fails. @@ -1392,8 +1392,7 @@ // As above but starting from region r void collection_set_iterate_from(HeapRegion* r, HeapRegionClosure *blk); - // Returns the first (lowest address) compactible space in the heap. - virtual CompactibleSpace* first_compactible_space(); + HeapRegion* next_compaction_region(const HeapRegion* from) const; // A CollectedHeap will contain some number of spaces. This finds the // space containing a given address, or else returns NULL.
--- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -1047,7 +1047,7 @@ bool new_in_marking_window = _in_marking_window; bool new_in_marking_window_im = false; - if (during_initial_mark_pause()) { + if (last_pause_included_initial_mark) { new_in_marking_window = true; new_in_marking_window_im = true; }
--- a/hotspot/src/share/vm/gc_implementation/g1/g1MarkSweep.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/gc_implementation/g1/g1MarkSweep.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -76,7 +76,6 @@ // When collecting the permanent generation Method*s may be moving, // so we either have to flush all bcp data or convert it into bci. CodeCache::gc_prologue(); - Threads::gc_prologue(); bool marked_for_unloading = false; @@ -106,7 +105,6 @@ // Universe::set_heap_capacity_at_last_gc(Universe::heap()->capacity()); // Universe::set_heap_used_at_last_gc(Universe::heap()->used()); - Threads::gc_epilogue(); CodeCache::gc_epilogue(); JvmtiExport::gc_epilogue(); @@ -201,6 +199,23 @@ CompactPoint _cp; HeapRegionSetCount _humongous_regions_removed; + bool is_cp_initialized() const { + return _cp.space != NULL; + } + + void prepare_for_compaction(HeapRegion* hr, HeapWord* end) { + // If this is the first live region that we came across which we can compact, + // initialize the CompactPoint. + if (!is_cp_initialized()) { + _cp.space = hr; + _cp.threshold = hr->initialize_threshold(); + } + hr->prepare_for_compaction(&_cp); + // Also clear the part of the card table that will be unused after + // compaction. + _mrbs->clear(MemRegion(hr->compaction_top(), end)); + } + void free_humongous_region(HeapRegion* hr) { HeapWord* end = hr->end(); FreeRegionList dummy_free_list("Dummy Free List for G1MarkSweep"); @@ -212,18 +227,15 @@ _humongous_regions_removed.increment(1u, hr->capacity()); _g1h->free_humongous_region(hr, &dummy_free_list, false /* par */); - hr->prepare_for_compaction(&_cp); - // Also clear the part of the card table that will be unused after - // compaction. - _mrbs->clear(MemRegion(hr->compaction_top(), end)); + prepare_for_compaction(hr, end); dummy_free_list.remove_all(); } public: - G1PrepareCompactClosure(CompactibleSpace* cs) + G1PrepareCompactClosure() : _g1h(G1CollectedHeap::heap()), _mrbs(_g1h->g1_barrier_set()), - _cp(NULL, cs, cs->initialize_threshold()), + _cp(NULL), _humongous_regions_removed() { } void update_sets() { @@ -246,10 +258,7 @@ assert(hr->continuesHumongous(), "Invalid humongous."); } } else { - hr->prepare_for_compaction(&_cp); - // Also clear the part of the card table that will be unused after - // compaction. - _mrbs->clear(MemRegion(hr->compaction_top(), hr->end())); + prepare_for_compaction(hr, hr->end()); } return false; } @@ -267,14 +276,7 @@ GCTraceTime tm("phase 2", G1Log::fine() && Verbose, true, gc_timer(), gc_tracer()->gc_id()); GenMarkSweep::trace("2"); - // find the first region - HeapRegion* r = g1h->region_at(0); - CompactibleSpace* sp = r; - if (r->isHumongous() && oop(r->bottom())->is_gc_marked()) { - sp = r->next_compaction_space(); - } - - G1PrepareCompactClosure blk(sp); + G1PrepareCompactClosure blk; g1h->heap_region_iterate(&blk); blk.update_sets(); }
--- a/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -381,18 +381,7 @@ } CompactibleSpace* HeapRegion::next_compaction_space() const { - // We're not using an iterator given that it will wrap around when - // it reaches the last region and this is not what we want here. - G1CollectedHeap* g1h = G1CollectedHeap::heap(); - uint index = hrs_index() + 1; - while (index < g1h->n_regions()) { - HeapRegion* hr = g1h->region_at(index); - if (!hr->isHumongous()) { - return hr; - } - index += 1; - } - return NULL; + return G1CollectedHeap::heap()->next_compaction_region(this); } void HeapRegion::note_self_forwarding_removal_start(bool during_initial_mark,
--- a/hotspot/src/share/vm/gc_implementation/g1/heapRegionSet.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/gc_implementation/g1/heapRegionSet.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -119,7 +119,7 @@ public: const char* name() { return _name; } - uint length() { return _count.length(); } + uint length() const { return _count.length(); } bool is_empty() { return _count.length() == 0; }
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psMarkSweep.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psMarkSweep.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -180,7 +180,6 @@ size_policy->major_collection_begin(); CodeCache::gc_prologue(); - Threads::gc_prologue(); BiasedLocking::preserve_marks(); // Capture heap size before collection for printing. @@ -251,7 +250,6 @@ MetaspaceAux::verify_metrics(); BiasedLocking::restore_marks(); - Threads::gc_epilogue(); CodeCache::gc_epilogue(); JvmtiExport::gc_epilogue();
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -1066,7 +1066,6 @@ ClassLoaderDataGraph::purge(); MetaspaceAux::verify_metrics(); - Threads::gc_epilogue(); CodeCache::gc_epilogue(); JvmtiExport::gc_epilogue(); @@ -2068,7 +2067,6 @@ size_policy->major_collection_begin(); CodeCache::gc_prologue(); - Threads::gc_prologue(); COMPILER2_PRESENT(DerivedPointerTable::clear());
--- a/hotspot/src/share/vm/interpreter/abstractInterpreter.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/interpreter/abstractInterpreter.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -25,29 +25,12 @@ #ifndef SHARE_VM_INTERPRETER_ABSTRACTINTERPRETER_HPP #define SHARE_VM_INTERPRETER_ABSTRACTINTERPRETER_HPP +#include "asm/macroAssembler.hpp" #include "code/stubs.hpp" #include "interpreter/bytecodes.hpp" #include "runtime/thread.inline.hpp" #include "runtime/vmThread.hpp" #include "utilities/top.hpp" -#ifdef TARGET_ARCH_x86 -# include "interp_masm_x86.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_sparc -# include "interp_masm_sparc.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_zero -# include "interp_masm_zero.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_arm -# include "interp_masm_arm.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_ppc_32 -# include "interp_masm_ppc_32.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_ppc_64 -# include "interp_masm_ppc_64.hpp" -#endif // This file contains the platform-independent parts // of the abstract interpreter and the abstract interpreter generator. @@ -75,6 +58,8 @@ //------------------------------------------------------------------------------------------------------------------------ // The C++ interface to the bytecode interpreter(s). +class InterpreterMacroAssembler; + class AbstractInterpreter: AllStatic { friend class VMStructs; friend class Interpreter;
--- a/hotspot/src/share/vm/interpreter/bytecode.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/interpreter/bytecode.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -28,21 +28,7 @@ #include "interpreter/bytecodes.hpp" #include "memory/allocation.hpp" #include "oops/method.hpp" -#ifdef TARGET_ARCH_x86 -# include "bytes_x86.hpp" -#endif -#ifdef TARGET_ARCH_sparc -# include "bytes_sparc.hpp" -#endif -#ifdef TARGET_ARCH_zero -# include "bytes_zero.hpp" -#endif -#ifdef TARGET_ARCH_arm -# include "bytes_arm.hpp" -#endif -#ifdef TARGET_ARCH_ppc -# include "bytes_ppc.hpp" -#endif +#include "utilities/bytes.hpp" class ciBytecodeStream;
--- a/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2014, 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 @@ -32,21 +32,6 @@ #include "runtime/frame.hpp" #include "runtime/globals.hpp" #include "utilities/globalDefinitions.hpp" -#ifdef TARGET_ARCH_x86 -# include "bytes_x86.hpp" -#endif -#ifdef TARGET_ARCH_sparc -# include "bytes_sparc.hpp" -#endif -#ifdef TARGET_ARCH_zero -# include "bytes_zero.hpp" -#endif -#ifdef TARGET_ARCH_arm -# include "bytes_arm.hpp" -#endif -#ifdef TARGET_ARCH_ppc -# include "bytes_ppc.hpp" -#endif #ifdef CC_INTERP @@ -56,6 +41,8 @@ // CVM definitions find hotspot equivalents... +class InterpreterMacroAssembler; + union VMJavaVal64 { jlong l; jdouble d;
--- a/hotspot/src/share/vm/interpreter/bytecodeStream.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/interpreter/bytecodeStream.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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,7 @@ #include "memory/allocation.hpp" #include "oops/method.hpp" #include "runtime/handles.inline.hpp" -#ifdef TARGET_ARCH_x86 -# include "bytes_x86.hpp" -#endif -#ifdef TARGET_ARCH_sparc -# include "bytes_sparc.hpp" -#endif -#ifdef TARGET_ARCH_zero -# include "bytes_zero.hpp" -#endif -#ifdef TARGET_ARCH_arm -# include "bytes_arm.hpp" -#endif -#ifdef TARGET_ARCH_ppc -# include "bytes_ppc.hpp" -#endif +#include "utilities/bytes.hpp" // A BytecodeStream is used for fast iteration over the bytecodes // of a Method*.
--- a/hotspot/src/share/vm/interpreter/bytecodes.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/interpreter/bytecodes.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -26,21 +26,7 @@ #include "interpreter/bytecodes.hpp" #include "memory/resourceArea.hpp" #include "oops/method.hpp" -#ifdef TARGET_ARCH_x86 -# include "bytes_x86.hpp" -#endif -#ifdef TARGET_ARCH_sparc -# include "bytes_sparc.hpp" -#endif -#ifdef TARGET_ARCH_zero -# include "bytes_zero.hpp" -#endif -#ifdef TARGET_ARCH_arm -# include "bytes_arm.hpp" -#endif -#ifdef TARGET_ARCH_ppc -# include "bytes_ppc.hpp" -#endif +#include "utilities/bytes.hpp" #if defined(WIN32) && (defined(_MSC_VER) && (_MSC_VER < 1600))
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hotspot/src/share/vm/interpreter/interp_masm.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2014, 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. + * + */ + +#ifndef SHARE_VM_INTERPRETER_INTERP_MASM_HPP +#define SHARE_VM_INTERPRETER_INTERP_MASM_HPP + +#include "asm/macroAssembler.hpp" + +#ifdef TARGET_ARCH_x86 +# include "interp_masm_x86.hpp" +#endif +#ifdef TARGET_ARCH_MODEL_sparc +# include "interp_masm_sparc.hpp" +#endif +#ifdef TARGET_ARCH_MODEL_zero +# include "interp_masm_zero.hpp" +#endif +#ifdef TARGET_ARCH_MODEL_arm +# include "interp_masm_arm.hpp" +#endif +#ifdef TARGET_ARCH_MODEL_ppc_32 +# include "interp_masm_ppc_32.hpp" +#endif +#ifdef TARGET_ARCH_MODEL_ppc_64 +# include "interp_masm_ppc_64.hpp" +#endif + +#endif // SHARE_VM_INTERPRETER_INTERP_MASM_HPP
--- a/hotspot/src/share/vm/interpreter/interpreter.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/interpreter/interpreter.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -30,6 +30,7 @@ #include "interpreter/bytecodeInterpreter.hpp" #include "interpreter/interpreter.hpp" #include "interpreter/interpreterRuntime.hpp" +#include "interpreter/interp_masm.hpp" #include "interpreter/templateTable.hpp" #include "memory/allocation.inline.hpp" #include "memory/resourceArea.hpp" @@ -80,9 +81,35 @@ } } +CodeletMark::CodeletMark(InterpreterMacroAssembler*& masm, + const char* description, + Bytecodes::Code bytecode) : + _clet((InterpreterCodelet*)AbstractInterpreter::code()->request(codelet_size())), + _cb(_clet->code_begin(), _clet->code_size()) { + // Request all space (add some slack for Codelet data). + assert(_clet != NULL, "we checked not enough space already"); + + // Initialize Codelet attributes. + _clet->initialize(description, bytecode); + // Create assembler for code generation. + masm = new InterpreterMacroAssembler(&_cb); + _masm = &masm; +} + +CodeletMark::~CodeletMark() { + // Align so printing shows nop's instead of random code at the end (Codelets are aligned). + (*_masm)->align(wordSize); + // Make sure all code is in code buffer. + (*_masm)->flush(); + + // Commit Codelet. + AbstractInterpreter::code()->commit((*_masm)->code()->pure_insts_size(), (*_masm)->code()->strings()); + // Make sure nobody can use _masm outside a CodeletMark lifespan. + *_masm = NULL; +} //------------------------------------------------------------------------------------------------------------------------ -// Implementation of platform independent aspects of Interpreter +// Implementation of platform independent aspects of Interpreter void AbstractInterpreter::initialize() { if (_code != NULL) return;
--- a/hotspot/src/share/vm/interpreter/interpreter.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/interpreter/interpreter.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -37,6 +37,8 @@ // This file contains the platform-independent parts // of the interpreter and the interpreter generator. +class InterpreterMacroAssembler; + //------------------------------------------------------------------------------------------------------------------------ // An InterpreterCodelet is a piece of interpreter code. All // interpreter code is generated into little codelets which @@ -99,42 +101,17 @@ int codelet_size = AbstractInterpreter::code()->available_space() - 2*K; // Guarantee there's a little bit of code space left. - guarantee (codelet_size > 0 && (size_t)codelet_size > 2*K, - "not enough space for interpreter generation"); + guarantee(codelet_size > 0 && (size_t)codelet_size > 2*K, + "not enough space for interpreter generation"); return codelet_size; } public: - CodeletMark( - InterpreterMacroAssembler*& masm, - const char* description, - Bytecodes::Code bytecode = Bytecodes::_illegal): - _clet((InterpreterCodelet*)AbstractInterpreter::code()->request(codelet_size())), - _cb(_clet->code_begin(), _clet->code_size()) - - { // request all space (add some slack for Codelet data) - assert (_clet != NULL, "we checked not enough space already"); - - // initialize Codelet attributes - _clet->initialize(description, bytecode); - // create assembler for code generation - masm = new InterpreterMacroAssembler(&_cb); - _masm = &masm; - } - - ~CodeletMark() { - // align so printing shows nop's instead of random code at the end (Codelets are aligned) - (*_masm)->align(wordSize); - // make sure all code is in code buffer - (*_masm)->flush(); - - - // commit Codelet - AbstractInterpreter::code()->commit((*_masm)->code()->pure_insts_size(), (*_masm)->code()->strings()); - // make sure nobody can use _masm outside a CodeletMark lifespan - *_masm = NULL; - } + CodeletMark(InterpreterMacroAssembler*& masm, + const char* description, + Bytecodes::Code bytecode = Bytecodes::_illegal); + ~CodeletMark(); }; // Wrapper classes to produce Interpreter/InterpreterGenerator from either @@ -142,9 +119,10 @@ class Interpreter: public CC_INTERP_ONLY(CppInterpreter) NOT_CC_INTERP(TemplateInterpreter) { - public: + public: // Debugging/printing - static InterpreterCodelet* codelet_containing(address pc) { return (InterpreterCodelet*)_code->stub_containing(pc); } + static InterpreterCodelet* codelet_containing(address pc) { return (InterpreterCodelet*)_code->stub_containing(pc); } + #ifdef TARGET_ARCH_x86 # include "interpreter_x86.hpp" #endif
--- a/hotspot/src/share/vm/interpreter/interpreterRuntime.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/interpreter/interpreterRuntime.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -48,6 +48,7 @@ #include "runtime/deoptimization.hpp" #include "runtime/fieldDescriptor.hpp" #include "runtime/handles.inline.hpp" +#include "runtime/icache.hpp" #include "runtime/interfaceSupport.hpp" #include "runtime/java.hpp" #include "runtime/jfieldIDWorkaround.hpp" @@ -57,21 +58,6 @@ #include "runtime/synchronizer.hpp" #include "runtime/threadCritical.hpp" #include "utilities/events.hpp" -#ifdef TARGET_ARCH_x86 -# include "vm_version_x86.hpp" -#endif -#ifdef TARGET_ARCH_sparc -# include "vm_version_sparc.hpp" -#endif -#ifdef TARGET_ARCH_zero -# include "vm_version_zero.hpp" -#endif -#ifdef TARGET_ARCH_arm -# include "vm_version_arm.hpp" -#endif -#ifdef TARGET_ARCH_ppc -# include "vm_version_ppc.hpp" -#endif #ifdef COMPILER2 #include "opto/runtime.hpp" #endif
--- a/hotspot/src/share/vm/interpreter/templateInterpreter.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/interpreter/templateInterpreter.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -26,6 +26,8 @@ #include "interpreter/interpreter.hpp" #include "interpreter/interpreterGenerator.hpp" #include "interpreter/interpreterRuntime.hpp" +#include "interpreter/interp_masm.hpp" +#include "interpreter/templateInterpreter.hpp" #include "interpreter/templateTable.hpp" #ifndef CC_INTERP
--- a/hotspot/src/share/vm/interpreter/templateInterpreter.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/interpreter/templateInterpreter.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -33,6 +33,8 @@ #ifndef CC_INTERP +class InterpreterMacroAssembler; + //------------------------------------------------------------------------------------------------------------------------ // A little wrapper class to group tosca-specific entry points into a unit. // (tosca = Top-Of-Stack CAche)
--- a/hotspot/src/share/vm/interpreter/templateTable.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/interpreter/templateTable.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -24,6 +24,7 @@ #include "precompiled.hpp" #include "gc_interface/collectedHeap.hpp" +#include "interpreter/interp_masm.hpp" #include "interpreter/templateTable.hpp" #include "runtime/timer.hpp"
--- a/hotspot/src/share/vm/interpreter/templateTable.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/interpreter/templateTable.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -28,24 +28,6 @@ #include "interpreter/bytecodes.hpp" #include "memory/allocation.hpp" #include "runtime/frame.hpp" -#ifdef TARGET_ARCH_x86 -# include "interp_masm_x86.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_sparc -# include "interp_masm_sparc.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_zero -# include "interp_masm_zero.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_arm -# include "interp_masm_arm.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_ppc_32 -# include "interp_masm_ppc_32.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_ppc_64 -# include "interp_masm_ppc_64.hpp" -#endif #ifndef CC_INTERP // All the necessary definitions used for (bytecode) template generation. Instead of @@ -53,6 +35,7 @@ // and the snippet generator, a template is assigned to each bytecode which can be // used to generate the bytecode's implementation if needed. +class InterpreterMacroAssembler; // A Template describes the properties of a code template for a given bytecode // and provides a generator to generate the code template.
--- a/hotspot/src/share/vm/memory/filemap.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/memory/filemap.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -30,6 +30,7 @@ #include "runtime/arguments.hpp" #include "runtime/java.hpp" #include "runtime/os.hpp" +#include "runtime/vm_version.hpp" #include "services/memTracker.hpp" #include "utilities/defaultStream.hpp"
--- a/hotspot/src/share/vm/memory/genCollectedHeap.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/memory/genCollectedHeap.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -1088,7 +1088,7 @@ guarantee(_n_gens = 2, "Wrong number of generations"); Generation* old_gen = _gens[1]; // Start by compacting into same gen. - CompactPoint cp(old_gen, NULL, NULL); + CompactPoint cp(old_gen); old_gen->prepare_for_compaction(&cp); Generation* young_gen = _gens[0]; young_gen->prepare_for_compaction(&cp);
--- a/hotspot/src/share/vm/memory/genMarkSweep.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/memory/genMarkSweep.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2014, 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 @@ -76,7 +76,6 @@ // When collecting the permanent generation Method*s may be moving, // so we either have to flush all bcp data or convert it into bci. CodeCache::gc_prologue(); - Threads::gc_prologue(); // Increment the invocation count _total_invocations++; @@ -132,7 +131,6 @@ rs->invalidate_or_clear(old_gen); } - Threads::gc_epilogue(); CodeCache::gc_epilogue(); JvmtiExport::gc_epilogue();
--- a/hotspot/src/share/vm/memory/space.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/memory/space.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -330,9 +330,9 @@ Generation* gen; CompactibleSpace* space; HeapWord* threshold; - CompactPoint(Generation* _gen, CompactibleSpace* _space, - HeapWord* _threshold) : - gen(_gen), space(_space), threshold(_threshold) {} + + CompactPoint(Generation* _gen) : + gen(_gen), space(NULL), threshold(0) {} };
--- a/hotspot/src/share/vm/memory/threadLocalAllocBuffer.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/memory/threadLocalAllocBuffer.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, 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 @@ -28,6 +28,7 @@ #include "gc_implementation/shared/gcUtil.hpp" #include "oops/typeArrayOop.hpp" #include "runtime/perfData.hpp" +#include "runtime/vm_version.hpp" class GlobalTLABStats;
--- a/hotspot/src/share/vm/oops/constantPool.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/oops/constantPool.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -31,22 +31,8 @@ #include "oops/symbol.hpp" #include "oops/typeArrayOop.hpp" #include "runtime/handles.hpp" +#include "utilities/bytes.hpp" #include "utilities/constantTag.hpp" -#ifdef TARGET_ARCH_x86 -# include "bytes_x86.hpp" -#endif -#ifdef TARGET_ARCH_sparc -# include "bytes_sparc.hpp" -#endif -#ifdef TARGET_ARCH_zero -# include "bytes_zero.hpp" -#endif -#ifdef TARGET_ARCH_arm -# include "bytes_arm.hpp" -#endif -#ifdef TARGET_ARCH_ppc -# include "bytes_ppc.hpp" -#endif // A ConstantPool is an array containing class constants as described in the // class file.
--- a/hotspot/src/share/vm/oops/method.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/oops/method.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -240,6 +240,9 @@ int Method::bci_from(address bcp) const { + if (is_native() && bcp == 0) { + return 0; + } #ifdef ASSERT { ResourceMark rm; assert(is_native() && bcp == code_base() || contains(bcp) || is_error_reported(), @@ -250,24 +253,23 @@ } -// Return (int)bcx if it appears to be a valid BCI. -// Return bci_from((address)bcx) if it appears to be a valid BCP. +int Method::validate_bci(int bci) const { + return (bci == 0 || bci < code_size()) ? bci : -1; +} + +// Return bci if it appears to be a valid bcp // Return -1 otherwise. // Used by profiling code, when invalid data is a possibility. // The caller is responsible for validating the Method* itself. -int Method::validate_bci_from_bcx(intptr_t bcx) const { +int Method::validate_bci_from_bcp(address bcp) const { // keep bci as -1 if not a valid bci int bci = -1; - if (bcx == 0 || (address)bcx == code_base()) { + if (bcp == 0 || bcp == code_base()) { // code_size() may return 0 and we allow 0 here // the method may be native bci = 0; - } else if (frame::is_bci(bcx)) { - if (bcx < code_size()) { - bci = (int)bcx; - } - } else if (contains((address)bcx)) { - bci = (address)bcx - code_base(); + } else if (contains(bcp)) { + bci = bcp - code_base(); } // Assert that if we have dodged any asserts, bci is negative. assert(bci == -1 || bci == bci_from(bcp_from(bci)), "sane bci if >=0");
--- a/hotspot/src/share/vm/oops/method.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/oops/method.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -649,7 +649,8 @@ // Returns the byte code index from the byte code pointer int bci_from(address bcp) const; address bcp_from(int bci) const; - int validate_bci_from_bcx(intptr_t bcx) const; + int validate_bci_from_bcp(address bcp) const; + int validate_bci(int bci) const; // Returns the line number for a bci if debugging information for the method is prowided, // -1 is returned otherwise.
--- a/hotspot/src/share/vm/oops/methodData.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/oops/methodData.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, 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 @@ -2338,10 +2338,6 @@ return dp - ((address)_data); } - address di_to_dp(int di) { - return (address)data_layout_at(di); - } - // bci to di/dp conversion. address bci_to_dp(int bci); int bci_to_di(int bci) {
--- a/hotspot/src/share/vm/oops/oop.inline.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/oops/oop.inline.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -42,21 +42,6 @@ #include "runtime/orderAccess.inline.hpp" #include "runtime/os.hpp" #include "utilities/macros.hpp" -#ifdef TARGET_ARCH_x86 -# include "bytes_x86.hpp" -#endif -#ifdef TARGET_ARCH_sparc -# include "bytes_sparc.hpp" -#endif -#ifdef TARGET_ARCH_zero -# include "bytes_zero.hpp" -#endif -#ifdef TARGET_ARCH_arm -# include "bytes_arm.hpp" -#endif -#ifdef TARGET_ARCH_ppc -# include "bytes_ppc.hpp" -#endif // Implementation of all inlined member functions defined in oop.hpp // We need a separate file to avoid circular references
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hotspot/src/share/vm/opto/ad.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2014, 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. + * + */ + +#ifndef SHARE_VM_OPTO_AD_HPP +#define SHARE_VM_OPTO_AD_HPP + +#ifdef TARGET_ARCH_MODEL_x86_32 +# include "adfiles/ad_x86_32.hpp" +#endif +#ifdef TARGET_ARCH_MODEL_x86_64 +# include "adfiles/ad_x86_64.hpp" +#endif +#ifdef TARGET_ARCH_MODEL_sparc +# include "adfiles/ad_sparc.hpp" +#endif +#ifdef TARGET_ARCH_MODEL_zero +# include "adfiles/ad_zero.hpp" +#endif +#ifdef TARGET_ARCH_MODEL_arm +# include "adfiles/ad_arm.hpp" +#endif +#ifdef TARGET_ARCH_MODEL_ppc_32 +# include "adfiles/ad_ppc_32.hpp" +#endif +#ifdef TARGET_ARCH_MODEL_ppc_64 +# include "adfiles/ad_ppc_64.hpp" +#endif + +#endif // SHARE_VM_OPTO_AD_HPP
--- a/hotspot/src/share/vm/opto/buildOopMap.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/opto/buildOopMap.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2014, 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 @@ -23,6 +23,7 @@ */ #include "precompiled.hpp" +#include "code/vmreg.inline.hpp" #include "compiler/oopMap.hpp" #include "opto/addnode.hpp" #include "opto/callnode.hpp" @@ -32,21 +33,6 @@ #include "opto/phase.hpp" #include "opto/regalloc.hpp" #include "opto/rootnode.hpp" -#ifdef TARGET_ARCH_x86 -# include "vmreg_x86.inline.hpp" -#endif -#ifdef TARGET_ARCH_sparc -# include "vmreg_sparc.inline.hpp" -#endif -#ifdef TARGET_ARCH_zero -# include "vmreg_zero.inline.hpp" -#endif -#ifdef TARGET_ARCH_arm -# include "vmreg_arm.inline.hpp" -#endif -#ifdef TARGET_ARCH_ppc -# include "vmreg_ppc.inline.hpp" -#endif // The functions in this file builds OopMaps after all scheduling is done. //
--- a/hotspot/src/share/vm/opto/c2compiler.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/opto/c2compiler.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, 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 @@ -24,28 +24,8 @@ #include "precompiled.hpp" #include "opto/c2compiler.hpp" +#include "opto/optoreg.hpp" #include "opto/runtime.hpp" -#ifdef TARGET_ARCH_MODEL_x86_32 -# include "adfiles/ad_x86_32.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_x86_64 -# include "adfiles/ad_x86_64.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_sparc -# include "adfiles/ad_sparc.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_zero -# include "adfiles/ad_zero.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_arm -# include "adfiles/ad_arm.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_ppc_32 -# include "adfiles/ad_ppc_32.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_ppc_64 -# include "adfiles/ad_ppc_64.hpp" -#endif // register information defined by ADLC extern const char register_save_policy[];
--- a/hotspot/src/share/vm/opto/compile.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/opto/compile.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -69,27 +69,6 @@ #include "runtime/timer.hpp" #include "trace/tracing.hpp" #include "utilities/copy.hpp" -#ifdef TARGET_ARCH_MODEL_x86_32 -# include "adfiles/ad_x86_32.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_x86_64 -# include "adfiles/ad_x86_64.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_sparc -# include "adfiles/ad_sparc.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_zero -# include "adfiles/ad_zero.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_arm -# include "adfiles/ad_arm.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_ppc_32 -# include "adfiles/ad_ppc_32.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_ppc_64 -# include "adfiles/ad_ppc_64.hpp" -#endif // -------------------- Compile::mach_constant_base_node -----------------------
--- a/hotspot/src/share/vm/opto/gcm.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/opto/gcm.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -35,28 +35,6 @@ #include "opto/rootnode.hpp" #include "opto/runtime.hpp" #include "runtime/deoptimization.hpp" -#ifdef TARGET_ARCH_MODEL_x86_32 -# include "adfiles/ad_x86_32.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_x86_64 -# include "adfiles/ad_x86_64.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_sparc -# include "adfiles/ad_sparc.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_zero -# include "adfiles/ad_zero.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_arm -# include "adfiles/ad_arm.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_ppc_32 -# include "adfiles/ad_ppc_32.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_ppc_64 -# include "adfiles/ad_ppc_64.hpp" -#endif - // Portions of code courtesy of Clifford Click
--- a/hotspot/src/share/vm/opto/lcm.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/opto/lcm.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2014, 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 @@ -24,33 +24,13 @@ #include "precompiled.hpp" #include "memory/allocation.inline.hpp" +#include "opto/ad.hpp" #include "opto/block.hpp" #include "opto/c2compiler.hpp" #include "opto/callnode.hpp" #include "opto/cfgnode.hpp" #include "opto/machnode.hpp" #include "opto/runtime.hpp" -#ifdef TARGET_ARCH_MODEL_x86_32 -# include "adfiles/ad_x86_32.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_x86_64 -# include "adfiles/ad_x86_64.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_sparc -# include "adfiles/ad_sparc.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_zero -# include "adfiles/ad_zero.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_arm -# include "adfiles/ad_arm.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_ppc_32 -# include "adfiles/ad_ppc_32.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_ppc_64 -# include "adfiles/ad_ppc_64.hpp" -#endif // Optimization - Graph Style
--- a/hotspot/src/share/vm/opto/library_call.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/opto/library_call.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -23,6 +23,7 @@ */ #include "precompiled.hpp" +#include "asm/macroAssembler.hpp" #include "classfile/systemDictionary.hpp" #include "classfile/vmSymbols.hpp" #include "compiler/compileBroker.hpp"
--- a/hotspot/src/share/vm/opto/locknode.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/opto/locknode.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2014, 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 @@ -28,27 +28,9 @@ #include "opto/node.hpp" #include "opto/opcodes.hpp" #include "opto/subnode.hpp" -#ifdef TARGET_ARCH_MODEL_x86_32 -# include "adfiles/ad_x86_32.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_x86_64 -# include "adfiles/ad_x86_64.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_sparc -# include "adfiles/ad_sparc.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_zero -# include "adfiles/ad_zero.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_arm -# include "adfiles/ad_arm.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_ppc_32 -# include "adfiles/ad_ppc_32.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_ppc_64 -# include "adfiles/ad_ppc_64.hpp" -#endif + +class BiasedLockingCounters; +class RTMLockingCounters; //------------------------------BoxLockNode------------------------------------ class BoxLockNode : public Node {
--- a/hotspot/src/share/vm/opto/matcher.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/opto/matcher.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -24,6 +24,7 @@ #include "precompiled.hpp" #include "memory/allocation.inline.hpp" +#include "opto/ad.hpp" #include "opto/addnode.hpp" #include "opto/callnode.hpp" #include "opto/idealGraphPrinter.hpp" @@ -37,27 +38,6 @@ #include "opto/type.hpp" #include "opto/vectornode.hpp" #include "runtime/os.hpp" -#ifdef TARGET_ARCH_MODEL_x86_32 -# include "adfiles/ad_x86_32.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_x86_64 -# include "adfiles/ad_x86_64.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_sparc -# include "adfiles/ad_sparc.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_zero -# include "adfiles/ad_zero.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_arm -# include "adfiles/ad_arm.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_ppc_32 -# include "adfiles/ad_ppc_32.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_ppc_64 -# include "adfiles/ad_ppc_64.hpp" -#endif OptoReg::Name OptoReg::c_frame_pointer;
--- a/hotspot/src/share/vm/opto/optoreg.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/opto/optoreg.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2006, 2014, 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 @@ -25,6 +25,30 @@ #ifndef SHARE_VM_OPTO_OPTOREG_HPP #define SHARE_VM_OPTO_OPTOREG_HPP +// AdGlobals contains c2 specific register handling code as specified +// in the .ad files. +#ifdef TARGET_ARCH_MODEL_x86_32 +# include "adfiles/adGlobals_x86_32.hpp" +#endif +#ifdef TARGET_ARCH_MODEL_x86_64 +# include "adfiles/adGlobals_x86_64.hpp" +#endif +#ifdef TARGET_ARCH_MODEL_sparc +# include "adfiles/adGlobals_sparc.hpp" +#endif +#ifdef TARGET_ARCH_MODEL_zero +# include "adfiles/adGlobals_zero.hpp" +#endif +#ifdef TARGET_ARCH_MODEL_arm +# include "adfiles/adGlobals_arm.hpp" +#endif +#ifdef TARGET_ARCH_MODEL_ppc_32 +# include "adfiles/adGlobals_ppc_32.hpp" +#endif +#ifdef TARGET_ARCH_MODEL_ppc_64 +# include "adfiles/adGlobals_ppc_64.hpp" +#endif + //------------------------------OptoReg---------------------------------------- // We eventually need Registers for the Real World. Registers are essentially // non-SSA names. A Register is represented as a number. Non-regular values
--- a/hotspot/src/share/vm/opto/output.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/opto/output.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -30,10 +30,12 @@ #include "compiler/compileBroker.hpp" #include "compiler/oopMap.hpp" #include "memory/allocation.inline.hpp" +#include "opto/ad.hpp" #include "opto/callnode.hpp" #include "opto/cfgnode.hpp" #include "opto/locknode.hpp" #include "opto/machnode.hpp" +#include "opto/optoreg.hpp" #include "opto/output.hpp" #include "opto/regalloc.hpp" #include "opto/runtime.hpp"
--- a/hotspot/src/share/vm/opto/output.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/opto/output.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2014, 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 @@ -25,29 +25,9 @@ #ifndef SHARE_VM_OPTO_OUTPUT_HPP #define SHARE_VM_OPTO_OUTPUT_HPP +#include "opto/ad.hpp" #include "opto/block.hpp" #include "opto/node.hpp" -#ifdef TARGET_ARCH_MODEL_x86_32 -# include "adfiles/ad_x86_32.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_x86_64 -# include "adfiles/ad_x86_64.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_sparc -# include "adfiles/ad_sparc.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_zero -# include "adfiles/ad_zero.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_arm -# include "adfiles/ad_arm.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_ppc_32 -# include "adfiles/ad_ppc_32.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_ppc_64 -# include "adfiles/ad_ppc_64.hpp" -#endif class Arena; class Bundle;
--- a/hotspot/src/share/vm/opto/regmask.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/opto/regmask.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -23,29 +23,9 @@ */ #include "precompiled.hpp" +#include "opto/ad.hpp" #include "opto/compile.hpp" #include "opto/regmask.hpp" -#ifdef TARGET_ARCH_MODEL_x86_32 -# include "adfiles/ad_x86_32.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_x86_64 -# include "adfiles/ad_x86_64.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_sparc -# include "adfiles/ad_sparc.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_zero -# include "adfiles/ad_zero.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_arm -# include "adfiles/ad_arm.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_ppc_32 -# include "adfiles/ad_ppc_32.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_ppc_64 -# include "adfiles/ad_ppc_64.hpp" -#endif #define RM_SIZE _RM_SIZE /* a constant private to the class RegMask */
--- a/hotspot/src/share/vm/opto/regmask.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/opto/regmask.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -27,27 +27,6 @@ #include "code/vmreg.hpp" #include "opto/optoreg.hpp" -#ifdef TARGET_ARCH_MODEL_x86_32 -# include "adfiles/adGlobals_x86_32.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_x86_64 -# include "adfiles/adGlobals_x86_64.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_sparc -# include "adfiles/adGlobals_sparc.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_zero -# include "adfiles/adGlobals_zero.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_arm -# include "adfiles/adGlobals_arm.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_ppc_32 -# include "adfiles/adGlobals_ppc_32.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_ppc_64 -# include "adfiles/adGlobals_ppc_64.hpp" -#endif // Some fun naming (textual) substitutions: //
--- a/hotspot/src/share/vm/opto/runtime.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/opto/runtime.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -25,6 +25,7 @@ #include "precompiled.hpp" #include "classfile/systemDictionary.hpp" #include "classfile/vmSymbols.hpp" +#include "code/codeCache.hpp" #include "code/compiledIC.hpp" #include "code/icBuffer.hpp" #include "code/nmethod.hpp" @@ -45,6 +46,7 @@ #include "memory/oopFactory.hpp" #include "oops/objArrayKlass.hpp" #include "oops/oop.inline.hpp" +#include "opto/ad.hpp" #include "opto/addnode.hpp" #include "opto/callnode.hpp" #include "opto/cfgnode.hpp" @@ -68,27 +70,6 @@ #include "runtime/vframe_hp.hpp" #include "utilities/copy.hpp" #include "utilities/preserveException.hpp" -#ifdef TARGET_ARCH_MODEL_x86_32 -# include "adfiles/ad_x86_32.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_x86_64 -# include "adfiles/ad_x86_64.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_sparc -# include "adfiles/ad_sparc.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_zero -# include "adfiles/ad_zero.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_arm -# include "adfiles/ad_arm.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_ppc_32 -# include "adfiles/ad_ppc_32.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_ppc_64 -# include "adfiles/ad_ppc_64.hpp" -#endif // For debugging purposes:
--- a/hotspot/src/share/vm/opto/runtime.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/opto/runtime.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -27,6 +27,7 @@ #include "code/codeBlob.hpp" #include "opto/machnode.hpp" +#include "opto/optoreg.hpp" #include "opto/type.hpp" #include "runtime/biasedLocking.hpp" #include "runtime/rtmLocking.hpp"
--- a/hotspot/src/share/vm/precompiled/precompiled.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/precompiled/precompiled.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -70,6 +70,7 @@ # include "code/exceptionHandlerTable.hpp" # include "code/jvmticmlr.h" # include "code/location.hpp" +# include "code/nativeInst.hpp" # include "code/nmethod.hpp" # include "code/oopRecorder.hpp" # include "code/pcDesc.hpp" @@ -106,6 +107,7 @@ # include "interpreter/bytecodes.hpp" # include "interpreter/cppInterpreter.hpp" # include "interpreter/interpreter.hpp" +# include "interpreter/interp_masm.hpp" # include "interpreter/invocationCounter.hpp" # include "interpreter/linkResolver.hpp" # include "interpreter/templateInterpreter.hpp" @@ -228,6 +230,7 @@ # include "utilities/array.hpp" # include "utilities/bitMap.hpp" # include "utilities/bitMap.inline.hpp" +# include "utilities/bytes.hpp" # include "utilities/constantTag.hpp" # include "utilities/copy.hpp" # include "utilities/debug.hpp" @@ -250,6 +253,7 @@ # include "libadt/dict.hpp" # include "libadt/set.hpp" # include "libadt/vectset.hpp" +# include "opto/ad.hpp" # include "opto/addnode.hpp" # include "opto/adlcVMDeps.hpp" # include "opto/block.hpp"
--- a/hotspot/src/share/vm/prims/forte.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/prims/forte.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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 @@ -234,9 +234,8 @@ *method_p = method; if (!method->is_valid_method()) return false; - intptr_t bcx = fr->interpreter_frame_bcx(); - - int bci = method->validate_bci_from_bcx(bcx); + address bcp = fr->interpreter_frame_bcp(); + int bci = method->validate_bci_from_bcp(bcp); // note: bci is set to -1 if not a valid bci *bci_p = bci;
--- a/hotspot/src/share/vm/prims/jniCheck.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/prims/jniCheck.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -37,21 +37,6 @@ #include "runtime/interfaceSupport.hpp" #include "runtime/jfieldIDWorkaround.hpp" #include "runtime/thread.inline.hpp" -#ifdef TARGET_ARCH_x86 -# include "jniTypes_x86.hpp" -#endif -#ifdef TARGET_ARCH_sparc -# include "jniTypes_sparc.hpp" -#endif -#ifdef TARGET_ARCH_zero -# include "jniTypes_zero.hpp" -#endif -#ifdef TARGET_ARCH_arm -# include "jniTypes_arm.hpp" -#endif -#ifdef TARGET_ARCH_ppc -# include "jniTypes_ppc.hpp" -#endif // Complain every extra number of unplanned local refs #define CHECK_JNI_LOCAL_REF_CAP_WARN_THRESHOLD 32
--- a/hotspot/src/share/vm/prims/jvm.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/prims/jvm.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -59,6 +59,7 @@ #include "runtime/thread.inline.hpp" #include "runtime/vframe.hpp" #include "runtime/vm_operations.hpp" +#include "runtime/vm_version.hpp" #include "services/attachListener.hpp" #include "services/management.hpp" #include "services/threadService.hpp"
--- a/hotspot/src/share/vm/prims/jvmtiClassFileReconstituter.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/prims/jvmtiClassFileReconstituter.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2014, 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 @@ -28,21 +28,8 @@ #include "oops/fieldStreams.hpp" #include "prims/jvmtiClassFileReconstituter.hpp" #include "runtime/signature.hpp" -#ifdef TARGET_ARCH_x86 -# include "bytes_x86.hpp" -#endif -#ifdef TARGET_ARCH_sparc -# include "bytes_sparc.hpp" -#endif -#ifdef TARGET_ARCH_zero -# include "bytes_zero.hpp" -#endif -#ifdef TARGET_ARCH_arm -# include "bytes_arm.hpp" -#endif -#ifdef TARGET_ARCH_ppc -# include "bytes_ppc.hpp" -#endif +#include "utilities/bytes.hpp" + // FIXME: add Deprecated attribute // FIXME: fix Synthetic attribute // FIXME: per Serguei, add error return handling for ConstantPool::copy_cpool_bytes()
--- a/hotspot/src/share/vm/prims/jvmtiTagMap.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/prims/jvmtiTagMap.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2014, 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 @@ -26,6 +26,7 @@ #include "classfile/symbolTable.hpp" #include "classfile/systemDictionary.hpp" #include "classfile/vmSymbols.hpp" +#include "code/codeCache.hpp" #include "jvmtifiles/jvmtiEnv.hpp" #include "oops/instanceMirrorKlass.hpp" #include "oops/objArrayKlass.hpp"
--- a/hotspot/src/share/vm/prims/unsafe.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/prims/unsafe.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -38,6 +38,7 @@ #include "runtime/orderAccess.inline.hpp" #include "runtime/reflection.hpp" #include "runtime/synchronizer.hpp" +#include "runtime/vm_version.hpp" #include "services/threadService.hpp" #include "trace/tracing.hpp" #include "utilities/copy.hpp"
--- a/hotspot/src/share/vm/prims/whitebox.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/prims/whitebox.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -24,6 +24,7 @@ #include "precompiled.hpp" +#include "code/codeCache.hpp" #include "memory/metadataFactory.hpp" #include "memory/universe.hpp" #include "oops/oop.inline.hpp" @@ -38,6 +39,7 @@ #include "runtime/arguments.hpp" #include "runtime/interfaceSupport.hpp" #include "runtime/os.hpp" +#include "runtime/vm_version.hpp" #include "utilities/array.hpp" #include "utilities/debug.hpp"
--- a/hotspot/src/share/vm/runtime/advancedThresholdPolicy.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/runtime/advancedThresholdPolicy.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2010, 2014, 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 @@ -23,6 +23,7 @@ */ #include "precompiled.hpp" +#include "code/codeCache.hpp" #include "runtime/advancedThresholdPolicy.hpp" #include "runtime/simpleThresholdPolicy.inline.hpp"
--- a/hotspot/src/share/vm/runtime/arguments.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/runtime/arguments.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -38,6 +38,7 @@ #include "runtime/globals_extension.hpp" #include "runtime/java.hpp" #include "runtime/os.hpp" +#include "runtime/vm_version.hpp" #include "services/management.hpp" #include "services/memTracker.hpp" #include "utilities/defaultStream.hpp" @@ -1537,8 +1538,10 @@ heap_alignment = G1CollectedHeap::conservative_max_heap_alignment(); } #endif // INCLUDE_ALL_GCS - _conservative_max_heap_alignment = MAX3(heap_alignment, os::max_page_size(), - CollectorPolicy::compute_heap_alignment()); + _conservative_max_heap_alignment = MAX4(heap_alignment, + (size_t)os::vm_allocation_granularity(), + os::max_page_size(), + CollectorPolicy::compute_heap_alignment()); } void Arguments::set_ergonomics_flags() {
--- a/hotspot/src/share/vm/runtime/deoptimization.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/runtime/deoptimization.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -24,6 +24,7 @@ #include "precompiled.hpp" #include "classfile/systemDictionary.hpp" +#include "code/codeCache.hpp" #include "code/debugInfoRec.hpp" #include "code/nmethod.hpp" #include "code/pcDesc.hpp" @@ -50,44 +51,6 @@ #include "runtime/vframe_hp.hpp" #include "utilities/events.hpp" #include "utilities/xmlstream.hpp" -#ifdef TARGET_ARCH_x86 -# include "vmreg_x86.inline.hpp" -#endif -#ifdef TARGET_ARCH_sparc -# include "vmreg_sparc.inline.hpp" -#endif -#ifdef TARGET_ARCH_zero -# include "vmreg_zero.inline.hpp" -#endif -#ifdef TARGET_ARCH_arm -# include "vmreg_arm.inline.hpp" -#endif -#ifdef TARGET_ARCH_ppc -# include "vmreg_ppc.inline.hpp" -#endif -#ifdef COMPILER2 -#ifdef TARGET_ARCH_MODEL_x86_32 -# include "adfiles/ad_x86_32.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_x86_64 -# include "adfiles/ad_x86_64.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_sparc -# include "adfiles/ad_sparc.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_zero -# include "adfiles/ad_zero.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_arm -# include "adfiles/ad_arm.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_ppc_32 -# include "adfiles/ad_ppc_32.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_ppc_64 -# include "adfiles/ad_ppc_64.hpp" -#endif -#endif // COMPILER2 PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC
--- a/hotspot/src/share/vm/runtime/dtraceJSDT.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/runtime/dtraceJSDT.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -25,6 +25,7 @@ #include "precompiled.hpp" #include "classfile/javaClasses.hpp" #include "code/codeBlob.hpp" +#include "code/nativeInst.hpp" #include "memory/allocation.hpp" #include "prims/jvm.h" #include "runtime/dtraceJSDT.hpp"
--- a/hotspot/src/share/vm/runtime/dtraceJSDT.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/runtime/dtraceJSDT.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -26,21 +26,6 @@ #define SHARE_VM_RUNTIME_DTRACEJSDT_HPP #include "code/nmethod.hpp" -#ifdef TARGET_ARCH_x86 -# include "nativeInst_x86.hpp" -#endif -#ifdef TARGET_ARCH_sparc -# include "nativeInst_sparc.hpp" -#endif -#ifdef TARGET_ARCH_zero -# include "nativeInst_zero.hpp" -#endif -#ifdef TARGET_ARCH_arm -# include "nativeInst_arm.hpp" -#endif -#ifdef TARGET_ARCH_ppc -# include "nativeInst_ppc.hpp" -#endif class RegisteredProbes; typedef jlong OpaqueProbes;
--- a/hotspot/src/share/vm/runtime/fprofiler.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/runtime/fprofiler.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -24,6 +24,7 @@ #include "precompiled.hpp" #include "classfile/classLoader.hpp" +#include "code/codeCache.hpp" #include "code/vtableStubs.hpp" #include "gc_interface/collectedHeap.inline.hpp" #include "interpreter/interpreter.hpp"
--- a/hotspot/src/share/vm/runtime/frame.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/runtime/frame.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -23,6 +23,8 @@ */ #include "precompiled.hpp" +#include "code/codeCache.hpp" +#include "code/vmreg.inline.hpp" #include "compiler/abstractCompiler.hpp" #include "compiler/disassembler.hpp" #include "gc_interface/collectedHeap.inline.hpp" @@ -48,21 +50,6 @@ #include "runtime/thread.inline.hpp" #include "utilities/decoder.hpp" -#ifdef TARGET_ARCH_x86 -# include "nativeInst_x86.hpp" -#endif -#ifdef TARGET_ARCH_sparc -# include "nativeInst_sparc.hpp" -#endif -#ifdef TARGET_ARCH_zero -# include "nativeInst_zero.hpp" -#endif -#ifdef TARGET_ARCH_arm -# include "nativeInst_arm.hpp" -#endif -#ifdef TARGET_ARCH_ppc -# include "nativeInst_ppc.hpp" -#endif PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC @@ -412,91 +399,32 @@ *interpreter_frame_method_addr() = method; } -void frame::interpreter_frame_set_bcx(intptr_t bcx) { - assert(is_interpreted_frame(), "Not an interpreted frame"); - if (ProfileInterpreter) { - bool formerly_bci = is_bci(interpreter_frame_bcx()); - bool is_now_bci = is_bci(bcx); - *interpreter_frame_bcx_addr() = bcx; - - intptr_t mdx = interpreter_frame_mdx(); - - if (mdx != 0) { - if (formerly_bci) { - if (!is_now_bci) { - // The bcx was just converted from bci to bcp. - // Convert the mdx in parallel. - MethodData* mdo = interpreter_frame_method()->method_data(); - assert(mdo != NULL, ""); - int mdi = mdx - 1; // We distinguish valid mdi from zero by adding one. - address mdp = mdo->di_to_dp(mdi); - interpreter_frame_set_mdx((intptr_t)mdp); - } - } else { - if (is_now_bci) { - // The bcx was just converted from bcp to bci. - // Convert the mdx in parallel. - MethodData* mdo = interpreter_frame_method()->method_data(); - assert(mdo != NULL, ""); - int mdi = mdo->dp_to_di((address)mdx); - interpreter_frame_set_mdx((intptr_t)mdi + 1); // distinguish valid from 0. - } - } - } - } else { - *interpreter_frame_bcx_addr() = bcx; - } -} - jint frame::interpreter_frame_bci() const { assert(is_interpreted_frame(), "interpreted frame expected"); - intptr_t bcx = interpreter_frame_bcx(); - return is_bci(bcx) ? bcx : interpreter_frame_method()->bci_from((address)bcx); -} - -void frame::interpreter_frame_set_bci(jint bci) { - assert(is_interpreted_frame(), "interpreted frame expected"); - assert(!is_bci(interpreter_frame_bcx()), "should not set bci during GC"); - interpreter_frame_set_bcx((intptr_t)interpreter_frame_method()->bcp_from(bci)); + address bcp = interpreter_frame_bcp(); + return interpreter_frame_method()->bci_from(bcp); } address frame::interpreter_frame_bcp() const { assert(is_interpreted_frame(), "interpreted frame expected"); - intptr_t bcx = interpreter_frame_bcx(); - return is_bci(bcx) ? interpreter_frame_method()->bcp_from(bcx) : (address)bcx; + return (address)*interpreter_frame_bcp_addr(); } void frame::interpreter_frame_set_bcp(address bcp) { assert(is_interpreted_frame(), "interpreted frame expected"); - assert(!is_bci(interpreter_frame_bcx()), "should not set bcp during GC"); - interpreter_frame_set_bcx((intptr_t)bcp); -} - -void frame::interpreter_frame_set_mdx(intptr_t mdx) { - assert(is_interpreted_frame(), "Not an interpreted frame"); - assert(ProfileInterpreter, "must be profiling interpreter"); - *interpreter_frame_mdx_addr() = mdx; + *interpreter_frame_bcp_addr() = (intptr_t)bcp; } address frame::interpreter_frame_mdp() const { assert(ProfileInterpreter, "must be profiling interpreter"); assert(is_interpreted_frame(), "interpreted frame expected"); - intptr_t bcx = interpreter_frame_bcx(); - intptr_t mdx = interpreter_frame_mdx(); - - assert(!is_bci(bcx), "should not access mdp during GC"); - return (address)mdx; + return (address)*interpreter_frame_mdp_addr(); } void frame::interpreter_frame_set_mdp(address mdp) { assert(is_interpreted_frame(), "interpreted frame expected"); - if (mdp == NULL) { - // Always allow the mdp to be cleared. - interpreter_frame_set_mdx((intptr_t)mdp); - } - intptr_t bcx = interpreter_frame_bcx(); - assert(!is_bci(bcx), "should not set mdp during GC"); - interpreter_frame_set_mdx((intptr_t)mdp); + assert(ProfileInterpreter, "must be profiling interpreter"); + *interpreter_frame_mdp_addr() = (intptr_t)mdp; } BasicObjectLock* frame::next_monitor_in_interpreter_frame(BasicObjectLock* current) const { @@ -1182,24 +1110,6 @@ } } -void frame::gc_prologue() { - if (is_interpreted_frame()) { - // set bcx to bci to become Method* position independent during GC - interpreter_frame_set_bcx(interpreter_frame_bci()); - } -} - - -void frame::gc_epilogue() { - if (is_interpreted_frame()) { - // set bcx back to bcp for interpreter - interpreter_frame_set_bcx((intptr_t)interpreter_frame_bcp()); - } - // call processor specific epilog function - pd_gc_epilog(); -} - - # ifdef ENABLE_ZAP_DEAD_LOCALS void frame::CheckValueClosure::do_oop(oop* p) {
--- a/hotspot/src/share/vm/runtime/frame.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/runtime/frame.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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,29 +30,6 @@ #include "runtime/monitorChunk.hpp" #include "runtime/registerMap.hpp" #include "utilities/top.hpp" -#ifdef COMPILER2 -#ifdef TARGET_ARCH_MODEL_x86_32 -# include "adfiles/adGlobals_x86_32.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_x86_64 -# include "adfiles/adGlobals_x86_64.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_sparc -# include "adfiles/adGlobals_sparc.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_zero -# include "adfiles/adGlobals_zero.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_arm -# include "adfiles/adGlobals_arm.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_ppc_32 -# include "adfiles/adGlobals_ppc_32.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_ppc_64 -# include "adfiles/adGlobals_ppc_64.hpp" -#endif -#endif // COMPILER2 #ifdef ZERO #ifdef TARGET_ARCH_zero # include "stack_zero.hpp" @@ -241,8 +218,8 @@ private: intptr_t** interpreter_frame_locals_addr() const; - intptr_t* interpreter_frame_bcx_addr() const; - intptr_t* interpreter_frame_mdx_addr() const; + intptr_t* interpreter_frame_bcp_addr() const; + intptr_t* interpreter_frame_mdp_addr() const; public: // Locals @@ -252,23 +229,13 @@ void interpreter_frame_set_locals(intptr_t* locs); - // byte code index/pointer (use these functions for unchecked frame access only!) - intptr_t interpreter_frame_bcx() const { return *interpreter_frame_bcx_addr(); } - void interpreter_frame_set_bcx(intptr_t bcx); - // byte code index jint interpreter_frame_bci() const; - void interpreter_frame_set_bci(jint bci); // byte code pointer address interpreter_frame_bcp() const; void interpreter_frame_set_bcp(address bcp); - // Unchecked access to the method data index/pointer. - // Only use this if you know what you are doing. - intptr_t interpreter_frame_mdx() const { return *interpreter_frame_mdx_addr(); } - void interpreter_frame_set_mdx(intptr_t mdx); - // method data pointer address interpreter_frame_mdp() const; void interpreter_frame_set_mdp(address dp); @@ -437,10 +404,6 @@ // RedefineClasses support for finding live interpreted methods on the stack void metadata_do(void f(Metadata*)); - void gc_prologue(); - void gc_epilogue(); - void pd_gc_epilog(); - # ifdef ENABLE_ZAP_DEAD_LOCALS private: class CheckValueClosure: public OopClosure { @@ -477,7 +440,6 @@ // Verification void verify(const RegisterMap* map); static bool verify_return_pc(address x); - static bool is_bci(intptr_t bcx); // Usage: // assert(frame::verify_return_pc(return_address), "must be a return pc");
--- a/hotspot/src/share/vm/runtime/frame.inline.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/runtime/frame.inline.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -31,21 +31,6 @@ #include "oops/method.hpp" #include "runtime/frame.hpp" #include "runtime/signature.hpp" -#ifdef TARGET_ARCH_x86 -# include "jniTypes_x86.hpp" -#endif -#ifdef TARGET_ARCH_sparc -# include "jniTypes_sparc.hpp" -#endif -#ifdef TARGET_ARCH_zero -# include "jniTypes_zero.hpp" -#endif -#ifdef TARGET_ARCH_arm -# include "jniTypes_arm.hpp" -#endif -#ifdef TARGET_ARCH_ppc -# include "jniTypes_ppc.hpp" -#endif #ifdef ZERO #ifdef TARGET_ARCH_zero # include "entryFrame_zero.hpp" @@ -55,26 +40,6 @@ #endif #endif -// This file holds platform-independent bodies of inline functions for frames. - -// Note: The bcx usually contains the bcp; however during GC it contains the bci -// (changed by gc_prologue() and gc_epilogue()) to be Method* position -// independent. These accessors make sure the correct value is returned -// by testing the range of the bcx value. bcp's are guaranteed to be above -// max_method_code_size, since methods are always allocated in OldSpace and -// Eden is allocated before OldSpace. -// -// The bcp is accessed sometimes during GC for ArgumentDescriptors; than -// the correct translation has to be performed (was bug). - -inline bool frame::is_bci(intptr_t bcx) { -#ifdef _LP64 - return ((uintptr_t) bcx) <= ((uintptr_t) max_method_code_size) ; -#else - return 0 <= bcx && bcx <= max_method_code_size; -#endif -} - inline bool frame::is_entry_frame() const { return StubRoutines::returns_to_call_stub(pc()); }
--- a/hotspot/src/share/vm/runtime/java.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/runtime/java.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -65,21 +65,6 @@ #include "utilities/histogram.hpp" #include "utilities/macros.hpp" #include "utilities/vmError.hpp" -#ifdef TARGET_ARCH_x86 -# include "vm_version_x86.hpp" -#endif -#ifdef TARGET_ARCH_sparc -# include "vm_version_sparc.hpp" -#endif -#ifdef TARGET_ARCH_zero -# include "vm_version_zero.hpp" -#endif -#ifdef TARGET_ARCH_arm -# include "vm_version_arm.hpp" -#endif -#ifdef TARGET_ARCH_ppc -# include "vm_version_ppc.hpp" -#endif #if INCLUDE_ALL_GCS #include "gc_implementation/concurrentMarkSweep/concurrentMarkSweepThread.hpp" #include "gc_implementation/parallelScavenge/psScavenge.hpp"
--- a/hotspot/src/share/vm/runtime/os.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/runtime/os.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -27,6 +27,7 @@ #include "classfile/javaClasses.hpp" #include "classfile/systemDictionary.hpp" #include "classfile/vmSymbols.hpp" +#include "code/codeCache.hpp" #include "code/icBuffer.hpp" #include "code/vtableStubs.hpp" #include "gc_implementation/shared/vmGCOperations.hpp" @@ -49,6 +50,7 @@ #include "runtime/os.inline.hpp" #include "runtime/stubRoutines.hpp" #include "runtime/thread.inline.hpp" +#include "runtime/vm_version.hpp" #include "services/attachListener.hpp" #include "services/memTracker.hpp" #include "services/threadService.hpp"
--- a/hotspot/src/share/vm/runtime/registerMap.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/runtime/registerMap.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2014, 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 @@ -27,21 +27,6 @@ #include "code/vmreg.hpp" #include "utilities/globalDefinitions.hpp" -#ifdef TARGET_ARCH_x86 -# include "register_x86.hpp" -#endif -#ifdef TARGET_ARCH_sparc -# include "register_sparc.hpp" -#endif -#ifdef TARGET_ARCH_zero -# include "register_zero.hpp" -#endif -#ifdef TARGET_ARCH_arm -# include "register_arm.hpp" -#endif -#ifdef TARGET_ARCH_ppc -# include "register_ppc.hpp" -#endif class JavaThread;
--- a/hotspot/src/share/vm/runtime/relocator.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/runtime/relocator.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, 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 @@ -27,21 +27,7 @@ #include "interpreter/bytecodes.hpp" #include "oops/method.hpp" -#ifdef TARGET_ARCH_x86 -# include "bytes_x86.hpp" -#endif -#ifdef TARGET_ARCH_sparc -# include "bytes_sparc.hpp" -#endif -#ifdef TARGET_ARCH_zero -# include "bytes_zero.hpp" -#endif -#ifdef TARGET_ARCH_arm -# include "bytes_arm.hpp" -#endif -#ifdef TARGET_ARCH_ppc -# include "bytes_ppc.hpp" -#endif +#include "utilities/bytes.hpp" // This code has been converted from the 1.1E java virtual machine // Thanks to the JavaTopics group for using the code
--- a/hotspot/src/share/vm/runtime/rframe.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/runtime/rframe.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -23,6 +23,7 @@ */ #include "precompiled.hpp" +#include "code/codeCache.hpp" #include "interpreter/interpreter.hpp" #include "oops/oop.inline.hpp" #include "oops/symbol.hpp"
--- a/hotspot/src/share/vm/runtime/safepoint.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/runtime/safepoint.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -56,26 +56,6 @@ #include "services/runtimeService.hpp" #include "utilities/events.hpp" #include "utilities/macros.hpp" -#ifdef TARGET_ARCH_x86 -# include "nativeInst_x86.hpp" -# include "vmreg_x86.inline.hpp" -#endif -#ifdef TARGET_ARCH_sparc -# include "nativeInst_sparc.hpp" -# include "vmreg_sparc.inline.hpp" -#endif -#ifdef TARGET_ARCH_zero -# include "nativeInst_zero.hpp" -# include "vmreg_zero.inline.hpp" -#endif -#ifdef TARGET_ARCH_arm -# include "nativeInst_arm.hpp" -# include "vmreg_arm.inline.hpp" -#endif -#ifdef TARGET_ARCH_ppc -# include "nativeInst_ppc.hpp" -# include "vmreg_ppc.inline.hpp" -#endif #if INCLUDE_ALL_GCS #include "gc_implementation/concurrentMarkSweep/concurrentMarkSweepThread.hpp" #include "gc_implementation/shared/suspendibleThreadSet.hpp"
--- a/hotspot/src/share/vm/runtime/sharedRuntime.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/runtime/sharedRuntime.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -25,6 +25,7 @@ #include "precompiled.hpp" #include "classfile/systemDictionary.hpp" #include "classfile/vmSymbols.hpp" +#include "code/codeCache.hpp" #include "code/compiledIC.hpp" #include "code/scopeDesc.hpp" #include "code/vtableStubs.hpp" @@ -59,26 +60,6 @@ #include "utilities/hashtable.inline.hpp" #include "utilities/macros.hpp" #include "utilities/xmlstream.hpp" -#ifdef TARGET_ARCH_x86 -# include "nativeInst_x86.hpp" -# include "vmreg_x86.inline.hpp" -#endif -#ifdef TARGET_ARCH_sparc -# include "nativeInst_sparc.hpp" -# include "vmreg_sparc.inline.hpp" -#endif -#ifdef TARGET_ARCH_zero -# include "nativeInst_zero.hpp" -# include "vmreg_zero.inline.hpp" -#endif -#ifdef TARGET_ARCH_arm -# include "nativeInst_arm.hpp" -# include "vmreg_arm.inline.hpp" -#endif -#ifdef TARGET_ARCH_ppc -# include "nativeInst_ppc.hpp" -# include "vmreg_ppc.inline.hpp" -#endif #ifdef COMPILER1 #include "c1/c1_Runtime1.hpp" #endif
--- a/hotspot/src/share/vm/runtime/stackValueCollection.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/runtime/stackValueCollection.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -24,21 +24,6 @@ #include "precompiled.hpp" #include "runtime/stackValueCollection.hpp" -#ifdef TARGET_ARCH_x86 -# include "jniTypes_x86.hpp" -#endif -#ifdef TARGET_ARCH_sparc -# include "jniTypes_sparc.hpp" -#endif -#ifdef TARGET_ARCH_zero -# include "jniTypes_zero.hpp" -#endif -#ifdef TARGET_ARCH_arm -# include "jniTypes_arm.hpp" -#endif -#ifdef TARGET_ARCH_ppc -# include "jniTypes_ppc.hpp" -#endif PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC
--- a/hotspot/src/share/vm/runtime/statSampler.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/runtime/statSampler.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2014, 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 @@ -33,21 +33,7 @@ #include "runtime/javaCalls.hpp" #include "runtime/os.hpp" #include "runtime/statSampler.hpp" -#ifdef TARGET_ARCH_x86 -# include "vm_version_x86.hpp" -#endif -#ifdef TARGET_ARCH_sparc -# include "vm_version_sparc.hpp" -#endif -#ifdef TARGET_ARCH_zero -# include "vm_version_zero.hpp" -#endif -#ifdef TARGET_ARCH_arm -# include "vm_version_arm.hpp" -#endif -#ifdef TARGET_ARCH_ppc -# include "vm_version_ppc.hpp" -#endif +#include "runtime/vm_version.hpp" // -------------------------------------------------------- // StatSamplerTask
--- a/hotspot/src/share/vm/runtime/stubRoutines.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/runtime/stubRoutines.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -31,21 +31,6 @@ #include "runtime/mutexLocker.hpp" #include "runtime/stubCodeGenerator.hpp" #include "utilities/top.hpp" -#ifdef TARGET_ARCH_x86 -# include "nativeInst_x86.hpp" -#endif -#ifdef TARGET_ARCH_sparc -# include "nativeInst_sparc.hpp" -#endif -#ifdef TARGET_ARCH_zero -# include "nativeInst_zero.hpp" -#endif -#ifdef TARGET_ARCH_arm -# include "nativeInst_arm.hpp" -#endif -#ifdef TARGET_ARCH_ppc -# include "nativeInst_ppc.hpp" -#endif // StubRoutines provides entry points to assembly routines used by // compiled code and the run-time system. Platform-specific entry
--- a/hotspot/src/share/vm/runtime/thread.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/runtime/thread.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -27,6 +27,7 @@ #include "classfile/javaClasses.hpp" #include "classfile/systemDictionary.hpp" #include "classfile/vmSymbols.hpp" +#include "code/codeCache.hpp" #include "code/scopeDesc.hpp" #include "compiler/compileBroker.hpp" #include "interpreter/interpreter.hpp" @@ -74,6 +75,7 @@ #include "runtime/vframe_hp.hpp" #include "runtime/vmThread.hpp" #include "runtime/vm_operations.hpp" +#include "runtime/vm_version.hpp" #include "services/attachListener.hpp" #include "services/management.hpp" #include "services/memTracker.hpp" @@ -2647,20 +2649,6 @@ } -// GC support -static void frame_gc_epilogue(frame* f, const RegisterMap* map) { f->gc_epilogue(); } - -void JavaThread::gc_epilogue() { - frames_do(frame_gc_epilogue); -} - - -static void frame_gc_prologue(frame* f, const RegisterMap* map) { f->gc_prologue(); } - -void JavaThread::gc_prologue() { - frames_do(frame_gc_prologue); -} - // If the caller is a NamedThread, then remember, in the current scope, // the given JavaThread in its _processed_thread field. class RememberProcessedThread: public StackObj { @@ -4149,18 +4137,6 @@ } } -void Threads::gc_epilogue() { - ALL_JAVA_THREADS(p) { - p->gc_epilogue(); - } -} - -void Threads::gc_prologue() { - ALL_JAVA_THREADS(p) { - p->gc_prologue(); - } -} - void Threads::deoptimized_wrt_marked_nmethods() { ALL_JAVA_THREADS(p) { p->deoptimized_wrt_marked_nmethods();
--- a/hotspot/src/share/vm/runtime/thread.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/runtime/thread.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1416,10 +1416,6 @@ // RedefineClasses Support void metadata_do(void f(Metadata*)); - // Memory management operations - void gc_epilogue(); - void gc_prologue(); - // Misc. operations char* name() const { return (char*)get_thread_name(); } void print_on(outputStream* st) const; @@ -1899,8 +1895,6 @@ // RedefineClasses support static void metadata_do(void f(Metadata*)); - static void gc_epilogue(); - static void gc_prologue(); #ifdef ASSERT static bool is_vm_complete() { return _vm_complete; } #endif
--- a/hotspot/src/share/vm/runtime/vframe.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/runtime/vframe.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -511,8 +511,8 @@ inline void vframeStreamCommon::fill_from_interpreter_frame() { Method* method = _frame.interpreter_frame_method(); - intptr_t bcx = _frame.interpreter_frame_bcx(); - int bci = method->validate_bci_from_bcx(bcx); + address bcp = _frame.interpreter_frame_bcp(); + int bci = method->validate_bci_from_bcp(bcp); // 6379830 AsyncGetCallTrace sometimes feeds us wild frames. if (bci < 0) { found_bad_method_frame();
--- a/hotspot/src/share/vm/runtime/vframeArray.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/runtime/vframeArray.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -24,6 +24,7 @@ #include "precompiled.hpp" #include "classfile/vmSymbols.hpp" +#include "code/vmreg.inline.hpp" #include "interpreter/bytecode.hpp" #include "interpreter/interpreter.hpp" #include "memory/allocation.inline.hpp" @@ -296,9 +297,9 @@ src->lock()->move_to(src->obj(), top->lock()); } if (ProfileInterpreter) { - iframe()->interpreter_frame_set_mdx(0); // clear out the mdp. + iframe()->interpreter_frame_set_mdp(0); // clear out the mdp. } - iframe()->interpreter_frame_set_bcx((intptr_t)bcp); // cannot use bcp because frame is not initialized yet + iframe()->interpreter_frame_set_bcp(bcp); if (ProfileInterpreter) { MethodData* mdo = method()->method_data(); if (mdo != NULL) {
--- a/hotspot/src/share/vm/runtime/vmStructs.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/runtime/vmStructs.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -193,33 +193,13 @@ #include "opto/movenode.hpp" #include "opto/narrowptrnode.hpp" #include "opto/opaquenode.hpp" +#include "opto/optoreg.hpp" #include "opto/phaseX.hpp" #include "opto/parse.hpp" #include "opto/regalloc.hpp" #include "opto/rootnode.hpp" #include "opto/subnode.hpp" #include "opto/vectornode.hpp" -#ifdef TARGET_ARCH_MODEL_x86_32 -# include "adfiles/adGlobals_x86_32.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_x86_64 -# include "adfiles/adGlobals_x86_64.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_sparc -# include "adfiles/adGlobals_sparc.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_zero -# include "adfiles/adGlobals_zero.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_arm -# include "adfiles/adGlobals_arm.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_ppc_32 -# include "adfiles/adGlobals_ppc_32.hpp" -#endif -#ifdef TARGET_ARCH_MODEL_ppc_64 -# include "adfiles/adGlobals_ppc_64.hpp" -#endif #endif // COMPILER2 // Note: the cross-product of (c1, c2, product, nonproduct, ...),
--- a/hotspot/src/share/vm/runtime/vm_operations.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/runtime/vm_operations.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -25,6 +25,7 @@ #include "precompiled.hpp" #include "classfile/symbolTable.hpp" #include "classfile/vmSymbols.hpp" +#include "code/codeCache.hpp" #include "compiler/compileBroker.hpp" #include "compiler/compilerOracle.hpp" #include "gc_implementation/shared/isGCActiveMark.hpp"
--- a/hotspot/src/share/vm/runtime/vm_version.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/runtime/vm_version.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -26,21 +26,7 @@ #include "memory/universe.hpp" #include "oops/oop.inline.hpp" #include "runtime/arguments.hpp" -#ifdef TARGET_ARCH_x86 -# include "vm_version_x86.hpp" -#endif -#ifdef TARGET_ARCH_sparc -# include "vm_version_sparc.hpp" -#endif -#ifdef TARGET_ARCH_zero -# include "vm_version_zero.hpp" -#endif -#ifdef TARGET_ARCH_arm -# include "vm_version_arm.hpp" -#endif -#ifdef TARGET_ARCH_ppc -# include "vm_version_ppc.hpp" -#endif +#include "runtime/vm_version.hpp" 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();
--- a/hotspot/src/share/vm/runtime/vm_version.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/runtime/vm_version.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -128,4 +128,20 @@ static unsigned int calc_parallel_worker_threads(); }; +#ifdef TARGET_ARCH_x86 +# include "vm_version_x86.hpp" +#endif +#ifdef TARGET_ARCH_sparc +# include "vm_version_sparc.hpp" +#endif +#ifdef TARGET_ARCH_zero +# include "vm_version_zero.hpp" +#endif +#ifdef TARGET_ARCH_arm +# include "vm_version_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "vm_version_ppc.hpp" +#endif + #endif // SHARE_VM_RUNTIME_VM_VERSION_HPP
--- a/hotspot/src/share/vm/services/diagnosticCommand.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/services/diagnosticCommand.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014, 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 @@ -25,17 +25,16 @@ #ifndef SHARE_VM_SERVICES_DIAGNOSTICCOMMAND_HPP #define SHARE_VM_SERVICES_DIAGNOSTICCOMMAND_HPP +#include "classfile/vmSymbols.hpp" #include "runtime/arguments.hpp" -#include "classfile/vmSymbols.hpp" -#include "utilities/ostream.hpp" -#include "runtime/vm_version.hpp" +#include "runtime/os.hpp" #include "runtime/vmThread.hpp" -#include "runtime/os.hpp" #include "services/diagnosticArgument.hpp" #include "services/diagnosticCommand.hpp" +#include "services/diagnosticCommand_ext.hpp" #include "services/diagnosticFramework.hpp" -#include "services/diagnosticCommand_ext.hpp" #include "utilities/macros.hpp" +#include "utilities/ostream.hpp" class HelpDCmd : public DCmdWithParser { protected:
--- a/hotspot/src/share/vm/services/diagnosticFramework.hpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/services/diagnosticFramework.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014, 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,7 +29,6 @@ #include "memory/allocation.hpp" #include "runtime/arguments.hpp" #include "runtime/os.hpp" -#include "runtime/vm_version.hpp" #include "runtime/vmThread.hpp" #include "utilities/ostream.hpp"
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hotspot/src/share/vm/utilities/bytes.hpp Fri Jul 25 09:44:53 2014 +0000 @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2014, 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. + * + */ + +#ifndef SHARE_VM_UTILITIES_BYTES_HPP +#define SHARE_VM_UTILITIES_BYTES_HPP + +#ifdef TARGET_ARCH_x86 +# include "bytes_x86.hpp" +#endif +#ifdef TARGET_ARCH_sparc +# include "bytes_sparc.hpp" +#endif +#ifdef TARGET_ARCH_zero +# include "bytes_zero.hpp" +#endif +#ifdef TARGET_ARCH_arm +# include "bytes_arm.hpp" +#endif +#ifdef TARGET_ARCH_ppc +# include "bytes_ppc.hpp" +#endif + +#endif // SHARE_VM_UTILITIES_BYTES_HPP
--- a/hotspot/src/share/vm/utilities/debug.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/utilities/debug.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -48,6 +48,7 @@ #include "runtime/stubRoutines.hpp" #include "runtime/thread.inline.hpp" #include "runtime/vframe.hpp" +#include "runtime/vm_version.hpp" #include "services/heapDumper.hpp" #include "utilities/defaultStream.hpp" #include "utilities/events.hpp"
--- a/hotspot/src/share/vm/utilities/ostream.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/utilities/ostream.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -28,6 +28,7 @@ #include "oops/oop.inline.hpp" #include "runtime/arguments.hpp" #include "runtime/os.hpp" +#include "runtime/vm_version.hpp" #include "utilities/defaultStream.hpp" #include "utilities/ostream.hpp" #include "utilities/top.hpp"
--- a/hotspot/src/share/vm/utilities/vmError.cpp Thu Jul 24 09:15:38 2014 +0200 +++ b/hotspot/src/share/vm/utilities/vmError.cpp Fri Jul 25 09:44:53 2014 +0000 @@ -23,6 +23,7 @@ */ #include "precompiled.hpp" +#include "code/codeCache.hpp" #include "compiler/compileBroker.hpp" #include "gc_interface/collectedHeap.hpp" #include "prims/whitebox.hpp"
--- a/jaxp/.hgtags Thu Jul 24 09:15:38 2014 +0200 +++ b/jaxp/.hgtags Fri Jul 25 09:44:53 2014 +0000 @@ -265,3 +265,4 @@ 94fd4d9d3a75819644b21e18c8a567fd0e973eaf jdk9-b20 7eb0ab676ea75cb1dd31c613e77008a7d8cb0af7 jdk9-b21 82b94ff002c6e007a03bf0f364ca94b381e09135 jdk9-b22 +2e5b63006187bfc64d8eace374dbc2806267a160 jdk9-b23
--- a/jaxp/src/com/sun/org/apache/xalan/internal/XalanConstants.java Thu Jul 24 09:15:38 2014 +0200 +++ b/jaxp/src/com/sun/org/apache/xalan/internal/XalanConstants.java Fri Jul 25 09:44:53 2014 +0000 @@ -90,6 +90,13 @@ */ public static final String JDK_XML_NAME_LIMIT = ORACLE_JAXP_PROPERTY_PREFIX + "maxXMLNameLimit"; + + /** + * JDK maxElementDepth limit + */ + public static final String JDK_MAX_ELEMENT_DEPTH = + ORACLE_JAXP_PROPERTY_PREFIX + "maxElementDepth"; + /** * JDK property indicating whether the parser shall print out entity * count information @@ -138,6 +145,11 @@ */ public static final String SP_XML_NAME_LIMIT = "jdk.xml.maxXMLNameLimit"; + /** + * JDK maxElementDepth limit + */ + public static final String SP_MAX_ELEMENT_DEPTH = "jdk.xml.maxElementDepth"; + //legacy System Properties public final static String ENTITY_EXPANSION_LIMIT = "entityExpansionLimit"; public static final String ELEMENT_ATTRIBUTE_LIMIT = "elementAttributeLimit" ;
--- a/jaxp/src/com/sun/org/apache/xalan/internal/utils/ObjectFactory.java Thu Jul 24 09:15:38 2014 +0200 +++ b/jaxp/src/com/sun/org/apache/xalan/internal/utils/ObjectFactory.java Fri Jul 25 09:44:53 2014 +0000 @@ -38,8 +38,8 @@ // // Constants // - private static final String XALAN_INTERNAL = "com.sun.org.apache.xalan.internal"; - private static final String XERCES_INTERNAL = "com.sun.org.apache.xerces.internal"; + private static final String JAXP_INTERNAL = "com.sun.org.apache"; + private static final String STAX_INTERNAL = "com.sun.xml.internal"; /** Set to true for debugging */ private static final boolean DEBUG = false; @@ -160,12 +160,8 @@ public static Class<?> findProviderClass(String className, boolean doFallback) throws ClassNotFoundException, ConfigurationError { - if (System.getSecurityManager()!=null) { - return Class.forName(className); - } else { - return findProviderClass (className, + return findProviderClass (className, findClassLoader (), doFallback); - } } /** @@ -180,8 +176,8 @@ SecurityManager security = System.getSecurityManager(); try{ if (security != null){ - if (className.startsWith(XALAN_INTERNAL) || - className.startsWith(XERCES_INTERNAL)) { + if (className.startsWith(JAXP_INTERNAL) || + className.startsWith(STAX_INTERNAL)) { cl = null; } else { final int lastDot = className.lastIndexOf("."); @@ -196,16 +192,7 @@ Class<?> providerClass; if (cl == null) { - // XXX Use the bootstrap ClassLoader. There is no way to - // load a class using the bootstrap ClassLoader that works - // in both JDK 1.1 and Java 2. However, this should still - // work b/c the following should be true: - // - // (cl == null) iff current ClassLoader == null - // - // Thus Class.forName(String) will use the current - // ClassLoader which will be the bootstrap ClassLoader. - providerClass = Class.forName(className); + providerClass = Class.forName(className, false, ObjectFactory.class.getClassLoader()); } else { try { providerClass = cl.loadClass(className);
--- a/jaxp/src/com/sun/org/apache/xalan/internal/utils/XMLSecurityManager.java Thu Jul 24 09:15:38 2014 +0200 +++ b/jaxp/src/com/sun/org/apache/xalan/internal/utils/XMLSecurityManager.java Fri Jul 25 09:44:53 2014 +0000 @@ -76,7 +76,9 @@ GENERAL_ENTITY_SIZE_LIMIT(XalanConstants.JDK_GENERAL_ENTITY_SIZE_LIMIT, XalanConstants.SP_GENERAL_ENTITY_SIZE_LIMIT, 0, 0), PARAMETER_ENTITY_SIZE_LIMIT(XalanConstants.JDK_PARAMETER_ENTITY_SIZE_LIMIT, - XalanConstants.SP_PARAMETER_ENTITY_SIZE_LIMIT, 0, 1000000); + XalanConstants.SP_PARAMETER_ENTITY_SIZE_LIMIT, 0, 1000000), + MAX_ELEMENT_DEPTH_LIMIT(XalanConstants.JDK_MAX_ELEMENT_DEPTH, + XalanConstants.SP_MAX_ELEMENT_DEPTH, 0, 0); final String apiProperty; final String systemProperty;
--- a/jaxp/src/com/sun/org/apache/xerces/internal/impl/Constants.java Thu Jul 24 09:15:38 2014 +0200 +++ b/jaxp/src/com/sun/org/apache/xerces/internal/impl/Constants.java Fri Jul 25 09:44:53 2014 +0000 @@ -251,6 +251,13 @@ */ public static final String JDK_XML_NAME_LIMIT = ORACLE_JAXP_PROPERTY_PREFIX + "maxXMLNameLimit"; + + /** + * JDK maxElementDepth limit + */ + public static final String JDK_MAX_ELEMENT_DEPTH = + ORACLE_JAXP_PROPERTY_PREFIX + "maxElementDepth"; + /** * JDK property to allow printing out information from the limit analyzer */ @@ -296,6 +303,11 @@ */ public static final String SP_XML_NAME_LIMIT = "jdk.xml.maxXMLNameLimit"; + /** + * JDK maxElementDepth limit + */ + public static final String SP_MAX_ELEMENT_DEPTH = "jdk.xml.maxElementDepth"; + //legacy System Properties public final static String ENTITY_EXPANSION_LIMIT = "entityExpansionLimit"; public static final String ELEMENT_ATTRIBUTE_LIMIT = "elementAttributeLimit" ;
--- a/jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLDocumentFragmentScannerImpl.java Thu Jul 24 09:15:38 2014 +0200 +++ b/jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLDocumentFragmentScannerImpl.java Fri Jul 25 09:44:53 2014 +0000 @@ -1308,6 +1308,7 @@ fAttributes.removeAllAttributes(); + checkDepth(rawname); if(!seekCloseOfStartTag()){ fReadingAttributes = true; fAttributeCacheUsedCount =0; @@ -1912,6 +1913,21 @@ // utility methods /** + * Check if the depth exceeds the maxElementDepth limit + * @param elementName name of the current element + */ + void checkDepth(String elementName) { + fLimitAnalyzer.addValue(Limit.MAX_ELEMENT_DEPTH_LIMIT, elementName, fElementStack.fDepth); + if (fSecurityManager.isOverLimit(Limit.MAX_ELEMENT_DEPTH_LIMIT,fLimitAnalyzer)) { + fSecurityManager.debugPrint(fLimitAnalyzer); + reportFatalError("MaxElementDepthLimit", new Object[]{elementName, + fLimitAnalyzer.getTotalValue(Limit.MAX_ELEMENT_DEPTH_LIMIT), + fSecurityManager.getLimit(Limit.MAX_ELEMENT_DEPTH_LIMIT), + "maxElementDepth"}); + } + } + + /** * Calls document handler with a single character resulting from * built-in entity resolution. *
--- a/jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLNSDocumentScannerImpl.java Thu Jul 24 09:15:38 2014 +0200 +++ b/jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLNSDocumentScannerImpl.java Fri Jul 25 09:44:53 2014 +0000 @@ -219,6 +219,7 @@ fCurrentElement = fElementQName; String rawname = fElementQName.rawname; + checkDepth(rawname); if (fBindNamespaces) { fNamespaceContext.pushContext(); if (fScannerState == SCANNER_STATE_ROOT_ELEMENT) {
--- a/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages.properties Thu Jul 24 09:15:38 2014 +0200 +++ b/jaxp/src/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages.properties Fri Jul 25 09:44:53 2014 +0000 @@ -299,4 +299,5 @@ MaxEntitySizeLimit=JAXP00010003: The length of entity \"{0}\" is \"{1}\" that exceeds the \"{2}\" limit set by \"{3}\". TotalEntitySizeLimit=JAXP00010004: The accumulated size \"{0}\" of entities exceeded the \"{1}\" limit set by \"{2}\". MaxXMLNameLimit=JAXP00010005: The name \"{0}\" exceeded the \"{1}\" limit set by \"{2}\". + MaxElementDepthLimit=JAXP00010006: The element \"{0}\" has a depth of \"{1}\" that exceeds the limit \"{2}\" set by \"{3}\".
--- a/jaxp/src/com/sun/org/apache/xerces/internal/jaxp/validation/XMLSchemaFactory.java Thu Jul 24 09:15:38 2014 +0200 +++ b/jaxp/src/com/sun/org/apache/xerces/internal/jaxp/validation/XMLSchemaFactory.java Fri Jul 25 09:44:53 2014 +0000 @@ -452,7 +452,8 @@ } private void propagateFeatures(AbstractXMLSchema schema) { - schema.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, fSecurityManager != null); + schema.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, + (fSecurityManager != null && fSecurityManager.isSecureProcessing())); schema.setFeature(Constants.ORACLE_FEATURE_SERVICE_MECHANISM, fUseServicesMechanism); String[] features = fXMLSchemaLoader.getRecognizedFeatures(); for (int i = 0; i < features.length; ++i) {
--- a/jaxp/src/com/sun/org/apache/xerces/internal/utils/ObjectFactory.java Thu Jul 24 09:15:38 2014 +0200 +++ b/jaxp/src/com/sun/org/apache/xerces/internal/utils/ObjectFactory.java Fri Jul 25 09:44:53 2014 +0000 @@ -38,7 +38,8 @@ // // Constants // - private static final String DEFAULT_INTERNAL_CLASSES = "com.sun.org.apache."; + private static final String JAXP_INTERNAL = "com.sun.org.apache"; + private static final String STAX_INTERNAL = "com.sun.xml.internal"; /** Set to true for debugging */ private static final boolean DEBUG = isDebugEnabled(); @@ -174,12 +175,8 @@ public static Class findProviderClass(String className, boolean doFallback) throws ClassNotFoundException, ConfigurationError { - if (System.getSecurityManager()!=null) { - return Class.forName(className); - } else { - return findProviderClass (className, + return findProviderClass (className, findClassLoader (), doFallback); - } } /** * Find a Class using the specified ClassLoader @@ -192,7 +189,8 @@ //restrict the access to package as speicified in java.security policy SecurityManager security = System.getSecurityManager(); if (security != null) { - if (className.startsWith(DEFAULT_INTERNAL_CLASSES)) { + if (className.startsWith(JAXP_INTERNAL) || + className.startsWith(STAX_INTERNAL)) { cl = null; } else { final int lastDot = className.lastIndexOf("."); @@ -204,7 +202,7 @@ Class providerClass; if (cl == null) { //use the bootstrap ClassLoader. - providerClass = Class.forName(className); + providerClass = Class.forName(className, false, ObjectFactory.class.getClassLoader()); } else { try { providerClass = cl.loadClass(className);
--- a/jaxp/src/com/sun/org/apache/xerces/internal/utils/XMLLimitAnalyzer.java Thu Jul 24 09:15:38 2014 +0200 +++ b/jaxp/src/com/sun/org/apache/xerces/internal/utils/XMLLimitAnalyzer.java Fri Jul 25 09:44:53 2014 +0000 @@ -132,6 +132,10 @@ totalValue[index] += value; return; } + if (index == Limit.MAX_ELEMENT_DEPTH_LIMIT.ordinal()) { + totalValue[index] = value; + return; + } Map<String, Integer> cache; if (caches[index] == null) {
--- a/jaxp/src/com/sun/org/apache/xerces/internal/utils/XMLSecurityManager.java Thu Jul 24 09:15:38 2014 +0200 +++ b/jaxp/src/com/sun/org/apache/xerces/internal/utils/XMLSecurityManager.java Fri Jul 25 09:44:53 2014 +0000 @@ -66,7 +66,8 @@ ELEMENT_ATTRIBUTE_LIMIT(Constants.JDK_ELEMENT_ATTRIBUTE_LIMIT, Constants.SP_ELEMENT_ATTRIBUTE_LIMIT, 0, 10000), TOTAL_ENTITY_SIZE_LIMIT(Constants.JDK_TOTAL_ENTITY_SIZE_LIMIT, Constants.SP_TOTAL_ENTITY_SIZE_LIMIT, 0, 50000000), GENERAL_ENTITY_SIZE_LIMIT(Constants.JDK_GENERAL_ENTITY_SIZE_LIMIT, Constants.SP_GENERAL_ENTITY_SIZE_LIMIT, 0, 0), - PARAMETER_ENTITY_SIZE_LIMIT(Constants.JDK_PARAMETER_ENTITY_SIZE_LIMIT, Constants.SP_PARAMETER_ENTITY_SIZE_LIMIT, 0, 1000000); + PARAMETER_ENTITY_SIZE_LIMIT(Constants.JDK_PARAMETER_ENTITY_SIZE_LIMIT, Constants.SP_PARAMETER_ENTITY_SIZE_LIMIT, 0, 1000000), + MAX_ELEMENT_DEPTH_LIMIT(Constants.JDK_MAX_ELEMENT_DEPTH, Constants.SP_MAX_ELEMENT_DEPTH, 0, 0); final String apiProperty; final String systemProperty; @@ -429,9 +430,10 @@ return false; } - if (index==Limit.ELEMENT_ATTRIBUTE_LIMIT.ordinal() || - index==Limit.ENTITY_EXPANSION_LIMIT.ordinal() || - index==Limit.TOTAL_ENTITY_SIZE_LIMIT.ordinal()) { + if (index == Limit.ELEMENT_ATTRIBUTE_LIMIT.ordinal() || + index == Limit.ENTITY_EXPANSION_LIMIT.ordinal() || + index == Limit.TOTAL_ENTITY_SIZE_LIMIT.ordinal() || + index == Limit.MAX_ELEMENT_DEPTH_LIMIT.ordinal()) { return (limitAnalyzer.getTotalValue(index) > values[index]); } else { return (limitAnalyzer.getValue(index) > values[index]);
--- a/jaxws/.hgtags Thu Jul 24 09:15:38 2014 +0200 +++ b/jaxws/.hgtags Fri Jul 25 09:44:53 2014 +0000 @@ -268,3 +268,4 @@ 6a9f8ff45c04a172df446a418c586da6a86564d5 jdk9-b20 4a099451fd7e17b6cc4772fe9547907576a45b6f jdk9-b21 7f5e5902cde75fd9335c52f469491f061fe0239e jdk9-b22 +ce19e0403ec8a80223cc47320c905b2a4d45881d jdk9-b23
--- a/jaxws/src/share/jaxws_classes/com/sun/tools/internal/xjc/model/nav/Utils.java Thu Jul 24 09:15:38 2014 +0200 +++ b/jaxws/src/share/jaxws_classes/com/sun/tools/internal/xjc/model/nav/Utils.java Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2014, 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 @@ -31,6 +31,8 @@ import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Type; +import java.security.AccessController; +import java.security.PrivilegedAction; import java.util.logging.Level; import java.util.logging.Logger; @@ -38,22 +40,32 @@ * Utils class. * Has *package private* access to avoid inappropriate usage. */ -/* package */ final class Utils { +final class Utils { private static final Logger LOGGER = Logger.getLogger(Utils.class.getName()); /** * static ReflectionNavigator field to avoid usage of reflection every time we use it. */ - /* package */ static final Navigator<Type, Class, Field, Method> REFLECTION_NAVIGATOR; + static final Navigator<Type, Class, Field, Method> REFLECTION_NAVIGATOR; static { // we statically initializing REFLECTION_NAVIGATOR property - Class refNav = null; try { - refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator"); + Class refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator"); //noinspection unchecked - Method getInstance = refNav.getDeclaredMethod("getInstance"); - getInstance.setAccessible(true); + final Method getInstance = refNav.getDeclaredMethod("getInstance"); + + // requires accessClassInPackage privilege + AccessController.doPrivileged( + new PrivilegedAction<Object>() { + @Override + public Object run() { + getInstance.setAccessible(true); + return null; + } + } + ); + //noinspection unchecked REFLECTION_NAVIGATOR = (Navigator<Type, Class, Field, Method>) getInstance.invoke(null); } catch (ClassNotFoundException e) {
--- a/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/api/Utils.java Thu Jul 24 09:15:38 2014 +0200 +++ b/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/api/Utils.java Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2014, 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 @@ -31,6 +31,8 @@ import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Type; +import java.security.AccessController; +import java.security.PrivilegedAction; import java.util.logging.Level; import java.util.logging.Logger; @@ -38,22 +40,32 @@ * Utils class. * Has *package private* access to avoid inappropriate usage. */ -/* package */ final class Utils { +final class Utils { private static final Logger LOGGER = Logger.getLogger(Utils.class.getName()); /** * static ReflectionNavigator field to avoid usage of reflection every time we use it. */ - /* package */ static final Navigator<Type, Class, Field, Method> REFLECTION_NAVIGATOR; + static final Navigator<Type, Class, Field, Method> REFLECTION_NAVIGATOR; static { // we statically initializing REFLECTION_NAVIGATOR property - Class refNav = null; try { - refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator"); + Class refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator"); //noinspection unchecked - Method getInstance = refNav.getDeclaredMethod("getInstance"); - getInstance.setAccessible(true); + final Method getInstance = refNav.getDeclaredMethod("getInstance"); + + // requires accessClassInPackage privilege + AccessController.doPrivileged( + new PrivilegedAction<Object>() { + @Override + public Object run() { + getInstance.setAccessible(true); + return null; + } + } + ); + //noinspection unchecked REFLECTION_NAVIGATOR = (Navigator<Type, Class, Field, Method>) getInstance.invoke(null); } catch (ClassNotFoundException e) {
--- a/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/model/impl/Utils.java Thu Jul 24 09:15:38 2014 +0200 +++ b/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/model/impl/Utils.java Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2014, 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 @@ -31,6 +31,8 @@ import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Type; +import java.security.AccessController; +import java.security.PrivilegedAction; import java.util.logging.Level; import java.util.logging.Logger; @@ -38,22 +40,32 @@ * Utils class. * Has *package private* access to avoid inappropriate usage. */ -/* package */ final class Utils { +final class Utils { private static final Logger LOGGER = Logger.getLogger(Utils.class.getName()); /** * static ReflectionNavigator field to avoid usage of reflection every time we use it. */ - /* package */ static final Navigator<Type, Class, Field, Method> REFLECTION_NAVIGATOR; + static final Navigator<Type, Class, Field, Method> REFLECTION_NAVIGATOR; static { // we statically initializing REFLECTION_NAVIGATOR property - Class refNav = null; try { - refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator"); + Class refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator"); //noinspection unchecked - Method getInstance = refNav.getDeclaredMethod("getInstance"); - getInstance.setAccessible(true); + final Method getInstance = refNav.getDeclaredMethod("getInstance"); + + // requires accessClassInPackage privilege + AccessController.doPrivileged( + new PrivilegedAction<Object>() { + @Override + public Object run() { + getInstance.setAccessible(true); + return null; + } + } + ); + //noinspection unchecked REFLECTION_NAVIGATOR = (Navigator<Type, Class, Field, Method>) getInstance.invoke(null); } catch (ClassNotFoundException e) {
--- a/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/Utils.java Thu Jul 24 09:15:38 2014 +0200 +++ b/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/Utils.java Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2014, 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 @@ -31,6 +31,8 @@ import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Type; +import java.security.AccessController; +import java.security.PrivilegedAction; import java.util.logging.Level; import java.util.logging.Logger; @@ -38,22 +40,32 @@ * Utils class. * Has *package private* access to avoid inappropriate usage. */ -/* package */ final class Utils { +final class Utils { private static final Logger LOGGER = Logger.getLogger(Utils.class.getName()); /** * static ReflectionNavigator field to avoid usage of reflection every time we use it. */ - /* package */ static final Navigator<Type, Class, Field, Method> REFLECTION_NAVIGATOR; + static final Navigator<Type, Class, Field, Method> REFLECTION_NAVIGATOR; static { // we statically initializing REFLECTION_NAVIGATOR property - Class refNav = null; try { - refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator"); + Class refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator"); //noinspection unchecked - Method getInstance = refNav.getDeclaredMethod("getInstance"); - getInstance.setAccessible(true); + final Method getInstance = refNav.getDeclaredMethod("getInstance"); + + // requires accessClassInPackage privilege + AccessController.doPrivileged( + new PrivilegedAction<Object>() { + @Override + public Object run() { + getInstance.setAccessible(true); + return null; + } + } + ); + //noinspection unchecked REFLECTION_NAVIGATOR = (Navigator<Type, Class, Field, Method>) getInstance.invoke(null); } catch (ClassNotFoundException e) {
--- a/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/property/Utils.java Thu Jul 24 09:15:38 2014 +0200 +++ b/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/property/Utils.java Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2014, 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 @@ -31,6 +31,8 @@ import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Type; +import java.security.AccessController; +import java.security.PrivilegedAction; import java.util.logging.Level; import java.util.logging.Logger; @@ -38,22 +40,32 @@ * Utils class. * Has *package private* access to avoid inappropriate usage. */ -/* package */ final class Utils { +final class Utils { private static final Logger LOGGER = Logger.getLogger(Utils.class.getName()); /** * static ReflectionNavigator field to avoid usage of reflection every time we use it. */ - /* package */ static final Navigator<Type, Class, Field, Method> REFLECTION_NAVIGATOR; + static final Navigator<Type, Class, Field, Method> REFLECTION_NAVIGATOR; static { // we statically initializing REFLECTION_NAVIGATOR property - Class refNav = null; try { - refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator"); + Class refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator"); //noinspection unchecked - Method getInstance = refNav.getDeclaredMethod("getInstance"); - getInstance.setAccessible(true); + final Method getInstance = refNav.getDeclaredMethod("getInstance"); + + // requires accessClassInPackage privilege + AccessController.doPrivileged( + new PrivilegedAction<Object>() { + @Override + public Object run() { + getInstance.setAccessible(true); + return null; + } + } + ); + //noinspection unchecked REFLECTION_NAVIGATOR = (Navigator<Type, Class, Field, Method>) getInstance.invoke(null); } catch (ClassNotFoundException e) {
--- a/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/reflect/Utils.java Thu Jul 24 09:15:38 2014 +0200 +++ b/jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind/v2/runtime/reflect/Utils.java Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2014, 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 @@ -31,6 +31,8 @@ import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Type; +import java.security.AccessController; +import java.security.PrivilegedAction; import java.util.logging.Level; import java.util.logging.Logger; @@ -38,22 +40,32 @@ * Utils class. * Has *package private* access to avoid inappropriate usage. */ -/* package */ final class Utils { +final class Utils { private static final Logger LOGGER = Logger.getLogger(Utils.class.getName()); /** * static ReflectionNavigator field to avoid usage of reflection every time we use it. */ - /* package */ static final Navigator<Type, Class, Field, Method> REFLECTION_NAVIGATOR; + static final Navigator<Type, Class, Field, Method> REFLECTION_NAVIGATOR; static { // we statically initializing REFLECTION_NAVIGATOR property - Class refNav = null; try { - refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator"); + Class refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator"); //noinspection unchecked - Method getInstance = refNav.getDeclaredMethod("getInstance"); - getInstance.setAccessible(true); + final Method getInstance = refNav.getDeclaredMethod("getInstance"); + + // requires accessClassInPackage privilege + AccessController.doPrivileged( + new PrivilegedAction<Object>() { + @Override + public Object run() { + getInstance.setAccessible(true); + return null; + } + } + ); + //noinspection unchecked REFLECTION_NAVIGATOR = (Navigator<Type, Class, Field, Method>) getInstance.invoke(null); } catch (ClassNotFoundException e) {
--- a/jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/model/Utils.java Thu Jul 24 09:15:38 2014 +0200 +++ b/jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/model/Utils.java Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2014, 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 @@ -31,6 +31,8 @@ import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Type; +import java.security.AccessController; +import java.security.PrivilegedAction; import java.util.logging.Level; import java.util.logging.Logger; @@ -41,22 +43,32 @@ * * Has *package private* access to avoid inappropriate usage. */ -/* package */ final class Utils { +final class Utils { private static final Logger LOGGER = Logger.getLogger(Utils.class.getName()); /** * static ReflectionNavigator field to avoid usage of reflection every time we use it. */ - /* package */ static final Navigator<Type, Class, Field, Method> REFLECTION_NAVIGATOR; + static final Navigator<Type, Class, Field, Method> REFLECTION_NAVIGATOR; static { // we statically initializing REFLECTION_NAVIGATOR property - Class refNav = null; try { - refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator"); + Class refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator"); //noinspection unchecked - Method getInstance = refNav.getDeclaredMethod("getInstance"); - getInstance.setAccessible(true); + final Method getInstance = refNav.getDeclaredMethod("getInstance"); + + // requires accessClassInPackage privilege + AccessController.doPrivileged( + new PrivilegedAction<Object>() { + @Override + public Object run() { + getInstance.setAccessible(true); + return null; + } + } + ); + //noinspection unchecked REFLECTION_NAVIGATOR = (Navigator<Type, Class, Field, Method>) getInstance.invoke(null); } catch (ClassNotFoundException e) {
--- a/jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/spi/db/Utils.java Thu Jul 24 09:15:38 2014 +0200 +++ b/jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws/spi/db/Utils.java Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2014, 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 @@ -31,6 +31,8 @@ import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Type; +import java.security.AccessController; +import java.security.PrivilegedAction; import java.util.logging.Level; import java.util.logging.Logger; @@ -41,22 +43,32 @@ * * Has *package private* access to avoid inappropriate usage. */ -/* package */ final class Utils { +final class Utils { private static final Logger LOGGER = Logger.getLogger(Utils.class.getName()); /** * static ReflectionNavigator field to avoid usage of reflection every time we use it. */ - /* package */ static final Navigator<Type, Class, Field, Method> REFLECTION_NAVIGATOR; + static final Navigator<Type, Class, Field, Method> REFLECTION_NAVIGATOR; static { // we statically initializing REFLECTION_NAVIGATOR property - Class refNav = null; try { - refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator"); + Class refNav = Class.forName("com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator"); //noinspection unchecked - Method getInstance = refNav.getDeclaredMethod("getInstance"); - getInstance.setAccessible(true); + final Method getInstance = refNav.getDeclaredMethod("getInstance"); + + // requires accessClassInPackage privilege + AccessController.doPrivileged( + new PrivilegedAction<Object>() { + @Override + public Object run() { + getInstance.setAccessible(true); + return null; + } + } + ); + //noinspection unchecked REFLECTION_NAVIGATOR = (Navigator<Type, Class, Field, Method>) getInstance.invoke(null); } catch (ClassNotFoundException e) {
--- a/jdk/.hgtags Thu Jul 24 09:15:38 2014 +0200 +++ b/jdk/.hgtags Fri Jul 25 09:44:53 2014 +0000 @@ -265,3 +265,4 @@ f87c5be90e01a7ffb47947108eb3e0b0b1920880 jdk9-b20 2df45ac1bf491278f38c12e0dfbeebadb6c54c8c jdk9-b21 85bcf0f99edc08873614afbe5a5563e13ce13c83 jdk9-b22 +9febf9dbc0a4b15323f2dbd29931cfbf086332b4 jdk9-b23
--- a/jdk/make/lib/Awt2dLibraries.gmk Thu Jul 24 09:15:38 2014 +0200 +++ b/jdk/make/lib/Awt2dLibraries.gmk Fri Jul 25 09:44:53 2014 +0000 @@ -1358,7 +1358,7 @@ ifeq ($(OPENJDK_TARGET_OS), macosx) LIBAWT_LWAWT_FILES := \ - awt.m \ + AWT_debug.m \ ApplicationDelegate.m \ CFRetainedResource.m \ CGLGraphicsConfig.m \
--- a/jdk/make/mapfiles/libsplashscreen/mapfile-vers Thu Jul 24 09:15:38 2014 +0200 +++ b/jdk/make/mapfiles/libsplashscreen/mapfile-vers Fri Jul 25 09:44:53 2014 +0000 @@ -35,6 +35,7 @@ Java_java_awt_SplashScreen__1getImageFileName; Java_java_awt_SplashScreen__1getImageJarName; Java_java_awt_SplashScreen__1setImageData; + Java_java_awt_SplashScreen__1getScaleFactor; SplashLoadMemory; SplashLoadFile;
--- a/jdk/make/mapfiles/libsunec/mapfile-vers Thu Jul 24 09:15:38 2014 +0200 +++ b/jdk/make/mapfiles/libsunec/mapfile-vers Fri Jul 25 09:44:53 2014 +0000 @@ -28,10 +28,9 @@ SUNWprivate_1.1 { global: Java_sun_security_ec_ECKeyPairGenerator_generateECKeyPair; - Java_sun_security_ec_ECKeyPairGenerator_getEncodedBytes; - Java_sun_security_ec_ECDSASignature_signDigest; - Java_sun_security_ec_ECDSASignature_verifySignedDigest; - Java_sun_security_ec_ECDHKeyAgreement_deriveKey; + Java_sun_security_ec_ECDSASignature_signDigest; + Java_sun_security_ec_ECDSASignature_verifySignedDigest; + Java_sun_security_ec_ECDHKeyAgreement_deriveKey; local: *; };
--- a/jdk/make/profile-includes.txt Thu Jul 24 09:15:38 2014 +0200 +++ b/jdk/make/profile-includes.txt Fri Jul 25 09:44:53 2014 +0000 @@ -71,6 +71,7 @@ rt.jar \ security/US_export_policy.jar \ security/blacklist \ + security/blacklisted.certs \ security/cacerts \ security/java.policy \ security/java.security \
--- a/jdk/src/macosx/bin/java_md_macosx.c Thu Jul 24 09:15:38 2014 +0200 +++ b/jdk/src/macosx/bin/java_md_macosx.c Fri Jul 25 09:44:53 2014 +0000 @@ -994,7 +994,7 @@ sameThread = JNI_TRUE; // Set a variable that tells us we started on the main thread. - // This is used by the AWT during startup. (See awt.m) + // This is used by the AWT during startup. (See LWCToolkit.m) char envVar[80]; snprintf(envVar, sizeof(envVar), "JAVA_STARTED_ON_FIRST_THREAD_%d", getpid()); setenv(envVar, "1", 1);
--- a/jdk/src/macosx/classes/com/apple/eawt/Application.java Thu Jul 24 09:15:38 2014 +0200 +++ b/jdk/src/macosx/classes/com/apple/eawt/Application.java Fri Jul 25 09:44:53 2014 +0000 @@ -58,15 +58,8 @@ static Application sApplication = null; static { - java.security.AccessController.doPrivileged( - new java.security.PrivilegedAction<Void>() { - public Void run() { - System.loadLibrary("awt"); - return null; - } - }); - checkSecurity(); + Toolkit.getDefaultToolkit(); // Start AppKit if (!Beans.isDesignTime()) { nativeInitializeApplicationDelegate(); }
--- a/jdk/src/macosx/classes/com/apple/laf/AquaComboBoxPopup.java Thu Jul 24 09:15:38 2014 +0200 +++ b/jdk/src/macosx/classes/com/apple/laf/AquaComboBoxPopup.java Fri Jul 25 09:44:53 2014 +0000 @@ -121,10 +121,6 @@ public void show() { final int startItemCount = comboBox.getItemCount(); - if (startItemCount == 0) { - return; - } - final Rectangle popupBounds = adjustPopupAndGetBounds(); if (popupBounds == null) return; // null means don't show
--- a/jdk/src/macosx/classes/com/apple/laf/AquaMenuBarUI.java Thu Jul 24 09:15:38 2014 +0200 +++ b/jdk/src/macosx/classes/com/apple/laf/AquaMenuBarUI.java Fri Jul 25 09:44:53 2014 +0000 @@ -26,11 +26,14 @@ package com.apple.laf; import java.awt.*; +import java.security.AccessController; import javax.swing.*; import javax.swing.plaf.ComponentUI; import javax.swing.plaf.basic.BasicMenuBarUI; +import sun.lwawt.macosx.LWCToolkit; +import sun.security.action.GetBooleanAction; import sun.security.action.GetPropertyAction; // MenuBar implementation for Mac L&F @@ -131,28 +134,20 @@ ScreenMenuBar fScreenMenuBar; boolean useScreenMenuBar = getScreenMenuBarProperty(); - private static String getPrivSysProp(final String propName) { - return java.security.AccessController.doPrivileged(new GetPropertyAction(propName)); - } - static boolean getScreenMenuBarProperty() { - final String props[] = new String[]{""}; - - boolean useScreenMenuBar = false; - try { - props[0] = getPrivSysProp(AquaLookAndFeel.sPropertyPrefix + "useScreenMenuBar"); - - if (props[0] != null && props[0].equals("true")) useScreenMenuBar = true; - else { - props[0] = getPrivSysProp(AquaLookAndFeel.sOldPropertyPrefix + "useScreenMenuBar"); - - if (props[0] != null && props[0].equals("true")) { - System.err.println(AquaLookAndFeel.sOldPropertyPrefix + "useScreenMenuBar has been deprecated. Please switch to " + AquaLookAndFeel.sPropertyPrefix + "useScreenMenuBar"); - useScreenMenuBar = true; - } - } - } catch(final Throwable t) { }; - - return useScreenMenuBar; + // Do not allow AWT to set the screen menu bar if it's embedded in another UI toolkit + if (LWCToolkit.isEmbedded()) return false; + if (AccessController.doPrivileged( + new GetBooleanAction(AquaLookAndFeel.sPropertyPrefix + "useScreenMenuBar"))) { + return true; + } + if (AccessController.doPrivileged( + new GetBooleanAction(AquaLookAndFeel.sOldPropertyPrefix + "useScreenMenuBar"))) { + System.err.println(AquaLookAndFeel.sOldPropertyPrefix + + "useScreenMenuBar has been deprecated. Please switch to " + + AquaLookAndFeel.sPropertyPrefix + "useScreenMenuBar"); + return true; + } + return false; } }
--- a/jdk/src/macosx/classes/sun/awt/CGraphicsEnvironment.java Thu Jul 24 09:15:38 2014 +0200 +++ b/jdk/src/macosx/classes/sun/awt/CGraphicsEnvironment.java Fri Jul 25 09:44:53 2014 +0000 @@ -40,9 +40,6 @@ */ public final class CGraphicsEnvironment extends SunGraphicsEnvironment { - // Global initialization of the Cocoa runtime. - private static native void initCocoa(); - /** * Fetch an array of all valid CoreGraphics display identifiers. */ @@ -60,21 +57,8 @@ public static void init() { } static { - java.security.AccessController.doPrivileged(new java.security.PrivilegedAction<Void>() { - public Void run() { - System.loadLibrary("awt"); - return null; - } - }); - - java.security.AccessController.doPrivileged(new java.security.PrivilegedAction<Void>() { - public Void run() { - if (isHeadless()) return null; - initCocoa(); - return null; - } - }); - + // Load libraries and initialize the Toolkit. + Toolkit.getDefaultToolkit(); // Install the correct surface manager factory. SurfaceManagerFactory.setInstance(new MacosxSurfaceManagerFactory()); }
--- a/jdk/src/macosx/classes/sun/font/CFontConfiguration.java Thu Jul 24 09:15:38 2014 +0200 +++ b/jdk/src/macosx/classes/sun/font/CFontConfiguration.java Fri Jul 25 09:44:53 2014 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014, 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 @@ -106,6 +106,6 @@ @Override protected void initReorderMap() { - reorderMap = new HashMap(); + reorderMap = new HashMap<>(); } }
--- a/jdk/src/macosx/classes/sun/lwawt/macosx/LWCToolkit.java Thu Jul 24 09:15:38 2014 +0200 +++ b/jdk/src/macosx/classes/sun/lwawt/macosx/LWCToolkit.java Fri Jul 25 09:44:53 2014 +0000 @@ -44,6 +44,7 @@ import sun.awt.*; import sun.awt.datatransfer.DataTransferer; +import sun.awt.util.ThreadGroupUtils; import sun.java2d.opengl.OGLRenderQueue; import sun.lwawt.*; import sun.lwawt.LWWindowPeer.PeerType; @@ -70,7 +71,7 @@ private static final int BUTTONS = 5; private static native void initIDs(); - + private static native void initAppkit(ThreadGroup appKitThreadGroup, boolean headless); private static CInputMethodDescriptor sInputMethodDescriptor; static { @@ -119,6 +120,7 @@ areExtraMouseButtonsEnabled = Boolean.parseBoolean(System.getProperty("sun.awt.enableExtraMouseButtons", "true")); //set system property if not yet assigned System.setProperty("sun.awt.enableExtraMouseButtons", ""+areExtraMouseButtonsEnabled); + initAppkit(ThreadGroupUtils.getRootThreadGroup(), GraphicsEnvironment.isHeadless()); } /* @@ -166,7 +168,7 @@ // This is only called from native code. static void systemColorsChanged() { EventQueue.invokeLater(() -> { - AccessController.doPrivileged ((PrivilegedAction<Object>) () -> { + AccessController.doPrivileged( (PrivilegedAction<Object>) () -> { AWTAccessor.getSystemColorAccessor().updateSystemColors(); return null; }); @@ -790,6 +792,13 @@ */ native boolean isApplicationActive(); + /** + * Returns true if AWT toolkit is embedded, false otherwise. + * + * @return true if AWT toolkit is embedded, false otherwise + */ + public static native boolean isEmbedded(); + /************************ * Native methods section ************************/
--- a/jdk/src/macosx/native/sun/awt/CGraphicsEnv.m Thu Jul 24 09:15:38 2014 +0200 +++ b/jdk/src/macosx/native/sun/awt/CGraphicsEnv.m Fri Jul 25 09:44:53 2014 +0000 @@ -30,24 +30,6 @@ #import "AWT_debug.h" -/* - * Class: sun_awt_CGraphicsEnvironment - * Method: initCocoa - * Signature: ()V - */ -JNIEXPORT void JNICALL -Java_sun_awt_CGraphicsEnvironment_initCocoa -(JNIEnv *env, jclass self) -{ -JNF_COCOA_ENTER(env); - - // Inform Cocoa that we're multi-threaded. - // Creating a short-lived NSThread is the recommended way of doing so. - [NSThread detachNewThreadSelector:@selector(self) toTarget:[NSObject class] withObject:nil]; - -JNF_COCOA_EXIT(env); -} - #define MAX_DISPLAYS 64 /*
--- a/jdk/src/macosx/native/sun/awt/LWCToolkit.m Thu Jul 24 09:15:38 2014 +0200 +++ b/jdk/src/macosx/native/sun/awt/LWCToolkit.m Fri Jul 25 09:44:53 2014 +0000 @@ -24,7 +24,12 @@ */ #import <dlfcn.h> +#import <pthread.h> +#import <objc/runtime.h> +#import <Cocoa/Cocoa.h> +#import <Security/AuthSession.h> #import <JavaNativeFoundation/JavaNativeFoundation.h> +#import <JavaRuntimeSupport/JavaRuntimeSupport.h> #include "jni_util.h" #import "CMenuBar.h" @@ -34,6 +39,8 @@ #import "AWT_debug.h" #import "CSystemColors.h" #import "NSApplicationAWT.h" +#import "PropertiesUtilities.h" +#import "ApplicationDelegate.h" #import "sun_lwawt_macosx_LWCToolkit.h" @@ -42,6 +49,20 @@ int gNumberOfButtons; jint* gButtonDownMasks; +// Indicates that the app has been started with -XstartOnFirstThread +// (directly or via WebStart settings), and AWT should not run its +// own event loop in this mode. Even if a loop isn't running yet, +// we expect an embedder (e.g. SWT) to start it some time later. +static BOOL forceEmbeddedMode = NO; + +// Indicates if awt toolkit is embedded into another UI toolkit +static BOOL isEmbedded = NO; + +// This is the data necessary to have JNI_OnLoad wait for AppKit to start. +static BOOL sAppKitStarted = NO; +static pthread_mutex_t sAppKitStarted_mutex = PTHREAD_MUTEX_INITIALIZER; +static pthread_cond_t sAppKitStarted_cv = PTHREAD_COND_INITIALIZER; + @implementation AWTToolkit static long eventCount; @@ -115,6 +136,232 @@ } @end +void setBusy(BOOL busy) { + AWT_ASSERT_APPKIT_THREAD; + + JNIEnv *env = [ThreadUtilities getJNIEnv]; + static JNF_CLASS_CACHE(jc_AWTAutoShutdown, "sun/awt/AWTAutoShutdown"); + + if (busy) { + static JNF_STATIC_MEMBER_CACHE(jm_notifyBusyMethod, jc_AWTAutoShutdown, "notifyToolkitThreadBusy", "()V"); + JNFCallStaticVoidMethod(env, jm_notifyBusyMethod); + } else { + static JNF_STATIC_MEMBER_CACHE(jm_notifyFreeMethod, jc_AWTAutoShutdown, "notifyToolkitThreadFree", "()V"); + JNFCallStaticVoidMethod(env, jm_notifyFreeMethod); + } +} + +static void setUpAWTAppKit(BOOL installObservers) +{ + if (installObservers) { + AWT_STARTUP_LOG(@"Setting up busy observers"); + + // Add CFRunLoopObservers to call into AWT so that AWT knows that the + // AWT thread (which is the AppKit main thread) is alive. This way AWT + // will not automatically shutdown. + CFRunLoopObserverRef busyObserver = CFRunLoopObserverCreateWithHandler( + NULL, // CFAllocator + kCFRunLoopAfterWaiting, // CFOptionFlags + true, // repeats + NSIntegerMax, // order + ^(CFRunLoopObserverRef observer, CFRunLoopActivity activity) { + setBusy(YES); + }); + + CFRunLoopObserverRef notBusyObserver = CFRunLoopObserverCreateWithHandler( + NULL, // CFAllocator + kCFRunLoopBeforeWaiting, // CFOptionFlags + true, // repeats + NSIntegerMin, // order + ^(CFRunLoopObserverRef observer, CFRunLoopActivity activity) { + setBusy(NO); + }); + + CFRunLoopRef runLoop = [[NSRunLoop currentRunLoop] getCFRunLoop]; + CFRunLoopAddObserver(runLoop, busyObserver, kCFRunLoopDefaultMode); + CFRunLoopAddObserver(runLoop, notBusyObserver, kCFRunLoopDefaultMode); + + CFRelease(busyObserver); + CFRelease(notBusyObserver); + + setBusy(YES); + } + + JNIEnv* env = [ThreadUtilities getJNIEnv]; + static JNF_CLASS_CACHE(jc_LWCToolkit, "sun/lwawt/macosx/LWCToolkit"); + static JNF_STATIC_MEMBER_CACHE(jsm_installToolkitThreadInJava, jc_LWCToolkit, "installToolkitThreadInJava", "()V"); + JNFCallStaticVoidMethod(env, jsm_installToolkitThreadInJava); +} + +BOOL isSWTInWebStart(JNIEnv* env) { + NSString *swtWebStart = [PropertiesUtilities javaSystemPropertyForKey:@"com.apple.javaws.usingSWT" withEnv:env]; + return [@"true" isCaseInsensitiveLike:swtWebStart]; +} + +static void AWT_NSUncaughtExceptionHandler(NSException *exception) { + NSLog(@"Apple AWT Internal Exception: %@", [exception description]); +} + +@interface AWTStarter : NSObject ++ (void)start:(BOOL)headless; ++ (void)starter:(BOOL)onMainThread headless:(BOOL)headless; ++ (void)appKitIsRunning:(id)arg; +@end + +@implementation AWTStarter + ++ (BOOL) isConnectedToWindowServer { + SecuritySessionId session_id; + SessionAttributeBits session_info; + OSStatus status = SessionGetInfo(callerSecuritySession, &session_id, &session_info); + if (status != noErr) return NO; + if (!(session_info & sessionHasGraphicAccess)) return NO; + return YES; +} + ++ (BOOL) markAppAsDaemon { + id jrsAppKitAWTClass = objc_getClass("JRSAppKitAWT"); + SEL markAppSel = @selector(markAppIsDaemon); + if (![jrsAppKitAWTClass respondsToSelector:markAppSel]) return NO; + return [jrsAppKitAWTClass performSelector:markAppSel] ? YES : NO; +} + ++ (void)appKitIsRunning:(id)arg { + AWT_ASSERT_APPKIT_THREAD; + AWT_STARTUP_LOG(@"About to message AppKit started"); + + // Signal that AppKit has started (or is already running). + pthread_mutex_lock(&sAppKitStarted_mutex); + sAppKitStarted = YES; + pthread_cond_signal(&sAppKitStarted_cv); + pthread_mutex_unlock(&sAppKitStarted_mutex); + + AWT_STARTUP_LOG(@"Finished messaging AppKit started"); +} + ++ (void)start:(BOOL)headless +{ + // onMainThread is NOT the same at SWT mode! + // If the JVM was started on the first thread for SWT, but the SWT loads the AWT on a secondary thread, + // onMainThread here will be false but SWT mode will be true. If we are currently on the main thread, we don't + // need to throw AWT startup over to another thread. + BOOL onMainThread = [NSThread isMainThread]; + + NSString* msg = [NSString stringWithFormat:@"+[AWTStarter start headless:%d] { onMainThread:%d }", headless, onMainThread]; + AWT_STARTUP_LOG(msg); + + if (!headless) + { + // Listen for the NSApp to start. This indicates that JNI_OnLoad can proceed. + // It must wait because there is a chance that another java thread will grab + // the AppKit lock before the +[NSApplication sharedApplication] returns. + // See <rdar://problem/3492666> for an example. + [[NSNotificationCenter defaultCenter] addObserver:[AWTStarter class] + selector:@selector(appKitIsRunning:) + name:NSApplicationDidFinishLaunchingNotification + object:nil]; + + AWT_STARTUP_LOG(@"+[AWTStarter start:::]: registered NSApplicationDidFinishLaunchingNotification"); + } + + [ThreadUtilities performOnMainThreadWaiting:NO block:^() { + [AWTStarter starter:onMainThread headless:headless]; + }]; + + + if (!headless && !onMainThread) { + + AWT_STARTUP_LOG(@"about to wait on AppKit startup mutex"); + + // Wait here for AppKit to have started (or for AWT to have been loaded into + // an already running NSApplication). + pthread_mutex_lock(&sAppKitStarted_mutex); + while (sAppKitStarted == NO) { + pthread_cond_wait(&sAppKitStarted_cv, &sAppKitStarted_mutex); + } + pthread_mutex_unlock(&sAppKitStarted_mutex); + + // AWT gets here AFTER +[AWTStarter appKitIsRunning:] is called. + AWT_STARTUP_LOG(@"got out of the AppKit startup mutex"); + } + + if (!headless) { + // Don't set the delegate until the NSApplication has been created and + // its finishLaunching has initialized it. + // ApplicationDelegate is the support code for com.apple.eawt. + [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ + id<NSApplicationDelegate> delegate = [ApplicationDelegate sharedDelegate]; + if (delegate != nil) { + OSXAPP_SetApplicationDelegate(delegate); + } + }]; + } +} + ++ (void)starter:(BOOL)wasOnMainThread headless:(BOOL)headless { + NSAutoreleasePool *pool = [NSAutoreleasePool new]; + // Add the exception handler of last resort + NSSetUncaughtExceptionHandler(AWT_NSUncaughtExceptionHandler); + + // Headless mode trumps either ordinary AWT or SWT-in-AWT mode. Declare us a daemon and return. + if (headless) { + // Note that we don't install run loop observers in headless mode + // because we don't need them (see 7174704) + if (!forceEmbeddedMode) { + setUpAWTAppKit(false); + } + [AWTStarter markAppAsDaemon]; + return; + } + + if (forceEmbeddedMode) { + AWT_STARTUP_LOG(@"in SWT or SWT/WebStart mode"); + + // Init a default NSApplication instance instead of the NSApplicationAWT. + // Note that [NSApp isRunning] will return YES after that, though + // this behavior isn't specified anywhere. We rely on that. + NSApplicationLoad(); + } + + // This will create a NSApplicationAWT for standalone AWT programs, unless there is + // already a NSApplication instance. If there is already a NSApplication instance, + // and -[NSApplication isRunning] returns YES, AWT is embedded inside another + // AppKit Application. + NSApplication *app = [NSApplicationAWT sharedApplication]; + isEmbedded = ![NSApp isKindOfClass:[NSApplicationAWT class]]; + + if (!isEmbedded) { + // Install run loop observers and set the AppKit Java thread name + setUpAWTAppKit(true); + } + + // AWT gets to this point BEFORE NSApplicationDidFinishLaunchingNotification is sent. + if (![app isRunning]) { + AWT_STARTUP_LOG(@"+[AWTStarter startAWT]: ![app isRunning]"); + // This is where the AWT AppKit thread parks itself to process events. + [NSApplicationAWT runAWTLoopWithApp: app]; + } else { + // We're either embedded, or showing a splash screen + if (isEmbedded) { + AWT_STARTUP_LOG(@"running embedded"); + + // We don't track if the runloop is busy, so set it free to let AWT finish when it needs + setBusy(NO); + } else { + AWT_STARTUP_LOG(@"running after showing a splash screen"); + } + + // Signal so that JNI_OnLoad can proceed. + if (!wasOnMainThread) [AWTStarter appKitIsRunning:nil]; + + // Proceed to exit this call as there is no reason to run the NSApplication event loop. + } + + [pool drain]; +} + +@end + /* * Class: sun_lwawt_macosx_LWCToolkit * Method: nativeSyncQueue @@ -169,52 +416,6 @@ NSBeep(); // produces both sound and visual flash, if configured in System Preferences } -/* - * Class: sun_lwawt_macosx_LWCToolkit - * Method: initIDs - * Signature: ()V - */ -JNIEXPORT void JNICALL -Java_sun_lwawt_macosx_LWCToolkit_initIDs -(JNIEnv *env, jclass klass) { - // set thread names - if (![ThreadUtilities isAWTEmbedded]) { - dispatch_async(dispatch_get_main_queue(), ^(void){ - [[NSThread currentThread] setName:@"AppKit Thread"]; - JNIEnv *env = [ThreadUtilities getJNIEnv]; - static JNF_CLASS_CACHE(jc_LWCToolkit, "sun/lwawt/macosx/LWCToolkit"); - static JNF_STATIC_MEMBER_CACHE(jsm_installToolkitThreadInJava, jc_LWCToolkit, "installToolkitThreadInJava", "()V"); - JNFCallStaticVoidMethod(env, jsm_installToolkitThreadInJava); - }); - } - - gNumberOfButtons = sun_lwawt_macosx_LWCToolkit_BUTTONS; - - jclass inputEventClazz = (*env)->FindClass(env, "java/awt/event/InputEvent"); - CHECK_NULL(inputEventClazz); - jmethodID getButtonDownMasksID = (*env)->GetStaticMethodID(env, inputEventClazz, "getButtonDownMasks", "()[I"); - CHECK_NULL(getButtonDownMasksID); - jintArray obj = (jintArray)(*env)->CallStaticObjectMethod(env, inputEventClazz, getButtonDownMasksID); - jint * tmp = (*env)->GetIntArrayElements(env, obj, JNI_FALSE); - CHECK_NULL(tmp); - - gButtonDownMasks = (jint*)SAFE_SIZE_ARRAY_ALLOC(malloc, sizeof(jint), gNumberOfButtons); - if (gButtonDownMasks == NULL) { - gNumberOfButtons = 0; - (*env)->ReleaseIntArrayElements(env, obj, tmp, JNI_ABORT); - JNU_ThrowOutOfMemoryError(env, NULL); - return; - } - - int i; - for (i = 0; i < gNumberOfButtons; i++) { - gButtonDownMasks[i] = tmp[i]; - } - - (*env)->ReleaseIntArrayElements(env, obj, tmp, 0); - (*env)->DeleteLocalRef(env, obj); -} - static UInt32 RGB(NSColor *c) { c = [c colorUsingColorSpaceName:NSCalibratedRGBColorSpace]; if (c == nil) @@ -443,3 +644,95 @@ { } + +/* + * Class: sun_lwawt_macosx_LWCToolkit + * Method: initIDs + * Signature: ()V + */ +JNIEXPORT void JNICALL +Java_sun_lwawt_macosx_LWCToolkit_initIDs +(JNIEnv *env, jclass klass) { + + JNF_COCOA_ENTER(env) + + gNumberOfButtons = sun_lwawt_macosx_LWCToolkit_BUTTONS; + + jclass inputEventClazz = (*env)->FindClass(env, "java/awt/event/InputEvent"); + CHECK_NULL(inputEventClazz); + jmethodID getButtonDownMasksID = (*env)->GetStaticMethodID(env, inputEventClazz, "getButtonDownMasks", "()[I"); + CHECK_NULL(getButtonDownMasksID); + jintArray obj = (jintArray)(*env)->CallStaticObjectMethod(env, inputEventClazz, getButtonDownMasksID); + jint * tmp = (*env)->GetIntArrayElements(env, obj, JNI_FALSE); + CHECK_NULL(tmp); + + gButtonDownMasks = (jint*)SAFE_SIZE_ARRAY_ALLOC(malloc, sizeof(jint), gNumberOfButtons); + if (gButtonDownMasks == NULL) { + gNumberOfButtons = 0; + (*env)->ReleaseIntArrayElements(env, obj, tmp, JNI_ABORT); + JNU_ThrowOutOfMemoryError(env, NULL); + return; + } + + int i; + for (i = 0; i < gNumberOfButtons; i++) { + gButtonDownMasks[i] = tmp[i]; + } + + (*env)->ReleaseIntArrayElements(env, obj, tmp, 0); + (*env)->DeleteLocalRef(env, obj); + + JNF_COCOA_EXIT(env) +} + +/* + * Class: sun_lwawt_macosx_LWCToolkit + * Method: initAppkit + * Signature: (Ljava/lang/ThreadGroup;)V + */ +JNIEXPORT void JNICALL +Java_sun_lwawt_macosx_LWCToolkit_initAppkit +(JNIEnv *env, jclass klass, jobject appkitThreadGroup, jboolean headless) { + JNF_COCOA_ENTER(env) + + [ThreadUtilities setAppkitThreadGroup:(*env)->NewGlobalRef(env, appkitThreadGroup)]; + + // Launcher sets this env variable if -XstartOnFirstThread is specified + char envVar[80]; + snprintf(envVar, sizeof(envVar), "JAVA_STARTED_ON_FIRST_THREAD_%d", getpid()); + if (getenv(envVar) != NULL) { + forceEmbeddedMode = YES; + unsetenv(envVar); + } + + if (isSWTInWebStart(env)) { + forceEmbeddedMode = YES; + } + + [AWTStarter start:headless ? YES : NO]; + + JNF_COCOA_EXIT(env) +} + +JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) { + OSXAPP_SetJavaVM(vm); + + // We need to let Foundation know that this is a multithreaded application, if it isn't already. + if (![NSThread isMultiThreaded]) { + [NSThread detachNewThreadSelector:nil toTarget:nil withObject:nil]; + } + + return JNI_VERSION_1_4; +} + +/* + * Class: sun_lwawt_macosx_LWCToolkit + * Method: isEmbedded + * Signature: ()Z + */ +JNIEXPORT jboolean JNICALL +Java_sun_lwawt_macosx_LWCToolkit_isEmbedded +(JNIEnv *env, jclass klass) { + return isEmbedded ? JNI_TRUE : JNI_FALSE; +} +
--- a/jdk/src/macosx/native/sun/awt/awt.m Thu Jul 24 09:15:38 2014 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,460 +0,0 @@ -/* - * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -#import <pthread.h> -#import <objc/runtime.h> -#import <Cocoa/Cocoa.h> -#import <Security/AuthSession.h> -#import <JavaNativeFoundation/JavaNativeFoundation.h> -#import <JavaRuntimeSupport/JavaRuntimeSupport.h> - -#import "NSApplicationAWT.h" -#import "PropertiesUtilities.h" -#import "ThreadUtilities.h" -#import "AWT_debug.h" -#import "ApplicationDelegate.h" - -#define DEBUG 0 - - -// The symbol is defined in libosxapp.dylib (ThreadUtilities.m) -extern JavaVM *jvm; - -// Indicates if AWT is running embedded (in SWT, FX, elsewhere) -static BOOL isEmbedded = NO; - -// Indicates that the app has been started with -XstartOnFirstThread -// (directly or via WebStart settings), and AWT should not run its -// own event loop in this mode. Even if a loop isn't running yet, -// we expect an embedder (e.g. SWT) to start it some time later. -static BOOL forceEmbeddedMode = NO; - -static bool ShouldPrintVerboseDebugging() { - static int debug = -1; - if (debug == -1) { - debug = (int)(getenv("JAVA_AWT_VERBOSE") != NULL) || (DEBUG != 0); - } - return (bool)debug; -} - -// This is the data necessary to have JNI_OnLoad wait for AppKit to start. -static BOOL sAppKitStarted = NO; -static pthread_mutex_t sAppKitStarted_mutex = PTHREAD_MUTEX_INITIALIZER; -static pthread_cond_t sAppKitStarted_cv = PTHREAD_COND_INITIALIZER; - -void setBusy(BOOL isBusy); -static void BusyObserver(CFRunLoopObserverRef ref, CFRunLoopActivity what, void* arg); -static void NotBusyObserver(CFRunLoopObserverRef ref, CFRunLoopActivity what, void* arg); -static void AWT_NSUncaughtExceptionHandler(NSException *exception); - -static CFRunLoopObserverRef busyObserver = NULL; -static CFRunLoopObserverRef notBusyObserver = NULL; - -static void setUpAWTAppKit() -{ - BOOL verbose = ShouldPrintVerboseDebugging(); - if (verbose) AWT_DEBUG_LOG(@"setting up busy observers"); - - // Add CFRunLoopObservers to call into AWT so that AWT knows that the - // AWT thread (which is the AppKit main thread) is alive. This way AWT - // will not automatically shutdown. - busyObserver = CFRunLoopObserverCreate( - NULL, // CFAllocator - kCFRunLoopAfterWaiting, // CFOptionFlags - true, // repeats - NSIntegerMax, // order - &BusyObserver, // CFRunLoopObserverCallBack - NULL); // CFRunLoopObserverContext - - notBusyObserver = CFRunLoopObserverCreate( - NULL, // CFAllocator - kCFRunLoopBeforeWaiting, // CFOptionFlags - true, // repeats - NSIntegerMin, // order - &NotBusyObserver, // CFRunLoopObserverCallBack - NULL); // CFRunLoopObserverContext - - CFRunLoopRef runLoop = [[NSRunLoop currentRunLoop] getCFRunLoop]; - CFRunLoopAddObserver(runLoop, busyObserver, kCFRunLoopDefaultMode); - CFRunLoopAddObserver(runLoop, notBusyObserver, kCFRunLoopDefaultMode); - - CFRelease(busyObserver); - CFRelease(notBusyObserver); - - setBusy(YES); -} - -static void setUpAppKitThreadName() -{ - BOOL verbose = ShouldPrintVerboseDebugging(); - JNIEnv *env = [ThreadUtilities getJNIEnv]; - - // Set the java name of the AppKit main thread appropriately. - jclass threadClass = NULL; - jstring name = NULL; - jobject curThread = NULL; - - threadClass = (*env)->FindClass(env, "java/lang/Thread"); - if (threadClass == NULL || (*env)->ExceptionCheck(env)) goto cleanup; - jmethodID currentThreadID = (*env)->GetStaticMethodID(env, threadClass, "currentThread", "()Ljava/lang/Thread;"); - if (currentThreadID == NULL || (*env)->ExceptionCheck(env)) goto cleanup; - jmethodID setName = (*env)->GetMethodID(env, threadClass, "setName", "(Ljava/lang/String;)V"); - if (setName == NULL || (*env)->ExceptionCheck(env)) goto cleanup; - - curThread = (*env)->CallStaticObjectMethod(env, threadClass, currentThreadID); // AWT_THREADING Safe (known object) - if (curThread == NULL || (*env)->ExceptionCheck(env)) goto cleanup; - name = (*env)->NewStringUTF(env, "AWT-AppKit"); - if (name == NULL || (*env)->ExceptionCheck(env)) goto cleanup; - (*env)->CallVoidMethod(env, curThread, setName, name); // AWT_THREADING Safe (known object) - if ((*env)->ExceptionCheck(env)) goto cleanup; - -cleanup: - if (threadClass != NULL) { - (*env)->DeleteLocalRef(env, threadClass); - } - if (name != NULL) { - (*env)->DeleteLocalRef(env, name); - } - if (curThread != NULL) { - (*env)->DeleteLocalRef(env, curThread); - } - if ((*env)->ExceptionCheck(env)) { - (*env)->ExceptionDescribe(env); - (*env)->ExceptionClear(env); - } - - if (verbose) AWT_DEBUG_LOG(@"finished setting thread name"); -} - - -// Returns true if java believes it is running headless -BOOL isHeadless(JNIEnv *env) { - // Just access the property directly, instead of using GraphicsEnvironment.isHeadless. - // This is because this may be called while AWT is being loaded, and calling AWT - // while it is being loaded will deadlock. - static JNF_CLASS_CACHE(jc_Toolkit, "java/awt/GraphicsEnvironment"); - static JNF_STATIC_MEMBER_CACHE(jm_isHeadless, jc_Toolkit, "isHeadless", "()Z"); - return JNFCallStaticBooleanMethod(env, jm_isHeadless); -} - -BOOL isSWTInWebStart(JNIEnv* env) { - NSString *swtWebStart = [PropertiesUtilities javaSystemPropertyForKey:@"com.apple.javaws.usingSWT" withEnv:env]; - return [@"true" isCaseInsensitiveLike:swtWebStart]; -} - -void setBusy(BOOL busy) { -AWT_ASSERT_APPKIT_THREAD; - - JNIEnv *env = [ThreadUtilities getJNIEnv]; - static JNF_CLASS_CACHE(jc_AWTAutoShutdown, "sun/awt/AWTAutoShutdown"); - - if (busy) { - static JNF_STATIC_MEMBER_CACHE(jm_notifyBusyMethod, jc_AWTAutoShutdown, "notifyToolkitThreadBusy", "()V"); - JNFCallStaticVoidMethod(env, jm_notifyBusyMethod); - } else { - static JNF_STATIC_MEMBER_CACHE(jm_notifyFreeMethod, jc_AWTAutoShutdown, "notifyToolkitThreadFree", "()V"); - JNFCallStaticVoidMethod(env, jm_notifyFreeMethod); - } -} - -static void BusyObserver(CFRunLoopObserverRef ref, CFRunLoopActivity what, void* arg) { -AWT_ASSERT_APPKIT_THREAD; - - // This is only called with the selector kCFRunLoopAfterWaiting. -#ifndef PRODUCT_BUILD - assert(what == kCFRunLoopAfterWaiting); -#endif /* PRODUCT_BUILD */ - - setBusy(YES); -} - -static void NotBusyObserver(CFRunLoopObserverRef ref, CFRunLoopActivity what, void* arg) { -AWT_ASSERT_APPKIT_THREAD; - - // This is only called with the selector kCFRunLoopBeforeWaiting. -#ifndef PRODUCT_BUILD - assert(what == kCFRunLoopBeforeWaiting); -#endif /* PRODUCT_BUILD */ - - setBusy(NO); -} - -static void AWT_NSUncaughtExceptionHandler(NSException *exception) { - NSLog(@"Apple AWT Internal Exception: %@", [exception description]); -} - -// This is an empty Obj-C object just so that -peformSelectorOnMainThread can be used. -@interface AWTStarter : NSObject { } -+ (void)start:(BOOL)headless; -- (void)starter:(NSArray*)args; -+ (void)appKitIsRunning:(id)arg; -@end - -@implementation AWTStarter - -+ (BOOL) isConnectedToWindowServer { - SecuritySessionId session_id; - SessionAttributeBits session_info; - OSStatus status = SessionGetInfo(callerSecuritySession, &session_id, &session_info); - if (status != noErr) return NO; - if (!(session_info & sessionHasGraphicAccess)) return NO; - return YES; -} - -+ (BOOL) markAppAsDaemon { - id jrsAppKitAWTClass = objc_getClass("JRSAppKitAWT"); - SEL markAppSel = @selector(markAppIsDaemon); - if (![jrsAppKitAWTClass respondsToSelector:markAppSel]) return NO; - return [jrsAppKitAWTClass performSelector:markAppSel] ? YES : NO; -} - -+ (void)appKitIsRunning:(id)arg { - // Headless: NO - // Embedded: BOTH - // Multiple Calls: NO - // Callers: AppKit's NSApplicationDidFinishLaunchingNotification or +[AWTStarter startAWT:] -AWT_ASSERT_APPKIT_THREAD; - - BOOL verbose = ShouldPrintVerboseDebugging(); - if (verbose) AWT_DEBUG_LOG(@"about to message AppKit started"); - - // Signal that AppKit has started (or is already running). - pthread_mutex_lock(&sAppKitStarted_mutex); - sAppKitStarted = YES; - pthread_cond_signal(&sAppKitStarted_cv); - pthread_mutex_unlock(&sAppKitStarted_mutex); - - if (verbose) AWT_DEBUG_LOG(@"finished messaging AppKit started"); -} - -+ (void)start:(BOOL)headless -{ - BOOL verbose = ShouldPrintVerboseDebugging(); - - // Headless: BOTH - // Embedded: BOTH - // Multiple Calls: NO - // Caller: JNI_OnLoad - - // onMainThread is NOT the same at SWT mode! - // If the JVM was started on the first thread for SWT, but the SWT loads the AWT on a secondary thread, - // onMainThread here will be false but SWT mode will be true. If we are currently on the main thread, we don't - // need to throw AWT startup over to another thread. - BOOL onMainThread = (pthread_main_np() != 0); - - if (verbose) { - NSString *msg = [NSString stringWithFormat:@"+[AWTStarter start headless:%d] { onMainThread:%d }", headless, onMainThread]; - AWT_DEBUG_LOG(msg); - } - - if (!headless) - { - // Listen for the NSApp to start. This indicates that JNI_OnLoad can proceed. - // It must wait because there is a chance that another java thread will grab - // the AppKit lock before the +[NSApplication sharedApplication] returns. - // See <rdar://problem/3492666> for an example. - [[NSNotificationCenter defaultCenter] addObserver:[AWTStarter class] - selector:@selector(appKitIsRunning:) - name:NSApplicationDidFinishLaunchingNotification - object:nil]; - - if (verbose) NSLog(@"+[AWTStarter start:::]: registered NSApplicationDidFinishLaunchingNotification"); - } - - id st = [[AWTStarter alloc] init]; - - NSArray * args = [NSArray arrayWithObjects: - [NSNumber numberWithBool: onMainThread], - [NSNumber numberWithBool: headless], - [NSNumber numberWithBool: verbose], - nil]; - - if (onMainThread) { - [st starter:args]; - } else { - [st performSelectorOnMainThread: @selector(starter:) withObject:args waitUntilDone:NO]; - } - - if (!headless && !onMainThread) { - if (verbose) AWT_DEBUG_LOG(@"about to wait on AppKit startup mutex"); - - // Wait here for AppKit to have started (or for AWT to have been loaded into - // an already running NSApplication). - pthread_mutex_lock(&sAppKitStarted_mutex); - while (sAppKitStarted == NO) { - pthread_cond_wait(&sAppKitStarted_cv, &sAppKitStarted_mutex); - } - pthread_mutex_unlock(&sAppKitStarted_mutex); - - // AWT gets here AFTER +[AWTStarter appKitIsRunning:] is called. - if (verbose) AWT_DEBUG_LOG(@"got out of the AppKit startup mutex"); - } - - if (!headless) { - // Don't set the delegate until the NSApplication has been created and - // its finishLaunching has initialized it. - // ApplicationDelegate is the support code for com.apple.eawt. - [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ - id<NSApplicationDelegate> delegate = [ApplicationDelegate sharedDelegate]; - if (delegate != nil) { - OSXAPP_SetApplicationDelegate(delegate); - } - }]; - } -} - -- (void)starter:(NSArray*)args { - NSAutoreleasePool *pool = [NSAutoreleasePool new]; - - BOOL onMainThread = [[args objectAtIndex:0] boolValue]; - BOOL headless = [[args objectAtIndex:1] boolValue]; - BOOL verbose = [[args objectAtIndex:2] boolValue]; - - BOOL wasOnMainThread = onMainThread; - - // Add the exception handler of last resort - NSSetUncaughtExceptionHandler(AWT_NSUncaughtExceptionHandler); - - // Headless mode trumps either ordinary AWT or SWT-in-AWT mode. Declare us a daemon and return. - if (headless) { - // Note that we don't install run loop observers in headless mode - // because we don't need them (see 7174704) - if (!forceEmbeddedMode) { - setUpAppKitThreadName(); - } - [AWTStarter markAppAsDaemon]; - return; - } - - if (forceEmbeddedMode) { - if (verbose) NSLog(@"in SWT or SWT/WebStart mode"); - - // Init a default NSApplication instance instead of the NSApplicationAWT. - // Note that [NSApp isRunning] will return YES after that, though - // this behavior isn't specified anywhere. We rely on that. - NSApplicationLoad(); - } - - // This will create a NSApplicationAWT for standalone AWT programs, unless there is - // already a NSApplication instance. If there is already a NSApplication instance, - // and -[NSApplication isRunning] returns YES, AWT is embedded inside another - // AppKit Application. - NSApplication *app = [NSApplicationAWT sharedApplication]; - isEmbedded = ![NSApp isKindOfClass:[NSApplicationAWT class]]; - [ThreadUtilities setAWTEmbedded:isEmbedded]; - - if (!isEmbedded) { - // Install run loop observers and set the AppKit Java thread name - setUpAWTAppKit(); - setUpAppKitThreadName(); - } - - // AWT gets to this point BEFORE NSApplicationDidFinishLaunchingNotification is sent. - if (![app isRunning]) { - if (verbose) AWT_DEBUG_LOG(@"+[AWTStarter startAWT]: ![app isRunning]"); - - // This is where the AWT AppKit thread parks itself to process events. - [NSApplicationAWT runAWTLoopWithApp: app]; - } else { - // We're either embedded, or showing a splash screen - if (isEmbedded) { - if (verbose) AWT_DEBUG_LOG(@"running embedded"); - - // We don't track if the runloop is busy, so set it free to let AWT finish when it needs - setBusy(NO); - } else { - if (verbose) AWT_DEBUG_LOG(@"running after showing a splash screen"); - } - - // Signal so that JNI_OnLoad can proceed. - if (!wasOnMainThread) [AWTStarter appKitIsRunning:nil]; - - // Proceed to exit this call as there is no reason to run the NSApplication event loop. - } - - [pool drain]; -} - -@end - - -JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) { - BOOL verbose = ShouldPrintVerboseDebugging(); - if (verbose) AWT_DEBUG_LOG(@"entered JNI_OnLoad"); - - // Headless: BOTH - // Embedded: BOTH - // Multiple Calls: NO - // Caller: JavaVM classloader - - // Keep a static reference for other archives. - OSXAPP_SetJavaVM(vm); - - JNIEnv *env = NULL; - - // Need JNIEnv for JNF_COCOA_ENTER(env); macro below - jint status = (*jvm)->GetEnv(jvm, (void **)&env, JNI_VERSION_1_4); - if (status != JNI_OK || env == NULL) { - AWT_DEBUG_LOG(@"Can't get JNIEnv"); - return JNI_VERSION_1_4; - } - -JNF_COCOA_ENTER(env); - - // Launcher sets this env variable if -XstartOnFirstThread is specified - char envVar[80]; - snprintf(envVar, sizeof(envVar), "JAVA_STARTED_ON_FIRST_THREAD_%d", getpid()); - if (getenv(envVar) != NULL) { - forceEmbeddedMode = YES; - unsetenv(envVar); - } - - if (isSWTInWebStart(env)) { - forceEmbeddedMode = YES; - } - JNIEnv* env = [ThreadUtilities getJNIEnvUncached]; - jclass jc_ThreadGroupUtils = (*env)->FindClass(env, "sun/awt/util/ThreadGroupUtils"); - jmethodID sjm_getRootThreadGroup = (*env)->GetStaticMethodID(env, jc_ThreadGroupUtils, "getRootThreadGroup", "()Ljava/lang/ThreadGroup;"); - jobject rootThreadGroup = (*env)->CallStaticObjectMethod(env, jc_ThreadGroupUtils, sjm_getRootThreadGroup); - [ThreadUtilities setAppkitThreadGroup:(*env)->NewGlobalRef(env, rootThreadGroup)]; - // The current thread was attached in getJNIEnvUnchached. - // Detach it back. It will be reattached later if needed with a proper TG - [ThreadUtilities detachCurrentThread]; - - BOOL headless = isHeadless(env); - - // We need to let Foundation know that this is a multithreaded application, if it isn't already. - if (![NSThread isMultiThreaded]) { - [NSThread detachNewThreadSelector:nil toTarget:nil withObject:nil]; - } - - [AWTStarter start:headless]; - -JNF_COCOA_EXIT(env); - - if (verbose) AWT_DEBUG_LOG(@"exiting JNI_OnLoad"); - - return JNI_VERSION_1_4; -}
--- a/jdk/src/macosx/native/sun/awt/splashscreen/splashscreen_sys.m Thu Jul 24 09:15:38 2014 +0200 +++ b/jdk/src/macosx/native/sun/awt/splashscreen/splashscreen_sys.m Fri Jul 25 09:44:53 2014 +0000 @@ -125,6 +125,39 @@ return buf; } +char* SplashGetScaledImageName(const char* jar, const char* file, + float *scaleFactor) { + NSAutoreleasePool *pool = [NSAutoreleasePool new]; + *scaleFactor = 1; + char* scaledFile = nil; + float screenScaleFactor = [SplashNSScreen() backingScaleFactor]; + + if (screenScaleFactor > 1) { + NSString *fileName = [NSString stringWithUTF8String: file]; + NSUInteger length = [fileName length]; + NSRange range = [fileName rangeOfString: @"."