hg: ppc-aix-port/jdk8/hotspot: 45 new changesets

goetz.lindenmaier at sap.com goetz.lindenmaier at sap.com
Fri Mar 22 03:36:07 PDT 2013


Changeset: f7ebcf941a5b
Author:    Goetz
Date:      2013-03-22 11:06 +0100
URL:       http://hg.openjdk.java.net/ppc-aix-port/jdk8/hotspot/rev/f7ebcf941a5b

make: Reenable CORE build

Enable hotspot to build without any compiler.
Build target jvmgcore.

! make/Makefile

Changeset: b5c1c4ba775b
Author:    Goetz
Date:      2013-03-22 11:07 +0100
URL:       http://hg.openjdk.java.net/ppc-aix-port/jdk8/hotspot/rev/b5c1c4ba775b

shared: Make adapter_code_size a function.

! src/cpu/sparc/vm/methodHandles_sparc.hpp
! src/cpu/x86/vm/methodHandles_x86.hpp
! src/cpu/zero/vm/methodHandles_zero.hpp
! src/share/vm/prims/methodHandles.cpp

Changeset: 99f94857c3ee
Author:    Goetz
Date:      2013-03-22 11:08 +0100
URL:       http://hg.openjdk.java.net/ppc-aix-port/jdk8/hotspot/rev/99f94857c3ee

shared: Basic non-functional fixes needed for the ppc port.

! agent/src/os/linux/libproc.h
! src/os/linux/vm/os_linux.cpp
! src/share/vm/adlc/main.cpp
! src/share/vm/code/vmreg.hpp
! src/share/vm/compiler/compileBroker.cpp
! src/share/vm/gc_implementation/g1/g1OopClosures.inline.hpp
! src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.inline.hpp
! src/share/vm/interpreter/abstractInterpreter.hpp
! src/share/vm/opto/c2_globals.hpp
! src/share/vm/opto/c2compiler.cpp
! src/share/vm/opto/compile.cpp
! src/share/vm/opto/gcm.cpp
! src/share/vm/opto/lcm.cpp
! src/share/vm/opto/locknode.hpp
! src/share/vm/opto/matcher.cpp
! src/share/vm/opto/output.hpp
! src/share/vm/opto/regmask.cpp
! src/share/vm/opto/regmask.hpp
! src/share/vm/opto/runtime.cpp
! src/share/vm/runtime/deoptimization.cpp
! src/share/vm/runtime/frame.hpp
! src/share/vm/runtime/globals.hpp
! src/share/vm/runtime/stubRoutines.hpp
! src/share/vm/runtime/vmStructs.cpp
! src/share/vm/runtime/vm_version.cpp
! src/share/vm/utilities/macros.hpp

Changeset: 48b561ee4a37
Author:    Goetz
Date:      2013-03-22 11:08 +0100
URL:       http://hg.openjdk.java.net/ppc-aix-port/jdk8/hotspot/rev/48b561ee4a37

C-interpreter: basic fixes

This includes a larger change to BiasedLocking in
bytecodeInterpreter.cpp (which needs to be reworked),
and some minor shared changes.

! src/share/vm/interpreter/bytecodeInterpreter.cpp
! src/share/vm/runtime/stubRoutines.hpp
! src/share/vm/runtime/thread.hpp

Changeset: d02f0701be17
Author:    Goetz
Date:      2013-03-22 11:08 +0100
URL:       http://hg.openjdk.java.net/ppc-aix-port/jdk8/hotspot/rev/d02f0701be17

opto: Trampoline relocations

A trampoline allows to encode a small branch in the code, even if there
is the chance that this branch can not reach all possible code locations.
If the relocation finds that a branch is too far for the instruction
in the code, it can patch it to jump to the trampoline where is
sufficient space for a far branch.  Needed on PPC.

! src/share/vm/code/relocInfo.cpp
! src/share/vm/code/relocInfo.hpp

Changeset: 7744875329e7
Author:    Goetz
Date:      2013-03-22 11:10 +0100
URL:       http://hg.openjdk.java.net/ppc-aix-port/jdk8/hotspot/rev/7744875329e7

rt: Use stubs to implement safefetch.

On platforms where the compiler does not properly support inline
assembly safefetch can be implemented as stub routines. This also
allows to use a single implementation if an architecture is
supported on several os platforms.

! src/share/vm/runtime/os.hpp
! src/share/vm/runtime/stubRoutines.cpp
! src/share/vm/runtime/stubRoutines.hpp

Changeset: 413a2a89c9bf
Author:    Goetz
Date:      2013-03-22 11:10 +0100
URL:       http://hg.openjdk.java.net/ppc-aix-port/jdk8/hotspot/rev/413a2a89c9bf

make: Implement linux ppc64 support in makefiles.

! make/defs.make
! make/linux/makefiles/buildtree.make
! make/linux/makefiles/defs.make
! make/linux/makefiles/gcc.make
+ make/linux/makefiles/ppc64.make
! make/linux/makefiles/vm.make
+ make/linux/platform_ppc64

Changeset: c042c0914720
Author:    Goetz
Date:      2013-03-22 11:10 +0100
URL:       http://hg.openjdk.java.net/ppc-aix-port/jdk8/hotspot/rev/c042c0914720

ppc: PPC platform files as required to start up the interpreter.

With this change the HotSpot (libjvm.so) compiles and
links on Linux/PPC.  The interpreter succesfully executes the
queens testprogram.x

Compiled with the following command lines:

debug build:
------------
ALT_BOOTDIR=/sapmnt/depot/tools/gen/linuxppc64/licenseware/jse/1.7.0 ALT_OUTPUTDIR=/priv/d046063/OpenJDK/output_dbg_ppc64 CC_INTERP=true OPENJDK=true ARCH_DATA_MODEL=64 MAKE_VERBOSE=y HOTSPOT_BUILD_JOBS=1 make jvmgcore 2>&1 | tee /priv/d046063/OpenJDK/output_dbg_ppc64.log

+ src/cpu/ppc/vm/assembler_ppc.cpp
+ src/cpu/ppc/vm/assembler_ppc.hpp
+ src/cpu/ppc/vm/assembler_ppc.inline.hpp
+ src/cpu/ppc/vm/bytecodeInterpreter_ppc.hpp
+ src/cpu/ppc/vm/bytecodeInterpreter_ppc.inline.hpp
+ src/cpu/ppc/vm/bytecodes_ppc.cpp
+ src/cpu/ppc/vm/bytecodes_ppc.hpp
+ src/cpu/ppc/vm/bytes_ppc.hpp
+ src/cpu/ppc/vm/codeBuffer_ppc.hpp
+ src/cpu/ppc/vm/copy_ppc.hpp
+ src/cpu/ppc/vm/cppInterpreterGenerator_ppc.hpp
+ src/cpu/ppc/vm/cppInterpreter_ppc.cpp
+ src/cpu/ppc/vm/cppInterpreter_ppc.hpp
+ src/cpu/ppc/vm/debug_ppc.cpp
+ src/cpu/ppc/vm/depChecker_ppc.hpp
+ src/cpu/ppc/vm/disassembler_ppc.hpp
+ src/cpu/ppc/vm/frame_ppc.cpp
+ src/cpu/ppc/vm/frame_ppc.hpp
+ src/cpu/ppc/vm/frame_ppc.inline.hpp
+ src/cpu/ppc/vm/globalDefinitions_ppc.hpp
+ src/cpu/ppc/vm/globals_ppc.hpp
+ src/cpu/ppc/vm/icBuffer_ppc.cpp
+ src/cpu/ppc/vm/icache_ppc.cpp
+ src/cpu/ppc/vm/icache_ppc.hpp
+ src/cpu/ppc/vm/interp_masm_ppc_64.cpp
+ src/cpu/ppc/vm/interp_masm_ppc_64.hpp
+ src/cpu/ppc/vm/interpreterGenerator_ppc.hpp
+ src/cpu/ppc/vm/interpreterRT_ppc.cpp
+ src/cpu/ppc/vm/interpreterRT_ppc.hpp
+ src/cpu/ppc/vm/interpreter_ppc.cpp
+ src/cpu/ppc/vm/interpreter_ppc.hpp
+ src/cpu/ppc/vm/javaFrameAnchor_ppc.hpp
+ src/cpu/ppc/vm/jniFastGetField_ppc.cpp
+ src/cpu/ppc/vm/jniTypes_ppc.hpp
+ src/cpu/ppc/vm/jni_ppc.h
+ src/cpu/ppc/vm/macroAssembler_ppc.cpp
+ src/cpu/ppc/vm/macroAssembler_ppc.hpp
+ src/cpu/ppc/vm/macroAssembler_ppc.inline.hpp
+ src/cpu/ppc/vm/metaspaceShared_ppc.cpp
+ src/cpu/ppc/vm/methodHandles_ppc.cpp
+ src/cpu/ppc/vm/methodHandles_ppc.hpp
+ src/cpu/ppc/vm/nativeInst_ppc.cpp
+ src/cpu/ppc/vm/nativeInst_ppc.hpp
+ src/cpu/ppc/vm/registerMap_ppc.hpp
+ src/cpu/ppc/vm/register_definitions_ppc.cpp
+ src/cpu/ppc/vm/register_ppc.cpp
+ src/cpu/ppc/vm/register_ppc.hpp
+ src/cpu/ppc/vm/relocInfo_ppc.cpp
+ src/cpu/ppc/vm/relocInfo_ppc.hpp
+ src/cpu/ppc/vm/sharedRuntime_ppc.cpp
+ src/cpu/ppc/vm/stubGenerator_ppc.cpp
+ src/cpu/ppc/vm/stubRoutines_ppc_64.cpp
+ src/cpu/ppc/vm/stubRoutines_ppc_64.hpp
+ src/cpu/ppc/vm/vmStructs_ppc.hpp
+ src/cpu/ppc/vm/vm_version_ppc.cpp
+ src/cpu/ppc/vm/vm_version_ppc.hpp
+ src/cpu/ppc/vm/vmreg_ppc.cpp
+ src/cpu/ppc/vm/vmreg_ppc.hpp
+ src/cpu/ppc/vm/vmreg_ppc.inline.hpp
+ src/cpu/ppc/vm/vtableStubs_ppc_64.cpp
+ src/os_cpu/linux_ppc/vm/atomic_linux_ppc.inline.hpp
+ src/os_cpu/linux_ppc/vm/globals_linux_ppc.hpp
+ src/os_cpu/linux_ppc/vm/orderAccess_linux_ppc.inline.hpp
+ src/os_cpu/linux_ppc/vm/os_linux_ppc.cpp
+ src/os_cpu/linux_ppc/vm/os_linux_ppc.hpp
+ src/os_cpu/linux_ppc/vm/prefetch_linux_ppc.inline.hpp
+ src/os_cpu/linux_ppc/vm/threadLS_linux_ppc.cpp
+ src/os_cpu/linux_ppc/vm/threadLS_linux_ppc.hpp
+ src/os_cpu/linux_ppc/vm/thread_linux_ppc.cpp
+ src/os_cpu/linux_ppc/vm/thread_linux_ppc.hpp
+ src/os_cpu/linux_ppc/vm/vmStructs_linux_ppc.hpp

Changeset: 81d1c97dc0b9
Author:    Goetz
Date:      2013-03-22 11:10 +0100
URL:       http://hg.openjdk.java.net/ppc-aix-port/jdk8/hotspot/rev/81d1c97dc0b9

shared: Fix IA64 preprocessor conditionals on AIX.

! src/share/vm/opto/generateOptoStub.cpp
! src/share/vm/opto/output.cpp
! src/share/vm/prims/forte.cpp
! src/share/vm/runtime/objectMonitor.cpp
! src/share/vm/runtime/os.cpp
! src/share/vm/runtime/synchronizer.cpp
! src/share/vm/utilities/macros.hpp

Changeset: e7454dcd5fea
Author:    Goetz
Date:      2013-03-22 11:10 +0100
URL:       http://hg.openjdk.java.net/ppc-aix-port/jdk8/hotspot/rev/e7454dcd5fea

posix: Implement methods giving infos about signals.

! src/os/posix/vm/os_posix.cpp
! src/os/posix/vm/os_posix.hpp

Changeset: 8c06383f4f57
Author:    Goetz
Date:      2013-03-22 11:10 +0100
URL:       http://hg.openjdk.java.net/ppc-aix-port/jdk8/hotspot/rev/8c06383f4f57

shared: Basic non-functional fixes needed for the ppc port.

Added aix include alpha-sorted before BSD.

! src/os/posix/launcher/java_md.c
! src/os/posix/vm/os_posix.cpp
! src/share/vm/c1/c1_globals.hpp
! src/share/vm/classfile/classLoader.cpp
! src/share/vm/code/relocInfo.hpp
! src/share/vm/code/stubs.hpp
! src/share/vm/code/vmreg.hpp
! src/share/vm/compiler/disassembler.hpp
! src/share/vm/gc_implementation/concurrentMarkSweep/adaptiveFreeList.cpp
! src/share/vm/gc_implementation/concurrentMarkSweep/cmsAdaptiveSizePolicy.cpp
! src/share/vm/gc_implementation/parallelScavenge/parMarkBitMap.cpp
! src/share/vm/gc_implementation/parallelScavenge/psVirtualspace.cpp
! src/share/vm/interpreter/bytecodeInterpreter.cpp
! src/share/vm/libadt/port.hpp
! src/share/vm/memory/allocation.cpp
! src/share/vm/memory/allocation.hpp
! src/share/vm/memory/space.hpp
! src/share/vm/oops/typeArrayOop.hpp
! src/share/vm/opto/c2_globals.hpp
! src/share/vm/prims/forte.cpp
! src/share/vm/prims/jvm.cpp
! src/share/vm/prims/jvm.h
! src/share/vm/prims/nativeLookup.cpp
! src/share/vm/runtime/arguments.cpp
! src/share/vm/runtime/atomic.cpp
! src/share/vm/runtime/atomic.inline.hpp
! src/share/vm/runtime/globals.hpp
! src/share/vm/runtime/interfaceSupport.hpp
! src/share/vm/runtime/javaFrameAnchor.hpp
! src/share/vm/runtime/mutexLocker.hpp
! src/share/vm/runtime/os.hpp
! src/share/vm/runtime/osThread.hpp
! src/share/vm/runtime/safepoint.cpp
! src/share/vm/runtime/sharedRuntimeTrans.cpp
! src/share/vm/runtime/sharedRuntimeTrig.cpp
! src/share/vm/runtime/thread.hpp
! src/share/vm/runtime/thread.inline.hpp
! src/share/vm/runtime/threadLocalStorage.hpp
! src/share/vm/runtime/timer.cpp
! src/share/vm/runtime/virtualspace.cpp
! src/share/vm/runtime/vmStructs.cpp
! src/share/vm/runtime/vm_version.cpp
! src/share/vm/utilities/accessFlags.cpp
! src/share/vm/utilities/bitMap.cpp
! src/share/vm/utilities/debug.hpp
! src/share/vm/utilities/decoder.cpp
! src/share/vm/utilities/globalDefinitions.hpp
! src/share/vm/utilities/histogram.hpp
! src/share/vm/utilities/macros.hpp
! src/share/vm/utilities/ostream.cpp
! src/share/vm/utilities/resourceHash.hpp
! src/share/vm/utilities/taskqueue.hpp

Changeset: ae8679e6f4d5
Author:    Goetz
Date:      2013-03-22 11:10 +0100
URL:       http://hg.openjdk.java.net/ppc-aix-port/jdk8/hotspot/rev/ae8679e6f4d5

make: Implement aix ppc64 build.

+ make/aix/Makefile
+ make/aix/adlc_updater
+ make/aix/build.sh
+ make/aix/makefiles/adjust-mflags.sh
+ make/aix/makefiles/adlc.make
+ make/aix/makefiles/build_vm_def.sh
+ make/aix/makefiles/buildtree.make
+ make/aix/makefiles/compiler2.make
+ make/aix/makefiles/core.make
+ make/aix/makefiles/defs.make
+ make/aix/makefiles/dtrace.make
+ make/aix/makefiles/fastdebug.make
+ make/aix/makefiles/jsig.make
+ make/aix/makefiles/jvmg.make
+ make/aix/makefiles/jvmti.make
+ make/aix/makefiles/launcher.make
+ make/aix/makefiles/mapfile-vers-debug
+ make/aix/makefiles/mapfile-vers-jsig
+ make/aix/makefiles/mapfile-vers-product
+ make/aix/makefiles/ppc64.make
+ make/aix/makefiles/product.make
+ make/aix/makefiles/rules.make
+ make/aix/makefiles/sa.make
+ make/aix/makefiles/saproc.make
+ make/aix/makefiles/top.make
+ make/aix/makefiles/vm.make
+ make/aix/makefiles/wb.make
+ make/aix/makefiles/xlc.make
+ make/aix/platform_ppc64
! make/defs.make

Changeset: 0eeed7412a34
Author:    Goetz
Date:      2013-03-22 11:10 +0100
URL:       http://hg.openjdk.java.net/ppc-aix-port/jdk8/hotspot/rev/0eeed7412a34

aix: AIX platform files as required to start up the interpreter.

With this change the AIX vm should compile as jvmgcore and run
purely interpreted.

! make/aix/makefiles/defs.make
+ src/os/aix/vm/attachListener_aix.cpp
+ src/os/aix/vm/c2_globals_aix.hpp
+ src/os/aix/vm/chaitin_aix.cpp
+ src/os/aix/vm/decoder_aix.hpp
+ src/os/aix/vm/globals_aix.hpp
+ src/os/aix/vm/interfaceSupport_aix.hpp
+ src/os/aix/vm/jsig.c
+ src/os/aix/vm/jvm_aix.cpp
+ src/os/aix/vm/jvm_aix.h
+ src/os/aix/vm/libperfstat_aix.cpp
+ src/os/aix/vm/libperfstat_aix.hpp
+ src/os/aix/vm/loadlib_aix.cpp
+ src/os/aix/vm/loadlib_aix.hpp
+ src/os/aix/vm/mutex_aix.inline.hpp
+ src/os/aix/vm/osThread_aix.cpp
+ src/os/aix/vm/osThread_aix.hpp
+ src/os/aix/vm/os_aix.cpp
+ src/os/aix/vm/os_aix.hpp
+ src/os/aix/vm/os_aix.inline.hpp
+ src/os/aix/vm/os_share_aix.hpp
+ src/os/aix/vm/perfMemory_aix.cpp
+ src/os/aix/vm/porting_aix.cpp
+ src/os/aix/vm/porting_aix.hpp
+ src/os/aix/vm/threadCritical_aix.cpp
+ src/os/aix/vm/thread_aix.inline.hpp
+ src/os/aix/vm/vmError_aix.cpp
+ src/os_cpu/aix_ppc/vm/atomic_aix_ppc.inline.hpp
+ src/os_cpu/aix_ppc/vm/globals_aix_ppc.hpp
+ src/os_cpu/aix_ppc/vm/orderAccess_aix_ppc.inline.hpp
+ src/os_cpu/aix_ppc/vm/os_aix_ppc.cpp
+ src/os_cpu/aix_ppc/vm/os_aix_ppc.hpp
+ src/os_cpu/aix_ppc/vm/prefetch_aix_ppc.inline.hpp
+ src/os_cpu/aix_ppc/vm/threadLS_aix_ppc.cpp
+ src/os_cpu/aix_ppc/vm/threadLS_aix_ppc.hpp
+ src/os_cpu/aix_ppc/vm/thread_aix_ppc.cpp
+ src/os_cpu/aix_ppc/vm/thread_aix_ppc.hpp
+ src/os_cpu/aix_ppc/vm/vmStructs_aix_ppc.hpp
+ src/share/vm/utilities/globalDefinitions_xlc.hpp

Changeset: 1d0585409743
Author:    Goetz
Date:      2013-03-22 11:14 +0100
URL:       http://hg.openjdk.java.net/ppc-aix-port/jdk8/hotspot/rev/1d0585409743

opto,rt: Support for C calling conventions that require 64-bit ints.

Some platforms, as ppc and s390x/zArch require that 32-bit
ints are passed as 64-bit values to C functions.  This change
adds support to adapt the signature and to issue proper casts
to c2-compiled stubs.
The functions are used in generate_native_wrapper().
Adapt signature in PhaseIdealLoop::intrinsify_fill().

! src/cpu/ppc/vm/sharedRuntime_ppc.cpp
! src/cpu/sparc/vm/sharedRuntime_sparc.cpp
! src/cpu/x86/vm/sharedRuntime_x86_32.cpp
! src/cpu/x86/vm/sharedRuntime_x86_64.cpp
! src/cpu/zero/vm/sharedRuntime_zero.cpp
! src/share/vm/opto/generateOptoStub.cpp
! src/share/vm/opto/loopTransform.cpp
! src/share/vm/opto/runtime.cpp
! src/share/vm/runtime/sharedRuntime.cpp
! src/share/vm/runtime/sharedRuntime.hpp

Changeset: 73268ae19fba
Author:    Goetz
Date:      2013-03-22 11:14 +0100
URL:       http://hg.openjdk.java.net/ppc-aix-port/jdk8/hotspot/rev/73268ae19fba

rt: C argument in register AND stack slot.

! src/cpu/sparc/vm/sharedRuntime_sparc.cpp
! src/cpu/sparc/vm/sparc.ad
! src/cpu/x86/vm/sharedRuntime_x86_32.cpp
! src/cpu/x86/vm/sharedRuntime_x86_64.cpp
! src/cpu/x86/vm/x86_32.ad
! src/cpu/x86/vm/x86_64.ad
! src/cpu/zero/vm/sharedRuntime_zero.cpp
! src/share/vm/c1/c1_FrameMap.cpp
! src/share/vm/runtime/sharedRuntime.hpp

Changeset: fb70eef44b05
Author:    Goetz
Date:      2013-03-22 11:17 +0100
URL:       http://hg.openjdk.java.net/ppc-aix-port/jdk8/hotspot/rev/fb70eef44b05

opto: Extend Load and Store nodes to know about memory ordering.

On some platforms, Load and Store nodes can be reordered violating
the semantics required by Java. E.g., a Store publishing the
pointer to a new Java object may not be executed before the
Stores initializing the object. PPC and IA64 for example have
such weak memory ordering.

This change adds a field sem to all Load/Store nodes. The field
is either set to 'unordered', if the node may be reordered with
others, or to 'acquire' for Loads and 'release' for Stores.
The change also contains the code setting the field during IR
construction.

On platforms with weak memory ordering, the ad-file must specify
two versions for each Load/Store node, checking the sem property
and issuing an according operation.

Actually, we would like to remove the default arguments to these functions,
as they tend to cause wrong usage (too many args).

! src/share/vm/opto/generateOptoStub.cpp
! src/share/vm/opto/graphKit.cpp
! src/share/vm/opto/graphKit.hpp
! src/share/vm/opto/idealKit.cpp
! src/share/vm/opto/idealKit.hpp
! src/share/vm/opto/library_call.cpp
! src/share/vm/opto/macro.cpp
! src/share/vm/opto/memnode.cpp
! src/share/vm/opto/memnode.hpp
! src/share/vm/opto/parse2.cpp
! src/share/vm/opto/parse3.cpp
! src/share/vm/opto/vectornode.hpp

Changeset: 45f271751014
Author:    Goetz
Date:      2013-03-22 11:17 +0100
URL:       http://hg.openjdk.java.net/ppc-aix-port/jdk8/hotspot/rev/45f271751014

opto: hook to postprocess matcher output platform dependent.

On Power we need to add a special input, the toc, to
nodes loading constants. This must happen after matching,
but before register allocation.
This change adds a class PdCompile which contains a method
pd_post_matching_hook() on each platform. The method is
- so far - empty everywhere. It's called in compile() after
matching.

+ src/cpu/ppc/vm/compile_ppc.hpp
+ src/cpu/sparc/vm/compile_sparc.hpp
+ src/cpu/x86/vm/compile_x86.hpp
+ src/cpu/zero/vm/compile_zero.hpp
! src/share/vm/opto/compile.cpp
! src/share/vm/opto/compile.hpp

Changeset: 19846affb789
Author:    Goetz
Date:      2013-03-22 11:17 +0100
URL:       http://hg.openjdk.java.net/ppc-aix-port/jdk8/hotspot/rev/19846affb789

8003850 opto: introduce phase lateExpand to expand nodes after register allocation.

Some nodes can not be expanded during matching. E.g., register allocation
might not be able to deal with the resulting pattern. To allow better
scheduling in such cases, we introduce lateExpand which runs after
register allocation. Whether and how nodes are expanded is specified
in the ad-file. See block.cpp for a detailed documentation.

! src/cpu/sparc/vm/sparc.ad
! src/cpu/x86/vm/x86_32.ad
! src/cpu/x86/vm/x86_64.ad
! src/share/vm/adlc/adlparse.cpp
! src/share/vm/adlc/adlparse.hpp
! src/share/vm/adlc/archDesc.hpp
! src/share/vm/adlc/formssel.cpp
! src/share/vm/adlc/formssel.hpp
! src/share/vm/adlc/output_c.cpp
! src/share/vm/adlc/output_h.cpp
! src/share/vm/opto/block.cpp
! src/share/vm/opto/block.hpp
! src/share/vm/opto/c2_globals.hpp
! src/share/vm/opto/compile.cpp
! src/share/vm/opto/machnode.hpp
! src/share/vm/opto/matcher.hpp
! src/share/vm/opto/node.cpp
! src/share/vm/opto/node.hpp

Changeset: d1dfaa602f1a
Author:    Goetz
Date:      2013-03-22 11:17 +0100
URL:       http://hg.openjdk.java.net/ppc-aix-port/jdk8/hotspot/rev/d1dfaa602f1a

opto: Extend adlc to generate fields into nodes.

Similar to secifying functions returning constants (as
ins_avoid_back_to_back()) adlc accepts specifications with
prefix ins_field_xxx(tp) and adds field xxx of type tp to the node.

! src/share/vm/adlc/output_h.cpp

Changeset: f354933a891b
Author:    Goetz
Date:      2013-03-22 11:17 +0100
URL:       http://hg.openjdk.java.net/ppc-aix-port/jdk8/hotspot/rev/f354933a891b

adlc: do safe call to constant_offset() in debug coding

! src/share/vm/adlc/formssel.cpp
! src/share/vm/opto/machnode.cpp
! src/share/vm/opto/machnode.hpp

Changeset: 6c9feab0b2c2
Author:    Goetz
Date:      2013-03-22 11:17 +0100
URL:       http://hg.openjdk.java.net/ppc-aix-port/jdk8/hotspot/rev/6c9feab0b2c2

opto: Do not relocate in scratch emit.

Relocations with incomplete data can cause problems.

! src/cpu/ppc/vm/macroAssembler_ppc.cpp
! src/share/vm/asm/assembler.cpp
! src/share/vm/asm/codeBuffer.cpp
! src/share/vm/asm/codeBuffer.hpp
! src/share/vm/opto/compile.cpp

Changeset: 05b900c62951
Author:    Goetz
Date:      2013-03-22 11:17 +0100
URL:       http://hg.openjdk.java.net/ppc-aix-port/jdk8/hotspot/rev/05b900c62951

8003853 opto: specify offset of IC load in java_to_interp stub.

If a compiled static call calls the interpreter, it jumps past a
java_to_interp stub in the compiled code. Patching this call must
find the load of the IC. So far the code assumed this is the
first instruction in the stub.
This might not be the case if, for example, the base of the constant
table (toc) must be loaded.
Extend CompiledStaticCall to consider an offset from it's beginning
where to search the load of the IC.

! src/cpu/sparc/vm/sparc.ad
! src/cpu/x86/vm/x86_32.ad
! src/cpu/x86/vm/x86_64.ad
! src/share/vm/adlc/main.cpp
! src/share/vm/code/compiledIC.cpp
! src/share/vm/code/compiledIC.hpp

Changeset: 9a8d8eff3f61
Author:    Goetz
Date:      2013-03-22 11:17 +0100
URL:       http://hg.openjdk.java.net/ppc-aix-port/jdk8/hotspot/rev/9a8d8eff3f61

opto: support for constants on ppc

We use constants in Call nodes for IC cache and call target.
There is no natural way to add MachConstantBaseNode as input
to Call nodes.  We run a walk over the IR after matching and
add the MachConstantBaseNode where the return address should go.

+ src/cpu/ppc/vm/compile_ppc.cpp
! src/cpu/ppc/vm/compile_ppc.hpp
! src/share/vm/adlc/output_h.cpp
! src/share/vm/opto/loopTransform.cpp
! src/share/vm/opto/machnode.hpp
! src/share/vm/opto/output.cpp

Changeset: 331c806a8bd9
Author:    Goetz
Date:      2013-03-22 11:17 +0100
URL:       http://hg.openjdk.java.net/ppc-aix-port/jdk8/hotspot/rev/331c806a8bd9

opto: Basic fixes for the ppc C2 port

Various smaller shared changes required to make our c2 port
compile and run simple programs.

! src/share/vm/asm/assembler.hpp
! src/share/vm/compiler/compileBroker.cpp
! src/share/vm/opto/c2_globals.hpp
! src/share/vm/opto/chaitin.cpp
! src/share/vm/opto/machnode.cpp
! src/share/vm/opto/machnode.hpp
! src/share/vm/opto/regalloc.cpp
! src/share/vm/opto/type.cpp
! src/share/vm/opto/type.hpp

Changeset: 3b47f8eff50c
Author:    Goetz
Date:      2013-03-22 11:17 +0100
URL:       http://hg.openjdk.java.net/ppc-aix-port/jdk8/hotspot/rev/3b47f8eff50c

ppc: Initial C2 compiler port, ppc files

The C2 compiler builds on linuxppc and aixppc, and
executes simple programs.

+ src/cpu/ppc/vm/c2_globals_ppc.hpp
+ src/cpu/ppc/vm/c2_init_ppc.cpp
! src/cpu/ppc/vm/globals_ppc.hpp
+ src/cpu/ppc/vm/ppc.ad
+ src/cpu/ppc/vm/ppc_64.ad
+ src/cpu/ppc/vm/runtime_ppc.cpp
+ src/os_cpu/aix_ppc/vm/aix_ppc_64.ad
+ src/os_cpu/linux_ppc/vm/linux_ppc_64.ad
! src/share/vm/adlc/output_h.cpp

Changeset: de16f32e9563
Author:    Goetz
Date:      2013-03-22 11:18 +0100
URL:       http://hg.openjdk.java.net/ppc-aix-port/jdk8/hotspot/rev/de16f32e9563

C-interpreter: implement bytecode profiling.

! src/share/vm/interpreter/bytecodeInterpreter.cpp
+ src/share/vm/interpreter/bytecodeInterpreterProfiling.hpp
! src/share/vm/interpreter/interpreterRuntime.cpp
! src/share/vm/interpreter/interpreterRuntime.hpp
! src/share/vm/interpreter/invocationCounter.hpp
! src/share/vm/oops/methodData.cpp
! src/share/vm/oops/methodData.hpp
! src/share/vm/runtime/arguments.cpp
! src/share/vm/runtime/globals.hpp

Changeset: 6c188fc4caf1
Author:    Goetz
Date:      2013-03-22 11:18 +0100
URL:       http://hg.openjdk.java.net/ppc-aix-port/jdk8/hotspot/rev/6c188fc4caf1

opto: Move static _in_dump_cnt to Compile object.

If there are two or more compiler threads, a single static variable
does not suffice.

! src/share/vm/opto/callnode.cpp
! src/share/vm/opto/compile.cpp
! src/share/vm/opto/compile.hpp
! src/share/vm/opto/idealGraphPrinter.cpp
! src/share/vm/opto/node.cpp
! src/share/vm/opto/node.hpp

Changeset: eabde81a086d
Author:    Goetz
Date:      2013-03-22 11:18 +0100
URL:       http://hg.openjdk.java.net/ppc-aix-port/jdk8/hotspot/rev/eabde81a086d

opto: explicit specification of rematerialization in ad file.

Introduce attributes "ins_cannot_rematerialize" and
"ins_should_rematerialize" to adl which allows/forbids
rematerialization.
If ins_cannot_rematerialize is set, the instruction will never
rematerialize.
If ins_should_rematerialize is set, adlc generates a rule for
the node that allows rematerialization.
See also MachNode::rematerialize().

This fixes a problem with rematerialization on PPC: constants
are rematerialized in a way that extends the live range of the
MachConstantBaseNode. This causes the assertion 'edge_from_to' in
Scheduling::verify_good_schedule() to fire.

! src/share/vm/adlc/formssel.cpp
! src/share/vm/adlc/output_h.cpp

Changeset: 0739ece58742
Author:    Goetz
Date:      2013-03-22 11:18 +0100
URL:       http://hg.openjdk.java.net/ppc-aix-port/jdk8/hotspot/rev/0739ece58742

C-interpreter: Fix for OSR.

! src/cpu/ppc/vm/c2_globals_ppc.hpp
! src/share/vm/interpreter/bytecodeInterpreter.cpp

Changeset: 432e335f2de8
Author:    Goetz
Date:      2013-03-22 11:19 +0100
URL:       http://hg.openjdk.java.net/ppc-aix-port/jdk8/hotspot/rev/432e335f2de8

opto: adapt assertion in postaloc.cpp for ppc.

assert(false, "unexpected yanked node") fired.

! src/share/vm/opto/postaloc.cpp

Changeset: af03ae88a677
Author:    Goetz
Date:      2013-03-22 11:20 +0100
URL:       http://hg.openjdk.java.net/ppc-aix-port/jdk8/hotspot/rev/af03ae88a677

8006971 rt: Improve handling of memory ordering in taskqueue.hpp.

The current implementation does not work on PPC.
- Always access _bottom with ordered operations.
- Handle subfields of age directly from TaskQueue.

We are working on an improved version of this change.

+ src/os_cpu/aix_ppc/vm/taskqueue_aix_ppc.hpp
! src/share/vm/utilities/taskqueue.hpp

Changeset: 2a0711828c5c
Author:    Goetz
Date:      2013-03-22 11:20 +0100
URL:       http://hg.openjdk.java.net/ppc-aix-port/jdk8/hotspot/rev/2a0711828c5c

shared: introduce functions to specify memory ordering properties of platforms.

Functions as store_store_is_ordered() say whether corresponding
instructions on this platform can be reordered.  Use these to
decide whether to emit memory barriers. Replaces platform
specific defines.

For zero, conservative properties are assumed.

! src/os_cpu/aix_ppc/vm/orderAccess_aix_ppc.inline.hpp
! src/os_cpu/bsd_x86/vm/orderAccess_bsd_x86.inline.hpp
! src/os_cpu/bsd_zero/vm/orderAccess_bsd_zero.inline.hpp
! src/os_cpu/linux_ppc/vm/orderAccess_linux_ppc.inline.hpp
! src/os_cpu/linux_sparc/vm/orderAccess_linux_sparc.inline.hpp
! src/os_cpu/linux_x86/vm/orderAccess_linux_x86.inline.hpp
! src/os_cpu/linux_zero/vm/orderAccess_linux_zero.inline.hpp
! src/os_cpu/solaris_sparc/vm/orderAccess_solaris_sparc.inline.hpp
! src/os_cpu/solaris_x86/vm/orderAccess_solaris_x86.inline.hpp
! src/os_cpu/windows_x86/vm/orderAccess_windows_x86.inline.hpp
! src/share/vm/runtime/orderAccess.hpp

Changeset: 6d3862d273bf
Author:    Goetz
Date:      2013-03-22 11:20 +0100
URL:       http://hg.openjdk.java.net/ppc-aix-port/jdk8/hotspot/rev/6d3862d273bf

opto: issue more memory barriers as neede on PPC.

! src/share/vm/opto/generateOptoStub.cpp
! src/share/vm/opto/library_call.cpp

Changeset: 6d9d5d59b058
Author:    Goetz
Date:      2013-03-22 11:20 +0100
URL:       http://hg.openjdk.java.net/ppc-aix-port/jdk8/hotspot/rev/6d9d5d59b058

shared: ordering of Independent Reads of Independent Writes

Implementation of memory ordering for volatile/unsafe accesses.
This supports ordering of "Independent Reads of Independent Writes".

On PPC we must issue memory barriers to get Java semantics of volatile
and class Unsafe correct. We do
  volatile store: lwsync-store
  volatile load: fence-load-acquire

Without this, the VolatileIRIW test of the concurrency torture test
suite fails.

This changes C-interpreter, opto and rt.

! src/share/vm/interpreter/bytecodeInterpreter.cpp
! src/share/vm/opto/library_call.cpp
! src/share/vm/opto/parse.hpp
! src/share/vm/opto/parse1.cpp
! src/share/vm/opto/parse3.cpp
! src/share/vm/prims/unsafe.cpp

Changeset: afa620ebe205
Author:    Goetz
Date:      2013-03-22 11:20 +0100
URL:       http://hg.openjdk.java.net/ppc-aix-port/jdk8/hotspot/rev/afa620ebe205

shared: Memory ordering as required for platforms with weak memory ordering (PPC)

Do we still need the ordering in cpCacheOop.hpp with the new mh implementation?

! src/share/vm/code/nmethod.cpp
! src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp
! src/share/vm/gc_implementation/g1/g1SATBCardTableModRefBS.cpp
! src/share/vm/gc_implementation/g1/g1SATBCardTableModRefBS.hpp
! src/share/vm/interpreter/bytecodeInterpreter.cpp
! src/share/vm/memory/barrierSet.hpp
! src/share/vm/memory/barrierSet.inline.hpp
! src/share/vm/memory/cardTableModRefBS.cpp
! src/share/vm/memory/cardTableModRefBS.hpp
! src/share/vm/memory/modRefBarrierSet.hpp
! src/share/vm/oops/cpCache.cpp
! src/share/vm/oops/cpCache.hpp
! src/share/vm/oops/instanceKlass.cpp
! src/share/vm/oops/method.hpp
! src/share/vm/oops/oop.inline.hpp
! src/share/vm/runtime/sweeper.cpp
! src/share/vm/runtime/synchronizer.cpp
! src/share/vm/runtime/thread.hpp

Changeset: 4e123d71de46
Author:    Goetz
Date:      2013-03-22 11:20 +0100
URL:       http://hg.openjdk.java.net/ppc-aix-port/jdk8/hotspot/rev/4e123d71de46

C-interpreter: memory ordering as required for platforms with weak memory ordering (PPC)

! src/share/vm/interpreter/bytecodeInterpreter.cpp

Changeset: 8c1249b329cd
Author:    Goetz
Date:      2013-03-22 11:21 +0100
URL:       http://hg.openjdk.java.net/ppc-aix-port/jdk8/hotspot/rev/8c1249b329cd

opto / regalloc: Fix problem with rematerialization

On PPC, castX2P is rematerialized just where the live range
of another rematerialized node using the same def lives.
This causes invalid register dependencies (while the code
happens to be correct).  In the end the VM aborts with
assert(!_reg_node[reg_lo] || edge_from_to(_reg_node[reg_lo],def), msg);

Seen in jvm2008: -Xcomp -Xbatch -Djava.io.tmpdir=./tmp -jar SPECjvm2008.jar
-ikv -wt 30 -it 60 -bt 2 --base xml.validation
in sun.awt.X11.XAtom::getAtomListProperty.

Fixed by aborting and retrying the register allocation cycle.
We had to increase the number of register allocation cycles, as
as consequence we got spill split recycle failures.

This fix is suboptimal as it increases the runtime of
the register allocation (only on PPC), but we saw similar
problems in various situations.  Therefor excluding castX2P
from rematerialization not only worsens register allocation,
but is not sufficient, either.

! src/share/vm/opto/chaitin.cpp
! src/share/vm/opto/reg_split.cpp

Changeset: 684e6ea70669
Author:    Goetz
Date:      2013-03-22 11:21 +0100
URL:       http://hg.openjdk.java.net/ppc-aix-port/jdk8/hotspot/rev/684e6ea70669

C-interpreter: implement G1 support

! src/share/vm/interpreter/bytecodeInterpreter.cpp

Changeset: 6ac67c3af1f8
Author:    Goetz
Date:      2013-03-22 11:21 +0100
URL:       http://hg.openjdk.java.net/ppc-aix-port/jdk8/hotspot/rev/6ac67c3af1f8

shared: Make hsdis build and work on Linux/PPC64

! src/share/tools/hsdis/Makefile
! src/share/tools/hsdis/hsdis.c

Changeset: 79610dadbafb
Author:    Goetz
Date:      2013-03-22 11:22 +0100
URL:       http://hg.openjdk.java.net/ppc-aix-port/jdk8/hotspot/rev/79610dadbafb

rt: extend ELF-decoder to ppc function descriptor tables

We had to extend the ELF-decoder to take into account the function descriptor tables on PPC64.

On newer Linux systems (i.e. newer SLES9) the compiler does not generate symbol entries for functions in the '.text' segment. Instead, symbols for functions only point into the function descriptor table (i.e. the '.opd' section in the ELF file). In order to find the corresponding symbol for a certain address, we have to look up the real address and size of each function symbol in the function descriptor table.

See:
http://www.gelato.unsw.edu.au/IA64wiki/PPC64ABI
http://refspecs.linuxfoundation.org/ELF/ppc64/PPC-elf64abi-1.9.html#FUNC-DES

! src/share/vm/utilities/elfFile.cpp
! src/share/vm/utilities/elfFile.hpp
! src/share/vm/utilities/elfSymbolTable.cpp
! src/share/vm/utilities/elfSymbolTable.hpp

Changeset: 389309950fcd
Author:    Goetz
Date:      2013-03-22 11:22 +0100
URL:       http://hg.openjdk.java.net/ppc-aix-port/jdk8/hotspot/rev/389309950fcd

asm: fix DelayedConstant

In case a delayed constant is allocated after the call to
update(), the value field was never set.  Set it in the add()
routine.

! src/share/vm/asm/assembler.cpp

Changeset: 5792f69f1881
Author:    Goetz
Date:      2013-03-22 11:22 +0100
URL:       http://hg.openjdk.java.net/ppc-aix-port/jdk8/hotspot/rev/5792f69f1881

linux: extend signal handler to catch SIGTRAP on ppc.

Ppc has a trap instruction the port uses for several optimizations.
E.g. to check for NULL on aix, where ImplicitNullChecks have only
limited effect as the zero page is not read protected.

Maybe add flag HandleSIGTRAP that gurads the changes (instead of #ifdef ppc),
and which is set to constant false on other platfoms than linux_ppc.

! src/os/linux/vm/os_linux.cpp

Changeset: 2c8a195051eb
Author:    Goetz
Date:      2013-03-22 11:22 +0100
URL:       http://hg.openjdk.java.net/ppc-aix-port/jdk8/hotspot/rev/2c8a195051eb

opto: Extend ImplicitNullCheck optimizations.

ImplicitNullChecks did not work on platforms where the zero
page is only write protected.
Added os property 'zero_page_read_protected' and extended
ImplicitNullCheck optimization to only consider stores if
this property is not true.
This is needed on AIX.

! src/cpu/ppc/vm/globals_ppc.hpp
! src/cpu/ppc/vm/macroAssembler_ppc.inline.hpp
! src/cpu/ppc/vm/ppc.ad
! src/cpu/ppc/vm/sharedRuntime_ppc.cpp
! src/cpu/ppc/vm/vtableStubs_ppc_64.cpp
! src/os/linux/vm/os_linux.hpp
! src/os/solaris/vm/os_solaris.hpp
! src/os/windows/vm/os_windows.hpp
! src/share/vm/opto/callGenerator.cpp
! src/share/vm/opto/lcm.cpp

Changeset: f9ce6652d9c2
Author:    Goetz
Date:      2013-03-22 11:22 +0100
URL:       http://hg.openjdk.java.net/ppc-aix-port/jdk8/hotspot/rev/f9ce6652d9c2

opto: trap based null and range checks

PPC has the tdi instruction that does a compare and raises SIGTRAP
if the compare is successful.
With this instruction conditional branches leading to uncommon
traps can be implemented very efficiently.
This is especially needed on aix, where there are almost no
possibilities for ImplicitNullChecks as the zero page is not
protected.
On linux, this accounts for about 2% jvm2008 performance.

! src/cpu/ppc/vm/ppc.ad
! src/cpu/sparc/vm/globals_sparc.hpp
! src/cpu/x86/vm/globals_x86.hpp
! src/cpu/zero/vm/globals_zero.hpp
! src/share/vm/adlc/main.cpp
! src/share/vm/adlc/output_h.cpp
! src/share/vm/opto/block.cpp
! src/share/vm/opto/node.hpp
! src/share/vm/opto/output.cpp

Changeset: bd513734703c
Author:    Goetz
Date:      2013-03-22 11:22 +0100
URL:       http://hg.openjdk.java.net/ppc-aix-port/jdk8/hotspot/rev/bd513734703c

imported patch 3491_C_interpreter__fix_biased_locking.patch

! src/share/vm/interpreter/bytecodeInterpreter.cpp
! src/share/vm/runtime/arguments.cpp



More information about the ppc-aix-port-dev mailing list