changeset 5168:9c922da99034

Recent changes to patch queue.
author goetz
date Fri, 06 Sep 2013 11:29:41 +0200
parents ace9148aa0e1
children eab1047fa3ea
files ppc_patches/0009_linux_ppc_files.patch ppc_patches/0011-2_Adapt_PPC_to_8003424.patch ppc_patches/0012_rt-ppc_enable_better_implicit_null_check-posix.patch ppc_patches/0013_basic_Aix_adaptions.patch ppc_patches/0014_aix_make_changes.patch ppc_patches/0015_aix_ppc_files.patch ppc_patches/0111_opto-Support_for_C_calling_conventions.patch ppc_patches/0112_opto-C_argument_in_register_AND_stack_slot.patch ppc_patches/0115_8003850_opto-introduce_phase_lateExpand.patch ppc_patches/0122_PPC-C2_compiler_port-ppc_files.patch ppc_patches/0201_C_interpreter-implement_bytecode_profiling.patch ppc_patches/0208_rt-improve_handling_of_memory_ordering_in_taskqueue_hpp.patch ppc_patches/0215_opto-extend_ImplicitNullCheck_optimizations.patch ppc_patches/0216_opto-trap_based_null_and_range_checks.patch ppc_patches/series
diffstat 15 files changed, 2082 insertions(+), 1082 deletions(-) [+]
line wrap: on
line diff
--- a/ppc_patches/0009_linux_ppc_files.patch	Wed Aug 28 16:09:50 2013 +0000
+++ b/ppc_patches/0009_linux_ppc_files.patch	Fri Sep 06 11:29:41 2013 +0200
@@ -2,14 +2,13 @@
 # User goetz
 # Date 1374503506 -7200
 # Node ID b2d1cd9c3ed62d4f851bcb9e3ba54a64edaf30f1
-# Parent  438e13354adf109452928df85b3d3eda0614706a
+# Parent ca3dacaf9041f7deda09f95d86988421f98f40f5
 8019972: PPC64 (part 9): platform files for interpreter only VM.
 Summary: With this change the HotSpot core build works on Linux/PPC64. The VM succesfully executes simple test programs.
 
-diff --git a/src/cpu/ppc/vm/assembler_ppc.cpp b/src/cpu/ppc/vm/assembler_ppc.cpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/assembler_ppc.cpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/assembler_ppc.cpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/assembler_ppc.cpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,699 @@
 +/*
 + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -710,10 +709,9 @@
 +  code()->decode();
 +}
 +#endif // !PRODUCT
-diff --git a/src/cpu/ppc/vm/assembler_ppc.hpp b/src/cpu/ppc/vm/assembler_ppc.hpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/assembler_ppc.hpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/assembler_ppc.hpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/assembler_ppc.hpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,1963 @@
 +/*
 + * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -2678,10 +2676,9 @@
 +
 +
 +#endif // CPU_PPC_VM_ASSEMBLER_PPC_HPP
-diff --git a/src/cpu/ppc/vm/assembler_ppc.inline.hpp b/src/cpu/ppc/vm/assembler_ppc.inline.hpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/assembler_ppc.inline.hpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/assembler_ppc.inline.hpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/assembler_ppc.inline.hpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,792 @@
 +/*
 + * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -3475,10 +3472,9 @@
 +
 +
 +#endif // CPU_PPC_VM_ASSEMBLER_PPC_INLINE_HPP
-diff --git a/src/cpu/ppc/vm/bytecodeInterpreter_ppc.hpp b/src/cpu/ppc/vm/bytecodeInterpreter_ppc.hpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/bytecodeInterpreter_ppc.hpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/bytecodeInterpreter_ppc.hpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/bytecodeInterpreter_ppc.hpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,105 @@
 +/*
 + * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -3585,10 +3581,9 @@
 +
 +
 +#endif // CPU_PPC_VM_BYTECODEINTERPRETER_PPC_PP
-diff --git a/src/cpu/ppc/vm/bytecodeInterpreter_ppc.inline.hpp b/src/cpu/ppc/vm/bytecodeInterpreter_ppc.inline.hpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/bytecodeInterpreter_ppc.inline.hpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/bytecodeInterpreter_ppc.inline.hpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/bytecodeInterpreter_ppc.inline.hpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,290 @@
 +/*
 + * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -3880,10 +3875,9 @@
 +#endif // CC_INTERP
 +
 +#endif // CPU_PPC_VM_BYTECODEINTERPRETER_PPC_INLINE_HPP
-diff --git a/src/cpu/ppc/vm/bytecodes_ppc.cpp b/src/cpu/ppc/vm/bytecodes_ppc.cpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/bytecodes_ppc.cpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/bytecodes_ppc.cpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/bytecodes_ppc.cpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,31 @@
 +/*
 + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -3916,10 +3910,9 @@
 +void Bytecodes::pd_initialize() {
 +  // No ppc specific initialization.
 +}
-diff --git a/src/cpu/ppc/vm/bytecodes_ppc.hpp b/src/cpu/ppc/vm/bytecodes_ppc.hpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/bytecodes_ppc.hpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/bytecodes_ppc.hpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/bytecodes_ppc.hpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,31 @@
 +/*
 + * Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -3952,10 +3945,9 @@
 +// No ppc64 specific bytecodes
 +
 +#endif // CPU_PPC_VM_BYTECODES_PPC_HPP
-diff --git a/src/cpu/ppc/vm/bytes_ppc.hpp b/src/cpu/ppc/vm/bytes_ppc.hpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/bytes_ppc.hpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/bytes_ppc.hpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/bytes_ppc.hpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,156 @@
 +/*
 + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -4113,10 +4105,9 @@
 +};
 +
 +#endif // CPU_PPC_VM_BYTES_PPC_HPP
-diff --git a/src/cpu/ppc/vm/codeBuffer_ppc.hpp b/src/cpu/ppc/vm/codeBuffer_ppc.hpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/codeBuffer_ppc.hpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/codeBuffer_ppc.hpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/codeBuffer_ppc.hpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,35 @@
 +/*
 + * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -4153,10 +4144,9 @@
 +  void flush_bundle(bool start_new_bundle) {}
 +
 +#endif // CPU_PPC_VM_CODEBUFFER_PPC_HPP
-diff --git a/src/cpu/ppc/vm/compiledIC_ppc.cpp b/src/cpu/ppc/vm/compiledIC_ppc.cpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/compiledIC_ppc.cpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/compiledIC_ppc.cpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/compiledIC_ppc.cpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,261 @@
 +/*
 + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -4419,10 +4409,9 @@
 +}
 +
 +#endif // !PRODUCT
-diff --git a/src/cpu/ppc/vm/copy_ppc.hpp b/src/cpu/ppc/vm/copy_ppc.hpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/copy_ppc.hpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/copy_ppc.hpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/copy_ppc.hpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,167 @@
 +/*
 + * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -4591,10 +4580,9 @@
 +}
 +
 +#endif // CPU_PPC_VM_COPY_PPC_HPP
-diff --git a/src/cpu/ppc/vm/cppInterpreterGenerator_ppc.hpp b/src/cpu/ppc/vm/cppInterpreterGenerator_ppc.hpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/cppInterpreterGenerator_ppc.hpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/cppInterpreterGenerator_ppc.hpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/cppInterpreterGenerator_ppc.hpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,43 @@
 +/*
 + * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -4639,10 +4627,9 @@
 +  void generate_compute_interpreter_state(Label& exception_return);
 +
 +#endif // CPU_PPC_VM_CPPINTERPRETERGENERATOR_PPC_HPP
-diff --git a/src/cpu/ppc/vm/cppInterpreter_ppc.cpp b/src/cpu/ppc/vm/cppInterpreter_ppc.cpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/cppInterpreter_ppc.cpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/cppInterpreter_ppc.cpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/cppInterpreter_ppc.cpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,3044 @@
 +/*
 + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -5006,7 +4993,7 @@
 +// Registers updated
 +//   R14_state       - address of callee's interpreter state
 +//   R1_SP           - new stack pointer
-+//   CCR4_is_synced- current method is synchronized
++//   CCR4_is_synced  - current method is synchronized
 +//
 +void CppInterpreterGenerator::generate_compute_interpreter_state(Label& stack_overflow_return) {
 +  //
@@ -7688,10 +7675,9 @@
 +}
 +
 +#endif // CC_INTERP
-diff --git a/src/cpu/ppc/vm/cppInterpreter_ppc.hpp b/src/cpu/ppc/vm/cppInterpreter_ppc.hpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/cppInterpreter_ppc.hpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/cppInterpreter_ppc.hpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/cppInterpreter_ppc.hpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,39 @@
 +/*
 + * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -7732,10 +7718,9 @@
 +  const static int InterpreterCodeSize = 12*K;
 +
 +#endif // CPU_PPC_VM_CPPINTERPRETER_PPC_HPP
-diff --git a/src/cpu/ppc/vm/debug_ppc.cpp b/src/cpu/ppc/vm/debug_ppc.cpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/debug_ppc.cpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/debug_ppc.cpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/debug_ppc.cpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,35 @@
 +/*
 + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -7772,10 +7757,9 @@
 +#include "utilities/top.hpp"
 +
 +void pd_ps(frame f) {}
-diff --git a/src/cpu/ppc/vm/depChecker_ppc.hpp b/src/cpu/ppc/vm/depChecker_ppc.hpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/depChecker_ppc.hpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/depChecker_ppc.hpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/depChecker_ppc.hpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,31 @@
 +/*
 + * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -7808,10 +7792,9 @@
 +// Nothing to do on ppc64
 +
 +#endif // CPU_PPC_VM_DEPCHECKER_PPC_HPP
-diff --git a/src/cpu/ppc/vm/disassembler_ppc.hpp b/src/cpu/ppc/vm/disassembler_ppc.hpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/disassembler_ppc.hpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/disassembler_ppc.hpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/disassembler_ppc.hpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,37 @@
 +/*
 + * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -7850,10 +7833,9 @@
 +  }
 +
 +#endif // CPU_PPC_VM_DISASSEMBLER_PPC_HPP
-diff --git a/src/cpu/ppc/vm/frame_ppc.cpp b/src/cpu/ppc/vm/frame_ppc.cpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/frame_ppc.cpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/frame_ppc.cpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/frame_ppc.cpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,306 @@
 +/*
 + * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -8161,10 +8143,9 @@
 +  // unused... but returns fp() to minimize changes introduced by 7087445
 +  return fp();
 +}
-diff --git a/src/cpu/ppc/vm/frame_ppc.hpp b/src/cpu/ppc/vm/frame_ppc.hpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/frame_ppc.hpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/frame_ppc.hpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/frame_ppc.hpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,449 @@
 +/*
 + * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -8615,10 +8596,9 @@
 +  };
 +
 +#endif // CPU_PPC_VM_FRAME_PPC_HPP
-diff --git a/src/cpu/ppc/vm/frame_ppc.inline.hpp b/src/cpu/ppc/vm/frame_ppc.inline.hpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/frame_ppc.inline.hpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/frame_ppc.inline.hpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/frame_ppc.inline.hpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,239 @@
 +/*
 + * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -8859,10 +8839,9 @@
 +}
 +
 +#endif // CPU_PPC_VM_FRAME_PPC_INLINE_HPP
-diff --git a/src/cpu/ppc/vm/globalDefinitions_ppc.hpp b/src/cpu/ppc/vm/globalDefinitions_ppc.hpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/globalDefinitions_ppc.hpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/globalDefinitions_ppc.hpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/globalDefinitions_ppc.hpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,34 @@
 +/*
 + * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -8898,10 +8877,9 @@
 +const int StackAlignmentInBytes  = 16;
 +
 +#endif // CPU_PPC_VM_GLOBALDEFINITIONS_PPC_HPP
-diff --git a/src/cpu/ppc/vm/globals_ppc.hpp b/src/cpu/ppc/vm/globals_ppc.hpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/globals_ppc.hpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/globals_ppc.hpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/globals_ppc.hpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,116 @@
 +/*
 + * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -9019,10 +8997,9 @@
 +
 +
 +#endif // CPU_PPC_VM_GLOBALS_PPC_HPP
-diff --git a/src/cpu/ppc/vm/icBuffer_ppc.cpp b/src/cpu/ppc/vm/icBuffer_ppc.cpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/icBuffer_ppc.cpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/icBuffer_ppc.cpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/icBuffer_ppc.cpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,71 @@
 +/*
 + * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -9095,10 +9072,9 @@
 +  return o;
 +}
 +
-diff --git a/src/cpu/ppc/vm/icache_ppc.cpp b/src/cpu/ppc/vm/icache_ppc.cpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/icache_ppc.cpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/icache_ppc.cpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/icache_ppc.cpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,77 @@
 +/*
 + * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -9177,10 +9153,9 @@
 +  // First call to flush itself
 +  ICache::invalidate_range((address)(*flush_icache_stub), 0);
 +}
-diff --git a/src/cpu/ppc/vm/icache_ppc.hpp b/src/cpu/ppc/vm/icache_ppc.hpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/icache_ppc.hpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/icache_ppc.hpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/icache_ppc.hpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,44 @@
 +/*
 + * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -9226,10 +9201,9 @@
 +};
 +
 +#endif // CPU_PPC_VM_ICACHE_PPC_HPP
-diff --git a/src/cpu/ppc/vm/interp_masm_ppc_64.cpp b/src/cpu/ppc/vm/interp_masm_ppc_64.cpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/interp_masm_ppc_64.cpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/interp_masm_ppc_64.cpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/interp_masm_ppc_64.cpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,504 @@
 +/*
 + * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -9735,10 +9709,9 @@
 +  ld(R15_prev_state, state_(_prev_link));
 +}
 +#endif // CC_INTERP
-diff --git a/src/cpu/ppc/vm/interp_masm_ppc_64.hpp b/src/cpu/ppc/vm/interp_masm_ppc_64.hpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/interp_masm_ppc_64.hpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/interp_masm_ppc_64.hpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/interp_masm_ppc_64.hpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,89 @@
 +/*
 + * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -9829,10 +9802,9 @@
 +};
 +
 +#endif // CPU_PPC_VM_INTERP_MASM_PPC_64_HPP
-diff --git a/src/cpu/ppc/vm/interpreterGenerator_ppc.hpp b/src/cpu/ppc/vm/interpreterGenerator_ppc.hpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/interpreterGenerator_ppc.hpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/interpreterGenerator_ppc.hpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/interpreterGenerator_ppc.hpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,37 @@
 +/*
 + * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -9871,10 +9843,9 @@
 +  address generate_Reference_get_entry(void);
 +
 +#endif // CPU_PPC_VM_INTERPRETERGENERATOR_PPC_HPP
-diff --git a/src/cpu/ppc/vm/interpreterRT_ppc.cpp b/src/cpu/ppc/vm/interpreterRT_ppc.cpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/interpreterRT_ppc.cpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/interpreterRT_ppc.cpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/interpreterRT_ppc.cpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,150 @@
 +/*
 + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -10026,10 +9997,9 @@
 +  assert(m->is_native(), "sanity check");
 +  return AbstractInterpreter::result_handler(m->result_type());
 +IRT_END
-diff --git a/src/cpu/ppc/vm/interpreterRT_ppc.hpp b/src/cpu/ppc/vm/interpreterRT_ppc.hpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/interpreterRT_ppc.hpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/interpreterRT_ppc.hpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/interpreterRT_ppc.hpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,62 @@
 +/*
 + * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -10093,10 +10063,9 @@
 +static address get_signature(JavaThread* thread, Method* method);
 +
 +#endif // CPU_PPC_VM_INTERPRETERRT_PPC_HPP
-diff --git a/src/cpu/ppc/vm/interpreter_ppc.cpp b/src/cpu/ppc/vm/interpreter_ppc.cpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/interpreter_ppc.cpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/interpreter_ppc.cpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/interpreter_ppc.cpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,736 @@
 +/*
 + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -10834,10 +10803,9 @@
 +
 +  assert(f->is_interpreted_frame(), "must be interpreted");
 +}
-diff --git a/src/cpu/ppc/vm/interpreter_ppc.hpp b/src/cpu/ppc/vm/interpreter_ppc.hpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/interpreter_ppc.hpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/interpreter_ppc.hpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/interpreter_ppc.hpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,42 @@
 +/*
 + * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -10881,10 +10849,9 @@
 +  }
 +
 +#endif // CPU_PPC_VM_INTERPRETER_PPC_PP
-diff --git a/src/cpu/ppc/vm/javaFrameAnchor_ppc.hpp b/src/cpu/ppc/vm/javaFrameAnchor_ppc.hpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/javaFrameAnchor_ppc.hpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/javaFrameAnchor_ppc.hpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/javaFrameAnchor_ppc.hpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,82 @@
 +/*
 + * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -10968,10 +10935,9 @@
 +  void set_last_Java_sp(intptr_t* sp) { OrderAccess::release(); _last_Java_sp = sp; }
 +
 +#endif // CPU_PPC_VM_JAVAFRAMEANCHOR_PPC_HPP
-diff --git a/src/cpu/ppc/vm/jniFastGetField_ppc.cpp b/src/cpu/ppc/vm/jniFastGetField_ppc.cpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/jniFastGetField_ppc.cpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/jniFastGetField_ppc.cpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/jniFastGetField_ppc.cpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,75 @@
 +/*
 + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -11048,10 +11014,9 @@
 +address JNI_FastGetField::generate_fast_get_double_field() {
 +  return generate_fast_get_float_field0(T_DOUBLE);
 +}
-diff --git a/src/cpu/ppc/vm/jniTypes_ppc.hpp b/src/cpu/ppc/vm/jniTypes_ppc.hpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/jniTypes_ppc.hpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/jniTypes_ppc.hpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/jniTypes_ppc.hpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,110 @@
 +/*
 + * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -11163,10 +11128,9 @@
 +};
 +
 +#endif // CPU_PPC_VM_JNITYPES_PPC_HPP
-diff --git a/src/cpu/ppc/vm/jni_ppc.h b/src/cpu/ppc/vm/jni_ppc.h
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/jni_ppc.h
+diff -r ca3dacaf9041 src/cpu/ppc/vm/jni_ppc.h
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/jni_ppc.h	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,53 @@
 +/*
 + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -11221,10 +11185,9 @@
 +typedef signed char jbyte;
 +
 +#endif // CPU_PPC_VM_JNI_PPC_H
-diff --git a/src/cpu/ppc/vm/macroAssembler_ppc.cpp b/src/cpu/ppc/vm/macroAssembler_ppc.cpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/macroAssembler_ppc.cpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/macroAssembler_ppc.cpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/macroAssembler_ppc.cpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,3017 @@
 +/*
 + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -14243,11 +14206,10 @@
 +}
 +
 +#endif // !PRODUCT
-diff --git a/src/cpu/ppc/vm/macroAssembler_ppc.hpp b/src/cpu/ppc/vm/macroAssembler_ppc.hpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/macroAssembler_ppc.hpp
-@@ -0,0 +1,662 @@
+diff -r ca3dacaf9041 src/cpu/ppc/vm/macroAssembler_ppc.hpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/macroAssembler_ppc.hpp	Wed Jul 24 14:29:57 2013 +0200
+@@ -0,0 +1,658 @@
 +/*
 + * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
 + * Copyright 2012, 2013 SAP AG. All rights reserved.
@@ -14702,10 +14664,6 @@
 +  // Method handle support (JSR 292).
 +  void check_method_handle_type(Register mtype_reg, Register mh_reg, Register temp_reg, Label& wrong_method_type);
 +
-+  void load_method_handle_vmslots(Register vmslots_reg, Register mh_reg, Register temp_reg);
-+
-+  void jump_to_method_handle_entry(Register mh_reg, Register temp_reg, bool link = false);
-+
 +  RegisterOrConstant argument_offset(RegisterOrConstant arg_slot, Register temp_reg, int extra_slot_offset = 0);
 +
 +  // Biased locking support
@@ -14910,10 +14868,9 @@
 +};
 +
 +#endif // CPU_PPC_VM_MACROASSEMBLER_PPC_HPP
-diff --git a/src/cpu/ppc/vm/macroAssembler_ppc.inline.hpp b/src/cpu/ppc/vm/macroAssembler_ppc.inline.hpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/macroAssembler_ppc.inline.hpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/macroAssembler_ppc.inline.hpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/macroAssembler_ppc.inline.hpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,382 @@
 +/*
 + * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -15297,10 +15254,9 @@
 +}
 +
 +#endif // CPU_PPC_VM_MACROASSEMBLER_PPC_INLINE_HPP
-diff --git a/src/cpu/ppc/vm/metaspaceShared_ppc.cpp b/src/cpu/ppc/vm/metaspaceShared_ppc.cpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/metaspaceShared_ppc.cpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/metaspaceShared_ppc.cpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/metaspaceShared_ppc.cpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,61 @@
 +/*
 + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -15363,10 +15319,9 @@
 +  Unimplemented();
 +}
 +
-diff --git a/src/cpu/ppc/vm/methodHandles_ppc.cpp b/src/cpu/ppc/vm/methodHandles_ppc.cpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/methodHandles_ppc.cpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/methodHandles_ppc.cpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/methodHandles_ppc.cpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,540 @@
 +/*
 + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -15887,13 +15842,13 @@
 +
 +  BLOCK_COMMENT("trace_method_handle {");
 +
-+  int nbytes_save = 10*8;             // 10 volatile gprs
++  int nbytes_save = 10 * 8;             // 10 volatile gprs 
 +  __ save_LR_CR(R0);
-+  __ mr(R0, R1_SP);          // saved_sp
++  __ mr(R0, R1_SP);                     // saved_sp 
 +  assert(Assembler::is_simm(-nbytes_save, 16), "Overwriting R0");
 +  // push_frame_abi112 only uses R0 if nbytes_save is wider than 16 bit
 +  __ push_frame_abi112(nbytes_save, R0);
-+  __ save_volatile_gprs(R1_SP, frame::abi_112_size); // except R0
++  __ save_volatile_gprs(R1_SP, frame::abi_112_size); // Except R0.
 +
 +  __ load_const(R3_ARG1, (address)adaptername);
 +  __ mr(R4_ARG2, R23_method_handle);
@@ -15908,10 +15863,9 @@
 +  BLOCK_COMMENT("} trace_method_handle");
 +}
 +#endif // PRODUCT
-diff --git a/src/cpu/ppc/vm/methodHandles_ppc.hpp b/src/cpu/ppc/vm/methodHandles_ppc.hpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/methodHandles_ppc.hpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/methodHandles_ppc.hpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/methodHandles_ppc.hpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,62 @@
 +/*
 + * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -15975,10 +15929,9 @@
 +                                  Register recv, Register method_temp,
 +                                  Register temp2, Register temp3,
 +                                  bool for_compiler_entry);
-diff --git a/src/cpu/ppc/vm/nativeInst_ppc.cpp b/src/cpu/ppc/vm/nativeInst_ppc.cpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/nativeInst_ppc.cpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/nativeInst_ppc.cpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/nativeInst_ppc.cpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,382 @@
 +/*
 + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -16362,10 +16315,9 @@
 +  *(address*)(ctable + destination_toc_offset()) = new_destination;
 +}
 +
-diff --git a/src/cpu/ppc/vm/nativeInst_ppc.hpp b/src/cpu/ppc/vm/nativeInst_ppc.hpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/nativeInst_ppc.hpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/nativeInst_ppc.hpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/nativeInst_ppc.hpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,397 @@
 +/*
 + * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -16764,10 +16716,9 @@
 +}
 +
 +#endif // CPU_PPC_VM_NATIVEINST_PPC_HPP
-diff --git a/src/cpu/ppc/vm/registerMap_ppc.hpp b/src/cpu/ppc/vm/registerMap_ppc.hpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/registerMap_ppc.hpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/registerMap_ppc.hpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/registerMap_ppc.hpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,45 @@
 +/*
 + * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -16814,10 +16765,9 @@
 +  void pd_initialize_from(const RegisterMap* map) {}
 +
 +#endif // CPU_PPC_VM_REGISTERMAP_PPC_HPP
-diff --git a/src/cpu/ppc/vm/register_definitions_ppc.cpp b/src/cpu/ppc/vm/register_definitions_ppc.cpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/register_definitions_ppc.cpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/register_definitions_ppc.cpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/register_definitions_ppc.cpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,42 @@
 +/*
 + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -16861,10 +16811,9 @@
 +REGISTER_DEFINITION(Register, noreg);
 +
 +REGISTER_DEFINITION(FloatRegister, fnoreg);
-diff --git a/src/cpu/ppc/vm/register_ppc.cpp b/src/cpu/ppc/vm/register_ppc.cpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/register_ppc.cpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/register_ppc.cpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/register_ppc.cpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,77 @@
 +/*
 + * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -16943,10 +16892,9 @@
 +  };
 +  return is_valid() ? names[encoding()] : "vnoreg";
 +}
-diff --git a/src/cpu/ppc/vm/register_ppc.hpp b/src/cpu/ppc/vm/register_ppc.hpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/register_ppc.hpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/register_ppc.hpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/register_ppc.hpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,635 @@
 +/*
 + * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -17583,10 +17531,9 @@
 +#endif
 +
 +#endif // CPU_PPC_VM_REGISTER_PPC_HPP
-diff --git a/src/cpu/ppc/vm/relocInfo_ppc.cpp b/src/cpu/ppc/vm/relocInfo_ppc.cpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/relocInfo_ppc.cpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/relocInfo_ppc.cpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/relocInfo_ppc.cpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,133 @@
 +/*
 + * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -17721,10 +17668,9 @@
 +
 +void metadata_Relocation::pd_fix_value(address x) {
 +}
-diff --git a/src/cpu/ppc/vm/relocInfo_ppc.hpp b/src/cpu/ppc/vm/relocInfo_ppc.hpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/relocInfo_ppc.hpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/relocInfo_ppc.hpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/relocInfo_ppc.hpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,46 @@
 +/*
 + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -17772,10 +17718,9 @@
 +  };
 +
 +#endif // CPU_PPC_VM_RELOCINFO_PPC_HPP
-diff --git a/src/cpu/ppc/vm/sharedRuntime_ppc.cpp b/src/cpu/ppc/vm/sharedRuntime_ppc.cpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/sharedRuntime_ppc.cpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/sharedRuntime_ppc.cpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/sharedRuntime_ppc.cpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,3209 @@
 +/*
 + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -20986,11 +20931,10 @@
 +  return RuntimeStub::new_runtime_stub(name, &buffer, frame_complete, frame_size_in_bytes/wordSize,
 +                                       oop_maps, true);
 +}
-diff --git a/src/cpu/ppc/vm/stubGenerator_ppc.cpp b/src/cpu/ppc/vm/stubGenerator_ppc.cpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/stubGenerator_ppc.cpp
-@@ -0,0 +1,2058 @@
+diff -r ca3dacaf9041 src/cpu/ppc/vm/stubGenerator_ppc.cpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/stubGenerator_ppc.cpp	Wed Jul 24 14:29:57 2013 +0200
+@@ -0,0 +1,2057 @@
 +/*
 + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
 + * Copyright 2012, 2013 SAP AG. All rights reserved.
@@ -21231,8 +21175,7 @@
 +
 +      // initialize call_stub locals (step 2)
 +      // now save R17_tos as arguments_tos_address
-+      __ std(R17_tos,
-+                 _entry_frame_locals_neg(arguments_tos_address), r_entryframe_fp);
++      __ std(R17_tos, _entry_frame_locals_neg(arguments_tos_address), r_entryframe_fp);
 +
 +      // load argument registers for call
 +      __ mr(R19_method, r_arg_method);
@@ -23049,10 +22992,9 @@
 +void StubGenerator_generate(CodeBuffer* code, bool all) {
 +  StubGenerator g(code, all);
 +}
-diff --git a/src/cpu/ppc/vm/stubRoutines_ppc_64.cpp b/src/cpu/ppc/vm/stubRoutines_ppc_64.cpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/stubRoutines_ppc_64.cpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/stubRoutines_ppc_64.cpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/stubRoutines_ppc_64.cpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,40 @@
 +/*
 + * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -23094,10 +23036,9 @@
 +// a description of how to extend it, see the stubRoutines.hpp file.
 +
 +
-diff --git a/src/cpu/ppc/vm/stubRoutines_ppc_64.hpp b/src/cpu/ppc/vm/stubRoutines_ppc_64.hpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/stubRoutines_ppc_64.hpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/stubRoutines_ppc_64.hpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/stubRoutines_ppc_64.hpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,40 @@
 +/*
 + * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -23139,10 +23080,9 @@
 +};
 +
 +#endif // CPU_PPC_VM_STUBROUTINES_PPC_64_HPP
-diff --git a/src/cpu/ppc/vm/vmStructs_ppc.hpp b/src/cpu/ppc/vm/vmStructs_ppc.hpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/vmStructs_ppc.hpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/vmStructs_ppc.hpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/vmStructs_ppc.hpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,41 @@
 +/*
 + * Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -23185,10 +23125,9 @@
 +#define VM_LONG_CONSTANTS_CPU(declare_constant, declare_preprocessor_constant, declare_c1_constant, declare_c2_constant, declare_c2_preprocessor_constant)
 +
 +#endif // CPU_PPC_VM_VMSTRUCTS_PPC_HPP
-diff --git a/src/cpu/ppc/vm/vm_version_ppc.cpp b/src/cpu/ppc/vm/vm_version_ppc.cpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/vm_version_ppc.cpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/vm_version_ppc.cpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/vm_version_ppc.cpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,472 @@
 +/*
 + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -23662,10 +23601,9 @@
 +void VM_Version::revert() {
 +  _features = saved_features;
 +}
-diff --git a/src/cpu/ppc/vm/vm_version_ppc.hpp b/src/cpu/ppc/vm/vm_version_ppc.hpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/vm_version_ppc.hpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/vm_version_ppc.hpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/vm_version_ppc.hpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,93 @@
 +/*
 + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -23760,10 +23698,9 @@
 +};
 +
 +#endif // CPU_PPC_VM_VM_VERSION_PPC_HPP
-diff --git a/src/cpu/ppc/vm/vmreg_ppc.cpp b/src/cpu/ppc/vm/vmreg_ppc.cpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/vmreg_ppc.cpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/vmreg_ppc.cpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/vmreg_ppc.cpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,51 @@
 +/*
 + * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -23816,10 +23753,9 @@
 +  }
 +}
 +
-diff --git a/src/cpu/ppc/vm/vmreg_ppc.hpp b/src/cpu/ppc/vm/vmreg_ppc.hpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/vmreg_ppc.hpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/vmreg_ppc.hpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/vmreg_ppc.hpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,35 @@
 +/*
 + * Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -23856,10 +23792,9 @@
 +  FloatRegister as_FloatRegister();
 +
 +#endif // CPU_PPC_VM_VMREG_PPC_HPP
-diff --git a/src/cpu/ppc/vm/vmreg_ppc.inline.hpp b/src/cpu/ppc/vm/vmreg_ppc.inline.hpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/vmreg_ppc.inline.hpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/vmreg_ppc.inline.hpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/vmreg_ppc.inline.hpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,71 @@
 +/*
 + * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -23932,10 +23867,9 @@
 +}
 +
 +#endif // CPU_PPC_VM_VMREG_PPC_INLINE_HPP
-diff --git a/src/cpu/ppc/vm/vtableStubs_ppc_64.cpp b/src/cpu/ppc/vm/vtableStubs_ppc_64.cpp
-new file mode 100644
---- /dev/null
-+++ b/src/cpu/ppc/vm/vtableStubs_ppc_64.cpp
+diff -r ca3dacaf9041 src/cpu/ppc/vm/vtableStubs_ppc_64.cpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/cpu/ppc/vm/vtableStubs_ppc_64.cpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,269 @@
 +/*
 + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -24009,7 +23943,7 @@
 +  }
 +#endif
 +
-+  assert(VtableStub::receiver_location() == R3->as_VMReg(), "receiver expected in R3_ARG1");
++  assert(VtableStub::receiver_location() == R3_ARG1->as_VMReg(), "receiver expected in R3_ARG1");
 +
 +  // Get receiver klass.
 +  const Register rcvr_klass = R11_scratch1;
@@ -24043,7 +23977,7 @@
 +  if (DebugVtables) {
 +    Label L;
 +    __ cmpdi(CCR0, R19_method, 0);
-+    __ bne(CCR0,L);
++    __ bne(CCR0, L);
 +    __ stop("Vtable entry is ZERO", 102);
 +    __ bind(L);
 +  }
@@ -24082,7 +24016,7 @@
 +  }
 +#endif
 +
-+  assert(VtableStub::receiver_location() == R3->as_VMReg(), "receiver expected in R3_ARG1");
++  assert(VtableStub::receiver_location() == R3_ARG1->as_VMReg(), "receiver expected in R3_ARG1");
 +
 +  // Entry arguments:
 +  //  R19_method: Interface
@@ -24206,10 +24140,9 @@
 +  const unsigned int icache_line_size = 32;
 +  return icache_line_size;
 +}
-diff --git a/src/os_cpu/linux_ppc/vm/atomic_linux_ppc.inline.hpp b/src/os_cpu/linux_ppc/vm/atomic_linux_ppc.inline.hpp
-new file mode 100644
---- /dev/null
-+++ b/src/os_cpu/linux_ppc/vm/atomic_linux_ppc.inline.hpp
+diff -r ca3dacaf9041 src/os_cpu/linux_ppc/vm/atomic_linux_ppc.inline.hpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/os_cpu/linux_ppc/vm/atomic_linux_ppc.inline.hpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,401 @@
 +/*
 + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -24612,10 +24545,9 @@
 +#undef strasm_nobarrier_clobber_memory
 +
 +#endif // OS_CPU_LINUX_PPC_VM_ATOMIC_LINUX_PPC_INLINE_HPP
-diff --git a/src/os_cpu/linux_ppc/vm/globals_linux_ppc.hpp b/src/os_cpu/linux_ppc/vm/globals_linux_ppc.hpp
-new file mode 100644
---- /dev/null
-+++ b/src/os_cpu/linux_ppc/vm/globals_linux_ppc.hpp
+diff -r ca3dacaf9041 src/os_cpu/linux_ppc/vm/globals_linux_ppc.hpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/os_cpu/linux_ppc/vm/globals_linux_ppc.hpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,54 @@
 +/*
 + * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -24671,10 +24603,9 @@
 +define_pd_global(bool, UseVectoredExceptions,    false);
 +
 +#endif // OS_CPU_LINUX_PPC_VM_GLOBALS_LINUX_PPC_HPP
-diff --git a/src/os_cpu/linux_ppc/vm/orderAccess_linux_ppc.inline.hpp b/src/os_cpu/linux_ppc/vm/orderAccess_linux_ppc.inline.hpp
-new file mode 100644
---- /dev/null
-+++ b/src/os_cpu/linux_ppc/vm/orderAccess_linux_ppc.inline.hpp
+diff -r ca3dacaf9041 src/os_cpu/linux_ppc/vm/orderAccess_linux_ppc.inline.hpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/os_cpu/linux_ppc/vm/orderAccess_linux_ppc.inline.hpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,149 @@
 +/*
 + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -24825,10 +24756,9 @@
 +#undef inlasm_fence
 +
 +#endif // OS_CPU_LINUX_PPC_VM_ORDERACCESS_LINUX_PPC_INLINE_HPP
-diff --git a/src/os_cpu/linux_ppc/vm/os_linux_ppc.cpp b/src/os_cpu/linux_ppc/vm/os_linux_ppc.cpp
-new file mode 100644
---- /dev/null
-+++ b/src/os_cpu/linux_ppc/vm/os_linux_ppc.cpp
+diff -r ca3dacaf9041 src/os_cpu/linux_ppc/vm/os_linux_ppc.cpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/os_cpu/linux_ppc/vm/os_linux_ppc.cpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,607 @@
 +/*
 + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -25437,10 +25367,9 @@
 +  assert(((intptr_t)os::current_stack_pointer() & (StackAlignmentInBytes-1)) == 0, "incorrect stack alignment");
 +}
 +#endif
-diff --git a/src/os_cpu/linux_ppc/vm/os_linux_ppc.hpp b/src/os_cpu/linux_ppc/vm/os_linux_ppc.hpp
-new file mode 100644
---- /dev/null
-+++ b/src/os_cpu/linux_ppc/vm/os_linux_ppc.hpp
+diff -r ca3dacaf9041 src/os_cpu/linux_ppc/vm/os_linux_ppc.hpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/os_cpu/linux_ppc/vm/os_linux_ppc.hpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,35 @@
 +/*
 + * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -25477,10 +25406,9 @@
 +  static bool register_code_area(char *low, char *high) { return true; }
 +
 +#endif // OS_CPU_LINUX_PPC_VM_OS_LINUX_PPC_HPP
-diff --git a/src/os_cpu/linux_ppc/vm/prefetch_linux_ppc.inline.hpp b/src/os_cpu/linux_ppc/vm/prefetch_linux_ppc.inline.hpp
-new file mode 100644
---- /dev/null
-+++ b/src/os_cpu/linux_ppc/vm/prefetch_linux_ppc.inline.hpp
+diff -r ca3dacaf9041 src/os_cpu/linux_ppc/vm/prefetch_linux_ppc.inline.hpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/os_cpu/linux_ppc/vm/prefetch_linux_ppc.inline.hpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,50 @@
 +/*
 + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -25532,10 +25460,9 @@
 +}
 +
 +#endif // OS_CPU_LINUX_PPC_VM_PREFETCH_LINUX_OJDKPPC_HPP
-diff --git a/src/os_cpu/linux_ppc/vm/threadLS_linux_ppc.cpp b/src/os_cpu/linux_ppc/vm/threadLS_linux_ppc.cpp
-new file mode 100644
---- /dev/null
-+++ b/src/os_cpu/linux_ppc/vm/threadLS_linux_ppc.cpp
+diff -r ca3dacaf9041 src/os_cpu/linux_ppc/vm/threadLS_linux_ppc.cpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/os_cpu/linux_ppc/vm/threadLS_linux_ppc.cpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,39 @@
 +/*
 + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -25576,10 +25503,9 @@
 +void ThreadLocalStorage::pd_set_thread(Thread* thread) {
 +  os::thread_local_storage_at_put(ThreadLocalStorage::thread_index(), thread);
 +}
-diff --git a/src/os_cpu/linux_ppc/vm/threadLS_linux_ppc.hpp b/src/os_cpu/linux_ppc/vm/threadLS_linux_ppc.hpp
-new file mode 100644
---- /dev/null
-+++ b/src/os_cpu/linux_ppc/vm/threadLS_linux_ppc.hpp
+diff -r ca3dacaf9041 src/os_cpu/linux_ppc/vm/threadLS_linux_ppc.hpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/os_cpu/linux_ppc/vm/threadLS_linux_ppc.hpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,36 @@
 +/*
 + * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -25617,10 +25543,9 @@
 +  }
 +
 +#endif // OS_CPU_LINUX_PPC_VM_THREADLS_LINUX_PPC_HPP
-diff --git a/src/os_cpu/linux_ppc/vm/thread_linux_ppc.cpp b/src/os_cpu/linux_ppc/vm/thread_linux_ppc.cpp
-new file mode 100644
---- /dev/null
-+++ b/src/os_cpu/linux_ppc/vm/thread_linux_ppc.cpp
+diff -r ca3dacaf9041 src/os_cpu/linux_ppc/vm/thread_linux_ppc.cpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/os_cpu/linux_ppc/vm/thread_linux_ppc.cpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,36 @@
 +/*
 + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -25658,10 +25583,9 @@
 +}
 +
 +void JavaThread::cache_global_variables() { }
-diff --git a/src/os_cpu/linux_ppc/vm/thread_linux_ppc.hpp b/src/os_cpu/linux_ppc/vm/thread_linux_ppc.hpp
-new file mode 100644
---- /dev/null
-+++ b/src/os_cpu/linux_ppc/vm/thread_linux_ppc.hpp
+diff -r ca3dacaf9041 src/os_cpu/linux_ppc/vm/thread_linux_ppc.hpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/os_cpu/linux_ppc/vm/thread_linux_ppc.hpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,83 @@
 +/*
 + * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -25746,10 +25670,9 @@
 +  intptr_t* last_interpreter_fp() { return _last_interpreter_fp; }
 +
 +#endif // OS_CPU_LINUX_PPC_VM_THREAD_LINUX_PPC_HPP
-diff --git a/src/os_cpu/linux_ppc/vm/vmStructs_linux_ppc.hpp b/src/os_cpu/linux_ppc/vm/vmStructs_linux_ppc.hpp
-new file mode 100644
---- /dev/null
-+++ b/src/os_cpu/linux_ppc/vm/vmStructs_linux_ppc.hpp
+diff -r ca3dacaf9041 src/os_cpu/linux_ppc/vm/vmStructs_linux_ppc.hpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/src/os_cpu/linux_ppc/vm/vmStructs_linux_ppc.hpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -0,0 +1,55 @@
 +/*
 + * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -25806,9 +25729,9 @@
 +#define VM_LONG_CONSTANTS_OS_CPU(declare_constant, declare_preprocessor_constant, declare_c1_constant, declare_c2_constant, declare_c2_preprocessor_constant)
 +
 +#endif // OS_CPU_LINUX_PPC_VM_VMSTRUCTS_LINUX_PPC_HPP
-diff --git a/src/share/vm/runtime/globals.hpp b/src/share/vm/runtime/globals.hpp
---- a/src/share/vm/runtime/globals.hpp
-+++ b/src/share/vm/runtime/globals.hpp
+diff -r ca3dacaf9041 src/share/vm/runtime/globals.hpp
+--- a/src/share/vm/runtime/globals.hpp	Tue Jul 23 14:31:16 2013 +0200
++++ b/src/share/vm/runtime/globals.hpp	Wed Jul 24 14:29:57 2013 +0200
 @@ -3617,7 +3617,7 @@
            NOT_LP64(LINUX_ONLY(2*G) NOT_LINUX(0)),                           \
            "Address to allocate shared memory region for class data")        \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ppc_patches/0011-2_Adapt_PPC_to_8003424.patch	Fri Sep 06 11:29:41 2013 +0200
@@ -0,0 +1,81 @@
+# HG changeset patch
+# Parent e50b49f0f68a16713ae123d1af82408644fbb424
+
+diff -r e50b49f0f68a src/cpu/ppc/vm/macroAssembler_ppc.cpp
+--- a/src/cpu/ppc/vm/macroAssembler_ppc.cpp	Mon Aug 19 12:29:42 2013 +0200
++++ b/src/cpu/ppc/vm/macroAssembler_ppc.cpp	Mon Aug 19 14:09:43 2013 +0200
+@@ -2382,17 +2382,11 @@
+ 
+ void MacroAssembler::encode_klass_not_null(Register dst, Register src) {
+   if (src == noreg) src = dst;
+-  if (Universe::narrow_klass_base() != NULL) {
+-    // heapbased
+-    assert(Universe::narrow_klass_shift() != 0, "sanity");
+-    sub(dst, src, R30);
+-    srdi(dst, dst, Universe::narrow_klass_shift());
+-  } else if (Universe::narrow_klass_shift() != 0) {
+-    // zerobased
++  assert(Universe::narrow_klass_base() != NULL, "Base should be initialized");
++  load_const(R0, Universe::narrow_klass_base());
++  sub(dst, src, R0);
++  if (Universe::narrow_klass_shift() != 0) {
+     srdi(dst, src, Universe::narrow_klass_shift());
+-  } else if (src != dst) {
+-    // unscaled
+-    mr(dst, src);
+   }
+ }
+ 
+@@ -2407,18 +2401,14 @@
+ 
+ void MacroAssembler::decode_klass_not_null(Register dst, Register src) {
+   if (src == noreg) src = dst;
+-  if (Universe::narrow_klass_base() != NULL) {
+-    // heapbased
+-    assert(Universe::narrow_klass_shift() != 0, "sanity");
+-    sldi(dst, src, Universe::narrow_klass_shift());
+-    add(dst, dst, R30);
+-  } else if (Universe::narrow_klass_shift() != 0) {
+-    // zerobased
+-    sldi(dst, src, Universe::narrow_klass_shift());
+-  } else if (src != dst) {
+-    // unscaled
+-    mr(dst, src);
++  Register shifted_src = src;
++  assert(Universe::narrow_klass_base() != NULL, "Base should be initialized");
++  if (Universe::narrow_klass_shift() != 0) {
++    shifted_src = dst;
++    sldi(shifted_src, src, Universe::narrow_klass_shift());    
+   }
++  load_const(R0, Universe::narrow_klass_base());
++  add(dst, shifted_src, R0);
+ }
+ 
+ void MacroAssembler::load_klass(Register dst, Register src) {
+@@ -2441,7 +2431,13 @@
+ }
+ 
+ void MacroAssembler::reinit_heapbase(Register d, Register tmp) {
+-  if (UseCompressedOops || UseCompressedKlassPointers) {
++  if (Universe::heap() != NULL) {
++    if (Universe::narrow_oop_base() == NULL) {
++      Assembler::xorr(R30, R30, R30);
++    } else {
++      load_const(R30, Universe::narrow_ptrs_base(), tmp);
++    }
++  } else {
+     load_const(R30, Universe::narrow_ptrs_base_addr(), tmp);
+     ld(R30, 0, R30);
+   }
+diff -r e50b49f0f68a src/cpu/ppc/vm/relocInfo_ppc.cpp
+--- a/src/cpu/ppc/vm/relocInfo_ppc.cpp	Mon Aug 19 12:29:42 2013 +0200
++++ b/src/cpu/ppc/vm/relocInfo_ppc.cpp	Mon Aug 19 14:09:43 2013 +0200
+@@ -58,7 +58,7 @@
+       assert(type() == relocInfo::oop_type || type() == relocInfo::metadata_type,
+              "how to encode else?");
+       narrowOop no = (type() == relocInfo::oop_type) ?
+-        oopDesc::encode_heap_oop((oop)x) : oopDesc::encode_klass((Klass*)x);
++        oopDesc::encode_heap_oop((oop)x) : Klass::encode_klass((Klass*)x);
+       nativeMovConstReg_at(addr())->set_narrow_oop(no, code());
+     }
+   } else {
--- a/ppc_patches/0012_rt-ppc_enable_better_implicit_null_check-posix.patch	Wed Aug 28 16:09:50 2013 +0000
+++ b/ppc_patches/0012_rt-ppc_enable_better_implicit_null_check-posix.patch	Fri Sep 06 11:29:41 2013 +0200
@@ -1,10 +1,189 @@
 # HG changeset patch
-# Parent 31b4bd99aa5de56953b3311eab449770b130feaa
+# User goetz
+# Date 1374793158 -7200
+# Node ID 628e8be745c90b6c9000528248db4274f656e7a8
+# Parent ec28f9c041ff6944d54ceb1d0c11cfa7e3db133a
 8020775: PPC64 (part 12): posix signal printing
+Summary: Implement methods printing posix signal information and call them in unix os files.
+Contributed-by: thomas.stuefe@sap.com
 
-diff -r 31b4bd99aa5d src/os/posix/vm/os_posix.cpp
---- a/src/os/posix/vm/os_posix.cpp	Mon May 06 21:11:22 2013 +0200
-+++ b/src/os/posix/vm/os_posix.cpp	Mon May 06 21:14:13 2013 +0200
+diff -r ec28f9c041ff src/os/bsd/vm/os_bsd.cpp
+--- a/src/os/bsd/vm/os_bsd.cpp	Fri Aug 02 16:46:45 2013 +0200
++++ b/src/os/bsd/vm/os_bsd.cpp	Wed Aug 21 10:37:36 2013 +0200
+@@ -1618,58 +1618,12 @@
+   st->cr();
+ }
+ 
+-// Taken from /usr/include/bits/siginfo.h  Supposed to be architecture specific
+-// but they're the same for all the bsd arch that we support
+-// and they're the same for solaris but there's no common place to put this.
+-const char *ill_names[] = { "ILL0", "ILL_ILLOPC", "ILL_ILLOPN", "ILL_ILLADR",
+-                          "ILL_ILLTRP", "ILL_PRVOPC", "ILL_PRVREG",
+-                          "ILL_COPROC", "ILL_BADSTK" };
+-
+-const char *fpe_names[] = { "FPE0", "FPE_INTDIV", "FPE_INTOVF", "FPE_FLTDIV",
+-                          "FPE_FLTOVF", "FPE_FLTUND", "FPE_FLTRES",
+-                          "FPE_FLTINV", "FPE_FLTSUB", "FPE_FLTDEN" };
+-
+-const char *segv_names[] = { "SEGV0", "SEGV_MAPERR", "SEGV_ACCERR" };
+-
+-const char *bus_names[] = { "BUS0", "BUS_ADRALN", "BUS_ADRERR", "BUS_OBJERR" };
+-
+ void os::print_siginfo(outputStream* st, void* siginfo) {
+-  st->print("siginfo:");
+-
+-  const int buflen = 100;
+-  char buf[buflen];
+-  siginfo_t *si = (siginfo_t*)siginfo;
+-  st->print("si_signo=%s: ", os::exception_name(si->si_signo, buf, buflen));
+-  if (si->si_errno != 0 && strerror_r(si->si_errno, buf, buflen) == 0) {
+-    st->print("si_errno=%s", buf);
+-  } else {
+-    st->print("si_errno=%d", si->si_errno);
+-  }
+-  const int c = si->si_code;
+-  assert(c > 0, "unexpected si_code");
+-  switch (si->si_signo) {
+-  case SIGILL:
+-    st->print(", si_code=%d (%s)", c, c > 8 ? "" : ill_names[c]);
+-    st->print(", si_addr=" PTR_FORMAT, si->si_addr);
+-    break;
+-  case SIGFPE:
+-    st->print(", si_code=%d (%s)", c, c > 9 ? "" : fpe_names[c]);
+-    st->print(", si_addr=" PTR_FORMAT, si->si_addr);
+-    break;
+-  case SIGSEGV:
+-    st->print(", si_code=%d (%s)", c, c > 2 ? "" : segv_names[c]);
+-    st->print(", si_addr=" PTR_FORMAT, si->si_addr);
+-    break;
+-  case SIGBUS:
+-    st->print(", si_code=%d (%s)", c, c > 3 ? "" : bus_names[c]);
+-    st->print(", si_addr=" PTR_FORMAT, si->si_addr);
+-    break;
+-  default:
+-    st->print(", si_code=%d", si->si_code);
+-    // no si_addr
+-  }
+-
+-  if ((si->si_signo == SIGBUS || si->si_signo == SIGSEGV) &&
++  const siginfo_t* si = (const siginfo_t*)siginfo;
++
++  os::Posix::print_siginfo_brief(st, si);
++
++  if (si && (si->si_signo == SIGBUS || si->si_signo == SIGSEGV) &&
+       UseSharedSpaces) {
+     FileMapInfo* mapinfo = FileMapInfo::current_info();
+     if (mapinfo->is_in_shared_space(si->si_addr)) {
+@@ -3338,7 +3292,8 @@
+     st->print("[%s]", get_signal_handler_name(handler, buf, buflen));
+   }
+ 
+-  st->print(", sa_mask[0]=" PTR32_FORMAT, *(uint32_t*)&sa.sa_mask);
++  st->print(", sa_mask[0]=");
++  os::Posix::print_signal_set_short(st, &sa.sa_mask);
+ 
+   address rh = VMError::get_resetted_sighandler(sig);
+   // May be, handler was resetted by VMError?
+@@ -3347,7 +3302,8 @@
+     sa.sa_flags = VMError::get_resetted_sigflags(sig) & SIGNIFICANT_SIGNAL_MASK;
+   }
+ 
+-  st->print(", sa_flags="   PTR32_FORMAT, sa.sa_flags);
++  st->print(", sa_flags=");
++  os::Posix::print_sa_flags(st, sa.sa_flags);
+ 
+   // Check: is it our handler?
+   if(handler == CAST_FROM_FN_PTR(address, (sa_sigaction_t)signalHandler) ||
+diff -r ec28f9c041ff src/os/linux/vm/os_linux.cpp
+--- a/src/os/linux/vm/os_linux.cpp	Fri Aug 02 16:46:45 2013 +0200
++++ b/src/os/linux/vm/os_linux.cpp	Wed Aug 21 10:37:36 2013 +0200
+@@ -2231,58 +2231,12 @@
+   st->cr();
+ }
+ 
+-// Taken from /usr/include/bits/siginfo.h  Supposed to be architecture specific
+-// but they're the same for all the linux arch that we support
+-// and they're the same for solaris but there's no common place to put this.
+-const char *ill_names[] = { "ILL0", "ILL_ILLOPC", "ILL_ILLOPN", "ILL_ILLADR",
+-                          "ILL_ILLTRP", "ILL_PRVOPC", "ILL_PRVREG",
+-                          "ILL_COPROC", "ILL_BADSTK" };
+-
+-const char *fpe_names[] = { "FPE0", "FPE_INTDIV", "FPE_INTOVF", "FPE_FLTDIV",
+-                          "FPE_FLTOVF", "FPE_FLTUND", "FPE_FLTRES",
+-                          "FPE_FLTINV", "FPE_FLTSUB", "FPE_FLTDEN" };
+-
+-const char *segv_names[] = { "SEGV0", "SEGV_MAPERR", "SEGV_ACCERR" };
+-
+-const char *bus_names[] = { "BUS0", "BUS_ADRALN", "BUS_ADRERR", "BUS_OBJERR" };
+-
+ void os::print_siginfo(outputStream* st, void* siginfo) {
+-  st->print("siginfo:");
+-
+-  const int buflen = 100;
+-  char buf[buflen];
+-  siginfo_t *si = (siginfo_t*)siginfo;
+-  st->print("si_signo=%s: ", os::exception_name(si->si_signo, buf, buflen));
+-  if (si->si_errno != 0 && strerror_r(si->si_errno, buf, buflen) == 0) {
+-    st->print("si_errno=%s", buf);
+-  } else {
+-    st->print("si_errno=%d", si->si_errno);
+-  }
+-  const int c = si->si_code;
+-  assert(c > 0, "unexpected si_code");
+-  switch (si->si_signo) {
+-  case SIGILL:
+-    st->print(", si_code=%d (%s)", c, c > 8 ? "" : ill_names[c]);
+-    st->print(", si_addr=" PTR_FORMAT, si->si_addr);
+-    break;
+-  case SIGFPE:
+-    st->print(", si_code=%d (%s)", c, c > 9 ? "" : fpe_names[c]);
+-    st->print(", si_addr=" PTR_FORMAT, si->si_addr);
+-    break;
+-  case SIGSEGV:
+-    st->print(", si_code=%d (%s)", c, c > 2 ? "" : segv_names[c]);
+-    st->print(", si_addr=" PTR_FORMAT, si->si_addr);
+-    break;
+-  case SIGBUS:
+-    st->print(", si_code=%d (%s)", c, c > 3 ? "" : bus_names[c]);
+-    st->print(", si_addr=" PTR_FORMAT, si->si_addr);
+-    break;
+-  default:
+-    st->print(", si_code=%d", si->si_code);
+-    // no si_addr
+-  }
+-
+-  if ((si->si_signo == SIGBUS || si->si_signo == SIGSEGV) &&
++  const siginfo_t* si = (const siginfo_t*)siginfo;
++
++  os::Posix::print_siginfo_brief(st, si);
++
++  if (si && (si->si_signo == SIGBUS || si->si_signo == SIGSEGV) &&
+       UseSharedSpaces) {
+     FileMapInfo* mapinfo = FileMapInfo::current_info();
+     if (mapinfo->is_in_shared_space(si->si_addr)) {
+@@ -4278,7 +4232,8 @@
+     st->print("[%s]", get_signal_handler_name(handler, buf, buflen));
+   }
+ 
+-  st->print(", sa_mask[0]=" PTR32_FORMAT, *(uint32_t*)&sa.sa_mask);
++  st->print(", sa_mask[0]=");
++  os::Posix::print_signal_set_short(st, &sa.sa_mask);
+ 
+   address rh = VMError::get_resetted_sighandler(sig);
+   // May be, handler was resetted by VMError?
+@@ -4287,7 +4242,8 @@
+     sa.sa_flags = VMError::get_resetted_sigflags(sig) & SIGNIFICANT_SIGNAL_MASK;
+   }
+ 
+-  st->print(", sa_flags="   PTR32_FORMAT, sa.sa_flags);
++  st->print(", sa_flags=");
++  os::Posix::print_sa_flags(st, sa.sa_flags);
+ 
+   // Check: is it our handler?
+   if(handler == CAST_FROM_FN_PTR(address, (sa_sigaction_t)signalHandler) ||
+diff -r ec28f9c041ff src/os/posix/vm/os_posix.cpp
+--- a/src/os/posix/vm/os_posix.cpp	Fri Aug 02 16:46:45 2013 +0200
++++ b/src/os/posix/vm/os_posix.cpp	Wed Aug 21 10:37:36 2013 +0200
 @@ -1,36 +1,44 @@
  /*
 -* Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
@@ -72,219 +251,256 @@
  
  // Check core dump limit and report possible place where core can be found
  void os::check_or_create_dump(void* exceptionRecord, void* contextRecord, char* buffer, size_t bufferSize) {
-@@ -259,3 +267,450 @@
- FILE* os::open(int fd, const char* mode) {
+@@ -156,7 +164,7 @@
+   if (rlim.rlim_cur == RLIM_INFINITY) st->print("infinity");
+   else st->print("%uk", rlim.rlim_cur >> 10);
+ 
+-  //Isn't there on solaris
++  // Isn't there on solaris
+ #ifndef TARGET_OS_FAMILY_solaris
+   st->print(", NPROC ");
+   getrlimit(RLIMIT_NPROC, &rlim);
+@@ -260,6 +268,484 @@
    return ::fdopen(fd, mode);
  }
-+
+ 
 +
 +// Returned string is a constant. For unknown signals "UNKNOWN" is returned.
-+const char* os::Posix::get_signal_name(int sig) {
++const char* os::Posix::get_signal_name(int sig, char* out, size_t outlen) {
 +
 +  static const struct {
 +    int sig; const char* name;
 +  }
 +  info[] =
 +  {
-+    { SIGABRT, "SIGABRT" },
++    {  SIGABRT,     "SIGABRT" },
 +#ifdef SIGAIO
-+    { SIGAIO, "SIGAIO" },
++    {  SIGAIO,      "SIGAIO" },
 +#endif
-+    { SIGALRM, "SIGALRM" },
++    {  SIGALRM,     "SIGALRM" },
 +#ifdef SIGALRM1
-+    { SIGALRM1, "SIGALRM1" },
++    {  SIGALRM1,    "SIGALRM1" },
 +#endif
-+    { SIGBUS, "SIGBUS" },
++    {  SIGBUS,      "SIGBUS" },
 +#ifdef SIGCANCEL
-+    { SIGCANCEL, "SIGCANCEL" },
++    {  SIGCANCEL,   "SIGCANCEL" },
 +#endif
-+    { SIGCHLD, "SIGCHLD" },
++    {  SIGCHLD,     "SIGCHLD" },
 +#ifdef SIGCLD
-+    { SIGCLD, "SIGCLD" },
++    {  SIGCLD,      "SIGCLD" },
 +#endif
-+    { SIGCONT, "SIGCONT" },
++    {  SIGCONT,     "SIGCONT" },
 +#ifdef SIGCPUFAIL
-+    { SIGCPUFAIL, "SIGCPUFAIL" },
++    {  SIGCPUFAIL,  "SIGCPUFAIL" },
 +#endif
 +#ifdef SIGDANGER
-+    { SIGDANGER, "SIGDANGER" },
++    {  SIGDANGER,   "SIGDANGER" },
 +#endif
 +#ifdef SIGDIL
-+    { SIGDIL, "SIGDIL" },
++    {  SIGDIL,      "SIGDIL" },
 +#endif
 +#ifdef SIGEMT
-+    { SIGEMT, "SIGEMT" },
++    {  SIGEMT,      "SIGEMT" },
 +#endif
-+    { SIGFPE, "SIGFPE" },
++    {  SIGFPE,      "SIGFPE" },
 +#ifdef SIGFREEZE
-+    { SIGFREEZE, "SIGFREEZE" },
++    {  SIGFREEZE,   "SIGFREEZE" },
 +#endif
 +#ifdef SIGGFAULT
-+    { SIGGFAULT, "SIGGFAULT" },
++    {  SIGGFAULT,   "SIGGFAULT" },
 +#endif
 +#ifdef SIGGRANT
-+    { SIGGRANT, "SIGGRANT" },
++    {  SIGGRANT,    "SIGGRANT" },
 +#endif
-+    { SIGHUP, "SIGHUP" },
-+    { SIGILL, "SIGILL" },
-+    { SIGINT, "SIGINT" },
++    {  SIGHUP,      "SIGHUP" },
++    {  SIGILL,      "SIGILL" },
++    {  SIGINT,      "SIGINT" },
 +#ifdef SIGIO
-+    { SIGIO, "SIGIO" },
++    {  SIGIO,       "SIGIO" },
 +#endif
 +#ifdef SIGIOINT
-+    { SIGIOINT, "SIGIOINT" },
++    {  SIGIOINT,    "SIGIOINT" },
 +#endif
 +#ifdef SIGIOT
-+    { SIGIOT, "SIGIOT" },
++  // SIGIOT is there for BSD compatibility, but on most Unices just a
++  // synonym for SIGABRT. The result should be "SIGABRT", not
++  // "SIGIOT".
++  #if (SIGIOT != SIGABRT )
++    {  SIGIOT,      "SIGIOT" },
++  #endif
 +#endif
 +#ifdef SIGKAP
-+    { SIGKAP, "SIGKAP" },
++    {  SIGKAP,      "SIGKAP" },
 +#endif
-+    { SIGKILL, "SIGKILL" },
++    {  SIGKILL,     "SIGKILL" },
 +#ifdef SIGLOST
-+    { SIGLOST, "SIGLOST" },
++    {  SIGLOST,     "SIGLOST" },
 +#endif
 +#ifdef SIGLWP
-+    { SIGLWP, "SIGLWP" },
++    {  SIGLWP,      "SIGLWP" },
 +#endif
 +#ifdef SIGLWPTIMER
-+    { SIGLWPTIMER, "SIGLWPTIMER" },
++    {  SIGLWPTIMER, "SIGLWPTIMER" },
 +#endif
 +#ifdef SIGMIGRATE
-+    { SIGMIGRATE, "SIGMIGRATE" },
++    {  SIGMIGRATE,  "SIGMIGRATE" },
 +#endif
 +#ifdef SIGMSG
-+    { SIGMSG, "SIGMSG" },
++    {  SIGMSG,      "SIGMSG" },
 +#endif
-+    { SIGPIPE, "SIGPIPE" },
++    {  SIGPIPE,     "SIGPIPE" },
 +#ifdef SIGPOLL
-+    { SIGPOLL, "SIGPOLL" },
++    {  SIGPOLL,     "SIGPOLL" },
 +#endif
 +#ifdef SIGPRE
-+    { SIGPRE, "SIGPRE" },
++    {  SIGPRE,      "SIGPRE" },
 +#endif
-+    { SIGPROF, "SIGPROF" },
++    {  SIGPROF,     "SIGPROF" },
 +#ifdef SIGPTY
-+    { SIGPTY, "SIGPTY" },
++    {  SIGPTY,      "SIGPTY" },
 +#endif
 +#ifdef SIGPWR
-+    { SIGPWR, "SIGPWR" },
++    {  SIGPWR,      "SIGPWR" },
 +#endif
-+    { SIGQUIT, "SIGQUIT" },
++    {  SIGQUIT,     "SIGQUIT" },
 +#ifdef SIGRECONFIG
-+    { SIGRECONFIG, "SIGRECONFIG" },
++    {  SIGRECONFIG, "SIGRECONFIG" },
 +#endif
 +#ifdef SIGRECOVERY
-+    { SIGRECOVERY, "SIGRECOVERY" },
++    {  SIGRECOVERY, "SIGRECOVERY" },
 +#endif
 +#ifdef SIGRESERVE
-+    { SIGRESERVE, "SIGRESERVE" },
++    {  SIGRESERVE,  "SIGRESERVE" },
 +#endif
 +#ifdef SIGRETRACT
-+    { SIGRETRACT, "SIGRETRACT" },
++    {  SIGRETRACT,  "SIGRETRACT" },
 +#endif
 +#ifdef SIGSAK
-+    { SIGSAK, "SIGSAK" },
++    {  SIGSAK,      "SIGSAK" },
 +#endif
-+    { SIGSEGV, "SIGSEGV" },
++    {  SIGSEGV,     "SIGSEGV" },
 +#ifdef SIGSOUND
-+    { SIGSOUND, "SIGSOUND" },
++    {  SIGSOUND,    "SIGSOUND" },
 +#endif
-+    { SIGSTOP, "SIGSTOP" },
-+    { SIGSYS, "SIGSYS" },
++    {  SIGSTOP,     "SIGSTOP" },
++    {  SIGSYS,      "SIGSYS" },
 +#ifdef SIGSYSERROR
-+    { SIGSYSERROR, "SIGSYSERROR" },
++    {  SIGSYSERROR, "SIGSYSERROR" },
 +#endif
 +#ifdef SIGTALRM
-+    { SIGTALRM, "SIGTALRM" },
++    {  SIGTALRM,    "SIGTALRM" },
 +#endif
-+    { SIGTERM, "SIGTERM" },
++    {  SIGTERM,     "SIGTERM" },
 +#ifdef SIGTHAW
-+    { SIGTHAW, "SIGTHAW" },
++    {  SIGTHAW,     "SIGTHAW" },
 +#endif
-+    { SIGTRAP, "SIGTRAP" },
++    {  SIGTRAP,     "SIGTRAP" },
 +#ifdef SIGTSTP
-+    { SIGTSTP, "SIGTSTP" },
++    {  SIGTSTP,     "SIGTSTP" },
 +#endif
-+    { SIGTTIN, "SIGTTIN" },
-+    { SIGTTOU, "SIGTTOU" },
++    {  SIGTTIN,     "SIGTTIN" },
++    {  SIGTTOU,     "SIGTTOU" },
 +#ifdef SIGURG
-+    { SIGURG, "SIGURG" },
++    {  SIGURG,      "SIGURG" },
 +#endif
-+    { SIGUSR1, "SIGUSR1" },
-+    { SIGUSR2, "SIGUSR2" },
++    {  SIGUSR1,     "SIGUSR1" },
++    {  SIGUSR2,     "SIGUSR2" },
 +#ifdef SIGVIRT
-+    { SIGVIRT, "SIGVIRT" },
++    {  SIGVIRT,     "SIGVIRT" },
 +#endif
-+    { SIGVTALRM, "SIGVTALRM" },
++    {  SIGVTALRM,   "SIGVTALRM" },
 +#ifdef SIGWAITING
-+    { SIGWAITING, "SIGWAITING" },
++    {  SIGWAITING,  "SIGWAITING" },
 +#endif
 +#ifdef SIGWINCH
-+    { SIGWINCH, "SIGWINCH" },
++    {  SIGWINCH,    "SIGWINCH" },
 +#endif
 +#ifdef SIGWINDOW
-+    { SIGWINDOW, "SIGWINDOW" },
++    {  SIGWINDOW,   "SIGWINDOW" },
 +#endif
-+    { SIGXCPU, "SIGXCPU" },
-+    { SIGXFSZ, "SIGXFSZ" },
++    {  SIGXCPU,     "SIGXCPU" },
++    {  SIGXFSZ,     "SIGXFSZ" },
 +#ifdef SIGXRES
-+    { SIGXRES, "SIGXRES" },
++    {  SIGXRES,     "SIGXRES" },
 +#endif
 +    { -1, NULL }
 +  };
 +
++  const char* ret = NULL;
++
++#ifdef SIGRTMIN
++  if (sig >= SIGRTMIN && sig <= SIGRTMAX) {
++    if (sig == SIGRTMIN) {
++      ret = "SIGRTMIN";
++    } else if (sig == SIGRTMAX) {
++      ret = "SIGRTMAX";
++    } else {
++      jio_snprintf(out, outlen, "SIGRTMIN+%d", sig - SIGRTMIN);
++      return out;
++    }
++  }
++#endif
++
 +  if (sig > 0) {
 +    for (int idx = 0; info[idx].sig != -1; idx ++) {
 +      if (info[idx].sig == sig) {
-+        return info[idx].name;
++        ret = info[idx].name;
++        break;
 +      }
 +    }
 +  }
 +
-+  if (!is_valid_signal(sig)) {
-+    return "INVALID";
++  if (!ret) {
++    if (!is_valid_signal(sig)) {
++      ret = "INVALID";
++    } else {
++      ret = "UNKNOWN";
++    }
 +  }
 +
-+  return "UNKNOWN";
++  jio_snprintf(out, outlen, ret);
++  return out;
 +}
 +
-+// A number high enough to contain all possible signal numbers.
-+#define MAX_SIGNAL_NUMBER 70
-+
 +// Returns true if signal number is valid.
 +bool os::Posix::is_valid_signal(int sig) {
-+  if (sig < 1 || sig > MAX_SIGNAL_NUMBER) {
-+    return false;
-+  }
++  // MacOS not really POSIX compliant: sigaddset does not return
++  // an error for invalid signal numbers. However, MacOS does not
++  // support real time signals and simply seems to have just 33
++  // signals with no holes in the signal range.
++#ifdef __APPLE__
++  return sig >= 1 && sig < NSIG;
++#else
 +  // Use sigaddset to check for signal validity.
 +  sigset_t set;
 +  if (sigaddset(&set, sig) == -1 && errno == EINVAL) {
 +    return false;
 +  }
 +  return true;
++#endif
 +}
 +
++#define NUM_IMPORTANT_SIGS 32
 +// Returns one-line short description of a signal set in a user provided buffer.
-+const char* os::Posix::describe_signal_set_short(const sigset_t* set, char* buffer, size_t size) {
-+  //fixBufferStream os(buffer, size);
-+
-+  for (int sig = 1; sig < MAX_SIGNAL_NUMBER; sig ++) {
++const char* os::Posix::describe_signal_set_short(const sigset_t* set, char* buffer, size_t buf_size) {
++  assert(buf_size = (NUM_IMPORTANT_SIGS + 1), "wrong buffer size");
++  // Note: for shortness, just print out the first 32. That should
++  // cover most of the useful ones, apart from realtime signals.
++  for (int sig = 1; sig <= NUM_IMPORTANT_SIGS; sig++) {
 +    const int rc = sigismember(set, sig);
 +    if (rc == -1 && errno == EINVAL) {
-+      // ignore invalid signal numbers
++      buffer[sig-1] = '?';
 +    } else {
-+      //os.print( rc == 0 ? "0" : "1" );
-+      rc == 0 ? strncpy(buffer, "0", size) : strncpy(buffer, "1", size);
++      buffer[sig-1] = rc == 0 ? '0' : '1';
 +    }
 +  }
-+
++  buffer[NUM_IMPORTANT_SIGS] = 0;
 +  return buffer;
 +}
 +
 +// Prints one-line description of a signal set.
 +void os::Posix::print_signal_set_short(outputStream* st, const sigset_t* set) {
-+  char buf[MAX_SIGNAL_NUMBER * 10];
++  char buf[NUM_IMPORTANT_SIGS + 1];
 +  os::Posix::describe_signal_set_short(set, buf, sizeof(buf));
 +  st->print(buf);
 +}
@@ -310,32 +526,31 @@
 +    const char* s;
 +  } flaginfo [] = {
 +    { SA_NOCLDSTOP, "SA_NOCLDSTOP" },
-+    { SA_ONSTACK, "SA_ONSTACK" },
++    { SA_ONSTACK,   "SA_ONSTACK"   },
 +    { SA_RESETHAND, "SA_RESETHAND" },
-+    { SA_RESTART, "SA_RESTART" },
-+    { SA_SIGINFO, "SA_SIGINFO" },
++    { SA_RESTART,   "SA_RESTART"   },
++    { SA_SIGINFO,   "SA_SIGINFO"   },
 +    { SA_NOCLDWAIT, "SA_NOCLDWAIT" },
-+    { SA_NODEFER, "SA_NODEFER" },
++    { SA_NODEFER,   "SA_NODEFER"   },
 +#ifdef AIX
-+    { SA_ONSTACK, "SA_ONSTACK" },
-+    { SA_OLDSTYLE, "SA_OLDSTYLE" },
++    { SA_ONSTACK,   "SA_ONSTACK"   },
++    { SA_OLDSTYLE,  "SA_OLDSTYLE"  },
 +#endif
 +    { 0, NULL }
 +  };
 +
-+  while (flaginfo[idx].s && remaining > 1) {
++  for (idx = 0; flaginfo[idx].s && remaining > 1; idx++) {
 +    if (flags & flaginfo[idx].i) {
 +      if (first) {
-+        snprintf(p, remaining, "%s", flaginfo[idx].s);
++        jio_snprintf(p, remaining, "%s", flaginfo[idx].s);
 +        first = false;
 +      } else {
-+        snprintf(p, remaining, "|%s", flaginfo[idx].s);
++        jio_snprintf(p, remaining, "|%s", flaginfo[idx].s);
 +      }
 +      const size_t len = strlen(p);
 +      p += len;
 +      remaining -= len;
 +    }
-+    idx ++;
 +  }
 +
 +  buffer[size - 1] = '\0';
@@ -352,62 +567,62 @@
 +
 +// Helper function for os::Posix::print_siginfo_...():
 +// return a textual description for signal code.
-+struct enum_desc_t {
++struct enum_sigcode_desc_t {
 +  const char* s_name;
 +  const char* s_desc;
 +};
 +
-+static bool get_signal_code_description(const siginfo_t* si, enum_desc_t* out) {
++static bool get_signal_code_description(const siginfo_t* si, enum_sigcode_desc_t* out) {
 +
 +  const struct {
 +    int sig; int code; const char* s_code; const char* s_desc;
 +  } t1 [] = {
-+    { SIGILL, ILL_ILLOPC, "ILL_ILLOPC", "Illegal opcode." },
-+    { SIGILL, ILL_ILLOPN, "ILL_ILLOPN", "Illegal operand." },
-+    { SIGILL, ILL_ILLADR, "ILL_ILLADR", "Illegal addressing mode." },
-+    { SIGILL, ILL_ILLTRP, "ILL_ILLTRP", "Illegal trap." },
-+    { SIGILL, ILL_PRVOPC, "ILL_PRVOPC", "Privileged opcode." },
-+    { SIGILL, ILL_PRVREG, "ILL_PRVREG", "Privileged register." },
-+    { SIGILL, ILL_COPROC, "ILL_COPROC", "Coprocessor error." },
-+    { SIGILL, ILL_BADSTK, "ILL_BADSTK", "Internal stack error." },
-+#if defined(__linux) && defined(IA64)
-+    { SIGILL, ILL_BADIADDR, "ILL_BADIADDR", "Unimplemented instruction address" },
-+    { SIGILL, ILL_BREAK, "ILL_BREAK", "Application Break instruction" },
++    { SIGILL,  ILL_ILLOPC,   "ILL_ILLOPC",   "Illegal opcode." },
++    { SIGILL,  ILL_ILLOPN,   "ILL_ILLOPN",   "Illegal operand." },
++    { SIGILL,  ILL_ILLADR,   "ILL_ILLADR",   "Illegal addressing mode." },
++    { SIGILL,  ILL_ILLTRP,   "ILL_ILLTRP",   "Illegal trap." },
++    { SIGILL,  ILL_PRVOPC,   "ILL_PRVOPC",   "Privileged opcode." },
++    { SIGILL,  ILL_PRVREG,   "ILL_PRVREG",   "Privileged register." },
++    { SIGILL,  ILL_COPROC,   "ILL_COPROC",   "Coprocessor error." },
++    { SIGILL,  ILL_BADSTK,   "ILL_BADSTK",   "Internal stack error." },
++#if defined(IA64) && defined(LINUX)
++    { SIGILL,  ILL_BADIADDR, "ILL_BADIADDR", "Unimplemented instruction address" },
++    { SIGILL,  ILL_BREAK,    "ILL_BREAK",    "Application Break instruction" },
 +#endif
-+    { SIGFPE, FPE_INTDIV, "FPE_INTDIV", "Integer divide by zero." },
-+    { SIGFPE, FPE_INTOVF, "FPE_INTOVF", "Integer overflow." },
-+    { SIGFPE, FPE_FLTDIV, "FPE_FLTDIV", "Floating-point divide by zero." },
-+    { SIGFPE, FPE_FLTOVF, "FPE_FLTOVF", "Floating-point overflow." },
-+    { SIGFPE, FPE_FLTUND, "FPE_FLTUND", "Floating-point underflow." },
-+    { SIGFPE, FPE_FLTRES, "FPE_FLTRES", "Floating-point inexact result." },
-+    { SIGFPE, FPE_FLTINV, "FPE_FLTINV", "Invalid floating-point operation." },
-+    { SIGFPE, FPE_FLTSUB, "FPE_FLTSUB", "Subscript out of range." },
-+    { SIGSEGV, SEGV_MAPERR, "SEGV_MAPERR", "Address not mapped to object." },
-+    { SIGSEGV, SEGV_ACCERR, "SEGV_ACCERR", "Invalid permissions for mapped object." },
++    { SIGFPE,  FPE_INTDIV,   "FPE_INTDIV",   "Integer divide by zero." },
++    { SIGFPE,  FPE_INTOVF,   "FPE_INTOVF",   "Integer overflow." },
++    { SIGFPE,  FPE_FLTDIV,   "FPE_FLTDIV",   "Floating-point divide by zero." },
++    { SIGFPE,  FPE_FLTOVF,   "FPE_FLTOVF",   "Floating-point overflow." },
++    { SIGFPE,  FPE_FLTUND,   "FPE_FLTUND",   "Floating-point underflow." },
++    { SIGFPE,  FPE_FLTRES,   "FPE_FLTRES",   "Floating-point inexact result." },
++    { SIGFPE,  FPE_FLTINV,   "FPE_FLTINV",   "Invalid floating-point operation." },
++    { SIGFPE,  FPE_FLTSUB,   "FPE_FLTSUB",   "Subscript out of range." },
++    { SIGSEGV, SEGV_MAPERR,  "SEGV_MAPERR",  "Address not mapped to object." },
++    { SIGSEGV, SEGV_ACCERR,  "SEGV_ACCERR",  "Invalid permissions for mapped object." },
 +#ifdef AIX
 +    // no explanation found what keyerr would be
-+    { SIGSEGV, SEGV_KEYERR, "SEGV_KEYERR", "key error" },
++    { SIGSEGV, SEGV_KEYERR,  "SEGV_KEYERR",  "key error" },
 +#endif
 +#if defined(IA64) && !defined(AIX)
 +    { SIGSEGV, SEGV_PSTKOVF, "SEGV_PSTKOVF", "Paragraph stack overflow" },
 +#endif
-+    { SIGBUS, BUS_ADRALN, "BUS_ADRALN", "Invalid address alignment." },
-+    { SIGBUS, BUS_ADRERR, "BUS_ADRERR", "Nonexistent physical address." },
-+    { SIGBUS, BUS_OBJERR, "BUS_OBJERR", "Object-specific hardware error." },
-+    { SIGTRAP, TRAP_BRKPT, "TRAP_BRKPT", "Process breakpoint." },
-+    { SIGTRAP, TRAP_TRACE, "TRAP_TRACE", "Process trace trap." },
-+    { SIGCHLD, CLD_EXITED, "CLD_EXITED", "Child has exited." },
-+    { SIGCHLD, CLD_KILLED, "CLD_KILLED", "Child has terminated abnormally and did not create a core file." },
-+    { SIGCHLD, CLD_DUMPED, "CLD_DUMPED", "Child has terminated abnormally and created a core file." },
-+    { SIGCHLD, CLD_TRAPPED, "CLD_TRAPPED", "Traced child has trapped." },
-+    { SIGCHLD, CLD_STOPPED, "CLD_STOPPED", "Child has stopped." },
-+    { SIGCHLD, CLD_CONTINUED, "CLD_CONTINUED", "Stopped child has continued." },
-+#ifndef __APPLE__
-+    { SIGPOLL, POLL_OUT, "POLL_OUT", "Output buffers available." },
-+    { SIGPOLL, POLL_MSG, "POLL_MSG", "Input message available." },
-+    { SIGPOLL, POLL_ERR, "POLL_ERR", "I/O error." },
-+    { SIGPOLL, POLL_PRI, "POLL_PRI", "High priority input available." },
-+    { SIGPOLL, POLL_HUP, "POLL_HUP", "Device disconnected. [Option End]" },
++    { SIGBUS,  BUS_ADRALN,   "BUS_ADRALN",   "Invalid address alignment." },
++    { SIGBUS,  BUS_ADRERR,   "BUS_ADRERR",   "Nonexistent physical address." },
++    { SIGBUS,  BUS_OBJERR,   "BUS_OBJERR",   "Object-specific hardware error." },
++    { SIGTRAP, TRAP_BRKPT,   "TRAP_BRKPT",   "Process breakpoint." },
++    { SIGTRAP, TRAP_TRACE,   "TRAP_TRACE",   "Process trace trap." },
++    { SIGCHLD, CLD_EXITED,   "CLD_EXITED",   "Child has exited." },
++    { SIGCHLD, CLD_KILLED,   "CLD_KILLED",   "Child has terminated abnormally and did not create a core file." },
++    { SIGCHLD, CLD_DUMPED,   "CLD_DUMPED",   "Child has terminated abnormally and created a core file." },
++    { SIGCHLD, CLD_TRAPPED,  "CLD_TRAPPED",  "Traced child has trapped." },
++    { SIGCHLD, CLD_STOPPED,  "CLD_STOPPED",  "Child has stopped." },
++    { SIGCHLD, CLD_CONTINUED,"CLD_CONTINUED","Stopped child has continued." },
++#ifdef SIGPOLL
++    { SIGPOLL, POLL_OUT,     "POLL_OUT",     "Output buffers available." },
++    { SIGPOLL, POLL_MSG,     "POLL_MSG",     "Input message available." },
++    { SIGPOLL, POLL_ERR,     "POLL_ERR",     "I/O error." },
++    { SIGPOLL, POLL_PRI,     "POLL_PRI",     "High priority input available." },
++    { SIGPOLL, POLL_HUP,     "POLL_HUP",     "Device disconnected. [Option End]" },
 +#endif
 +    { -1, -1, NULL, NULL }
 +  };
@@ -416,34 +631,34 @@
 +  const struct {
 +    int code; const char* s_code; const char* s_desc;
 +  } t2 [] = {
-+    { SI_USER, "SI_USER", "Signal sent by kill()." },
-+    { SI_QUEUE, "SI_QUEUE", "Signal sent by the sigqueue()." },
-+    { SI_TIMER, "SI_TIMER", "Signal generated by expiration of a timer set by timer_settime()." },
-+    { SI_ASYNCIO, "SI_ASYNCIO", "Signal generated by completion of an asynchronous I/O request." },
-+    { SI_MESGQ, "SI_MESGQ", "Signal generated by arrival of a message on an empty message queue." },
++    { SI_USER,      "SI_USER",     "Signal sent by kill()." },
++    { SI_QUEUE,     "SI_QUEUE",    "Signal sent by the sigqueue()." },
++    { SI_TIMER,     "SI_TIMER",    "Signal generated by expiration of a timer set by timer_settime()." },
++    { SI_ASYNCIO,   "SI_ASYNCIO",  "Signal generated by completion of an asynchronous I/O request." },
++    { SI_MESGQ,     "SI_MESGQ",    "Signal generated by arrival of a message on an empty message queue." },
 +    // Linux specific
 +#ifdef SI_TKILL
-+    { SI_TKILL, "SI_TKILL", "Signal sent by tkill (pthread_kill)" },
++    { SI_TKILL,     "SI_TKILL",    "Signal sent by tkill (pthread_kill)" },
 +#endif
 +#ifdef SI_DETHREAD
-+    { SI_DETHREAD, "SI_DETHREAD", "Signal sent by execve() killing subsidiary threads" },
++    { SI_DETHREAD,  "SI_DETHREAD", "Signal sent by execve() killing subsidiary threads" },
 +#endif
 +#ifdef SI_KERNEL
-+    { SI_KERNEL, "SI_KERNEL", "Signal sent by kernel." },
++    { SI_KERNEL,    "SI_KERNEL",   "Signal sent by kernel." },
 +#endif
 +#ifdef SI_SIGIO
-+    { SI_SIGIO, "SI_SIGIO", "Signal sent by queued SIGIO" },
++    { SI_SIGIO,     "SI_SIGIO",    "Signal sent by queued SIGIO" },
 +#endif
 +
 +#ifdef AIX
-+    { SI_UNDEFINED, "SI_UNDEFINED", "siginfo contains partial information" },
-+    { SI_EMPTY, "SI_EMPTY", "siginfo contains no useful information" },
++    { SI_UNDEFINED, "SI_UNDEFINED","siginfo contains partial information" },
++    { SI_EMPTY,     "SI_EMPTY",    "siginfo contains no useful information" },
 +#endif
 +
 +#ifdef __sun
-+    { SI_NOINFO, "SI_NOINFO", "No signal information" },
-+    { SI_RCTL, "SI_RCTL", "kernel generated signal via rctl action" },
-+    { SI_LWP, "SI_LWP", "Signal sent via lwp_kill" },
++    { SI_NOINFO,    "SI_NOINFO",   "No signal information" },
++    { SI_RCTL,      "SI_RCTL",     "kernel generated signal via rctl action" },
++    { SI_LWP,       "SI_LWP",      "Signal sent via lwp_kill" },
 +#endif
 +
 +    { -1, NULL, NULL }
@@ -456,6 +671,7 @@
 +    if (t1[i].sig == si->si_signo && t1[i].code == si->si_code) {
 +      s_code = t1[i].s_code;
 +      s_desc = t1[i].s_desc;
++      break;
 +    }
 +  }
 +
@@ -469,7 +685,8 @@
 +  }
 +
 +  if (s_code == NULL) {
-+    out->s_name = out->s_desc = "unknown";
++    out->s_name = "unknown";
++    out->s_desc = "unknown";
 +    return false;
 +  }
 +
@@ -482,19 +699,20 @@
 +// A POSIX conform, platform-independend siginfo print routine.
 +// Short print out on one line.
 +void os::Posix::print_siginfo_brief(outputStream* os, const siginfo_t* si) {
++  char buf[20];
 +  os->print("siginfo: ");
 +
 +  if (!si) {
-+    os->print(" <null>");
++    os->print("<null>");
 +    return;
 +  }
 +
 +  // See print_siginfo_full() for details.
 +  const int sig = si->si_signo;
 +
-+  os->print("si_signo: %d (%s)", sig, os::Posix::get_signal_name(sig));
++  os->print("si_signo: %d (%s)", sig, os::Posix::get_signal_name(sig, buf, sizeof(buf)));
 +
-+  enum_desc_t ed;
++  enum_sigcode_desc_t ed;
 +  if (get_signal_code_description(si, &ed)) {
 +    os->print(", si_code: %d (%s)", si->si_code, ed.s_name);
 +  } else {
@@ -515,7 +733,7 @@
 +  } else if (sig == SIGSEGV || sig == SIGBUS || sig == SIGILL ||
 +             sig == SIGTRAP || sig == SIGFPE) {
 +    os->print(", si_addr: " PTR_FORMAT, si->si_addr);
-+#ifndef __APPLE__
++#ifdef SIGPOLL
 +  } else if (sig == SIGPOLL) {
 +    os->print(", si_band: " PTR64_FORMAT, (uint64_t)si->si_band);
 +#endif
@@ -523,13 +741,17 @@
 +    os->print_cr(", si_pid: %d, si_uid: %d, si_status: %d", (int) si->si_pid, si->si_uid, si->si_status);
 +  }
 +}
-diff -r 31b4bd99aa5d src/os/posix/vm/os_posix.hpp
---- a/src/os/posix/vm/os_posix.hpp	Mon May 06 21:11:22 2013 +0200
-+++ b/src/os/posix/vm/os_posix.hpp	Mon May 06 21:14:13 2013 +0200
-@@ -34,6 +34,30 @@
-   static void print_libversion_info(outputStream* st);
++
+ os::WatcherThreadCrashProtection::WatcherThreadCrashProtection() {
+   assert(Thread::current()->is_Watcher_thread(), "Must be WatcherThread");
+ }
+diff -r ec28f9c041ff src/os/posix/vm/os_posix.hpp
+--- a/src/os/posix/vm/os_posix.hpp	Fri Aug 02 16:46:45 2013 +0200
++++ b/src/os/posix/vm/os_posix.hpp	Wed Aug 21 10:37:36 2013 +0200
+@@ -35,6 +35,31 @@
    static void print_load_average(outputStream* st);
  
+ 
 +public:
 +
 +  // Returns true if signal is valid.
@@ -537,23 +759,117 @@
 +
 +  // Helper function, returns a string (e.g. "SIGILL") for a signal.
 +  // Returned string is a constant. For unknown signals "UNKNOWN" is returned.
-+  static const char* get_signal_name(int sig);
++  static const char* get_signal_name(int sig, char* out, size_t outlen);
 +
-+  // Returns one-line short description of a signal set in a user privided buffer.
++  // Returns one-line short description of a signal set in a user provided buffer.
 +  static const char* describe_signal_set_short(const sigset_t* set, char* buffer, size_t size);
 +
 +  // Prints a short one-line description of a signal set.
 +  static void print_signal_set_short(outputStream* st, const sigset_t* set);
 +
-+  // Writes one-line description of a combination of sigaction.sa_flags into a user
-+  // provided buffer. Returns that buffer.
++  // Writes a one-line description of a combination of sigaction.sa_flags
++  // into a user provided buffer. Returns that buffer.
 +  static const char* describe_sa_flags(int flags, char* buffer, size_t size);
 +
-+  // Prints one-line description of a combination of sigaction.sa_flags.
++  // Prints a one-line description of a combination of sigaction.sa_flags.
 +  static void print_sa_flags(outputStream* st, int flags);
 +
 +  // A POSIX conform, platform-independend siginfo print routine.
 +  static void print_siginfo_brief(outputStream* os, const siginfo_t* si);
- 
++
  };
  
+ /*
+@@ -57,4 +82,4 @@
+   sigjmp_buf _jmpbuf;
+ };
+ 
+-#endif
++#endif // OS_POSIX_VM_OS_POSIX_HPP
+diff -r ec28f9c041ff src/os/solaris/vm/os_solaris.cpp
+--- a/src/os/solaris/vm/os_solaris.cpp	Fri Aug 02 16:46:45 2013 +0200
++++ b/src/os/solaris/vm/os_solaris.cpp	Wed Aug 21 10:37:36 2013 +0200
+@@ -2247,58 +2247,12 @@
+   (void) check_addr0(st);
+ }
+ 
+-// Taken from /usr/include/sys/machsig.h  Supposed to be architecture specific
+-// but they're the same for all the solaris architectures that we support.
+-const char *ill_names[] = { "ILL0", "ILL_ILLOPC", "ILL_ILLOPN", "ILL_ILLADR",
+-                          "ILL_ILLTRP", "ILL_PRVOPC", "ILL_PRVREG",
+-                          "ILL_COPROC", "ILL_BADSTK" };
+-
+-const char *fpe_names[] = { "FPE0", "FPE_INTDIV", "FPE_INTOVF", "FPE_FLTDIV",
+-                          "FPE_FLTOVF", "FPE_FLTUND", "FPE_FLTRES",
+-                          "FPE_FLTINV", "FPE_FLTSUB" };
+-
+-const char *segv_names[] = { "SEGV0", "SEGV_MAPERR", "SEGV_ACCERR" };
+-
+-const char *bus_names[] = { "BUS0", "BUS_ADRALN", "BUS_ADRERR", "BUS_OBJERR" };
+-
+ void os::print_siginfo(outputStream* st, void* siginfo) {
+-  st->print("siginfo:");
+-
+-  const int buflen = 100;
+-  char buf[buflen];
+-  siginfo_t *si = (siginfo_t*)siginfo;
+-  st->print("si_signo=%s: ", os::exception_name(si->si_signo, buf, buflen));
+-  char *err = strerror(si->si_errno);
+-  if (si->si_errno != 0 && err != NULL) {
+-    st->print("si_errno=%s", err);
+-  } else {
+-    st->print("si_errno=%d", si->si_errno);
+-  }
+-  const int c = si->si_code;
+-  assert(c > 0, "unexpected si_code");
+-  switch (si->si_signo) {
+-  case SIGILL:
+-    st->print(", si_code=%d (%s)", c, c > 8 ? "" : ill_names[c]);
+-    st->print(", si_addr=" PTR_FORMAT, si->si_addr);
+-    break;
+-  case SIGFPE:
+-    st->print(", si_code=%d (%s)", c, c > 9 ? "" : fpe_names[c]);
+-    st->print(", si_addr=" PTR_FORMAT, si->si_addr);
+-    break;
+-  case SIGSEGV:
+-    st->print(", si_code=%d (%s)", c, c > 2 ? "" : segv_names[c]);
+-    st->print(", si_addr=" PTR_FORMAT, si->si_addr);
+-    break;
+-  case SIGBUS:
+-    st->print(", si_code=%d (%s)", c, c > 3 ? "" : bus_names[c]);
+-    st->print(", si_addr=" PTR_FORMAT, si->si_addr);
+-    break;
+-  default:
+-    st->print(", si_code=%d", si->si_code);
+-    // no si_addr
+-  }
+-
+-  if ((si->si_signo == SIGBUS || si->si_signo == SIGSEGV) &&
++  const siginfo_t* si = (const siginfo_t*)siginfo;
++
++  os::Posix::print_siginfo_brief(st, si);
++
++  if (si && (si->si_signo == SIGBUS || si->si_signo == SIGSEGV) &&
+       UseSharedSpaces) {
+     FileMapInfo* mapinfo = FileMapInfo::current_info();
+     if (mapinfo->is_in_shared_space(si->si_addr)) {
+@@ -2368,7 +2322,8 @@
+     st->print("[%s]", get_signal_handler_name(handler, buf, buflen));
+   }
+ 
+-  st->print(", sa_mask[0]=" PTR32_FORMAT, *(uint32_t*)&sa.sa_mask);
++  st->print(", sa_mask[0]=");
++  os::Posix::print_signal_set_short(st, &sa.sa_mask);
+ 
+   address rh = VMError::get_resetted_sighandler(sig);
+   // May be, handler was resetted by VMError?
+@@ -2377,7 +2332,8 @@
+     sa.sa_flags = VMError::get_resetted_sigflags(sig);
+   }
+ 
+-  st->print(", sa_flags="   PTR32_FORMAT, sa.sa_flags);
++  st->print(", sa_flags=");
++  os::Posix::print_sa_flags(st, sa.sa_flags);
+ 
+   // Check: is it our handler?
+   if(handler == CAST_FROM_FN_PTR(address, signalHandler) ||
--- a/ppc_patches/0013_basic_Aix_adaptions.patch	Wed Aug 28 16:09:50 2013 +0000
+++ b/ppc_patches/0013_basic_Aix_adaptions.patch	Fri Sep 06 11:29:41 2013 +0200
@@ -1,25 +1,28 @@
 # HG changeset patch
-# Parent 4646292f16165e7b98b75c9858a5d41617e180a7
-8020776: PPC64 (part 13): basic changes for AIX
-Summary: Added AIX includes alpha-sorted before BSD.
+# User goetz
+# Date 1376561304 -7200
+# Node ID e382bdfb6f17a47618c135fda9f8015654da235e
+# Parent 01855841db6c41d0c19767928de90a6197c78eee
+8023033: PPC64 (part 13): basic changes for AIX
+Summary: Added AIX includes alpha-sorted before BSD. Fix compilation issues with xlC in shared code. Basic shared platform dependend adaption (vm_version etc.).
 
-diff -r 4646292f1616 src/os/posix/vm/os_posix.cpp
---- a/src/os/posix/vm/os_posix.cpp	Tue Jul 09 12:06:30 2013 +0200
-+++ b/src/os/posix/vm/os_posix.cpp	Tue Jul 09 12:06:59 2013 +0200
+diff -r 01855841db6c src/os/posix/vm/os_posix.cpp
+--- a/src/os/posix/vm/os_posix.cpp	Fri Jul 26 00:59:18 2013 +0200
++++ b/src/os/posix/vm/os_posix.cpp	Wed Aug 21 10:30:58 2013 +0200
 @@ -164,8 +164,8 @@
    if (rlim.rlim_cur == RLIM_INFINITY) st->print("infinity");
    else st->print("%uk", rlim.rlim_cur >> 10);
  
--  //Isn't there on solaris
+-  // Isn't there on solaris
 -#ifndef TARGET_OS_FAMILY_solaris
 +  // Isn't there on solaris and aix.
 +#if !defined(TARGET_OS_FAMILY_solaris) && !defined(TARGET_OS_FAMILY_aix)
    st->print(", NPROC ");
    getrlimit(RLIMIT_NPROC, &rlim);
    if (rlim.rlim_cur == RLIM_INFINITY) st->print("infinity");
-diff -r 4646292f1616 src/share/vm/c1/c1_globals.hpp
---- a/src/share/vm/c1/c1_globals.hpp	Tue Jul 09 12:06:30 2013 +0200
-+++ b/src/share/vm/c1/c1_globals.hpp	Tue Jul 09 12:06:59 2013 +0200
+diff -r 01855841db6c src/share/vm/c1/c1_globals.hpp
+--- a/src/share/vm/c1/c1_globals.hpp	Fri Jul 26 00:59:18 2013 +0200
++++ b/src/share/vm/c1/c1_globals.hpp	Wed Aug 21 10:30:58 2013 +0200
 @@ -47,6 +47,9 @@
  #ifdef TARGET_OS_FAMILY_windows
  # include "c1_globals_windows.hpp"
@@ -30,9 +33,9 @@
  #ifdef TARGET_OS_FAMILY_bsd
  # include "c1_globals_bsd.hpp"
  #endif
-diff -r 4646292f1616 src/share/vm/classfile/classLoader.cpp
---- a/src/share/vm/classfile/classLoader.cpp	Tue Jul 09 12:06:30 2013 +0200
-+++ b/src/share/vm/classfile/classLoader.cpp	Tue Jul 09 12:06:59 2013 +0200
+diff -r 01855841db6c src/share/vm/classfile/classLoader.cpp
+--- a/src/share/vm/classfile/classLoader.cpp	Fri Jul 26 00:59:18 2013 +0200
++++ b/src/share/vm/classfile/classLoader.cpp	Wed Aug 21 10:30:58 2013 +0200
 @@ -68,6 +68,9 @@
  #ifdef TARGET_OS_FAMILY_windows
  # include "os_windows.inline.hpp"
@@ -43,21 +46,21 @@
  #ifdef TARGET_OS_FAMILY_bsd
  # include "os_bsd.inline.hpp"
  #endif
-diff -r 4646292f1616 src/share/vm/code/nmethod.hpp
---- a/src/share/vm/code/nmethod.hpp	Tue Jul 09 12:06:30 2013 +0200
-+++ b/src/share/vm/code/nmethod.hpp	Tue Jul 09 12:06:59 2013 +0200
-@@ -265,7 +265,7 @@
-           int comp_level);
+diff -r 01855841db6c src/share/vm/code/nmethod.cpp
+--- a/src/share/vm/code/nmethod.cpp	Fri Jul 26 00:59:18 2013 +0200
++++ b/src/share/vm/code/nmethod.cpp	Wed Aug 21 10:30:58 2013 +0200
+@@ -799,7 +799,7 @@
+ }
+ #endif // def HAVE_DTRACE_H
  
-   // helper methods
--  void* operator new(size_t size, int nmethod_size);
-+  void* operator new(size_t size, int nmethod_size) throw ();
- 
-   const char* reloc_string_for(u_char* begin, u_char* end);
-   // Returns true if this thread changed the state of the nmethod or
-diff -r 4646292f1616 src/share/vm/code/relocInfo.hpp
---- a/src/share/vm/code/relocInfo.hpp	Tue Jul 09 12:06:30 2013 +0200
-+++ b/src/share/vm/code/relocInfo.hpp	Tue Jul 09 12:06:59 2013 +0200
+-void* nmethod::operator new(size_t size, int nmethod_size) throw () {
++void* nmethod::operator new(size_t size, int nmethod_size) {
+   // Not critical, may return null if there is too little continuous memory
+   return CodeCache::allocate(nmethod_size);
+ }
+diff -r 01855841db6c src/share/vm/code/relocInfo.hpp
+--- a/src/share/vm/code/relocInfo.hpp	Fri Jul 26 00:59:18 2013 +0200
++++ b/src/share/vm/code/relocInfo.hpp	Wed Aug 21 10:30:58 2013 +0200
 @@ -365,7 +365,7 @@
    // "immediate" in the prefix header word itself.  This optimization
    // is invisible outside this module.)
@@ -76,9 +79,9 @@
    assert(relocInfo::fits_into_immediate(datalen), "datalen in limits");
    return relocInfo(relocInfo::data_prefix_tag, relocInfo::RAW_BITS, relocInfo::datalen_tag | datalen);
  }
-diff -r 4646292f1616 src/share/vm/code/stubs.hpp
---- a/src/share/vm/code/stubs.hpp	Tue Jul 09 12:06:30 2013 +0200
-+++ b/src/share/vm/code/stubs.hpp	Tue Jul 09 12:06:59 2013 +0200
+diff -r 01855841db6c src/share/vm/code/stubs.hpp
+--- a/src/share/vm/code/stubs.hpp	Fri Jul 26 00:59:18 2013 +0200
++++ b/src/share/vm/code/stubs.hpp	Wed Aug 21 10:30:58 2013 +0200
 @@ -36,6 +36,9 @@
  #ifdef TARGET_OS_FAMILY_windows
  # include "os_windows.inline.hpp"
@@ -89,27 +92,41 @@
  #ifdef TARGET_OS_FAMILY_bsd
  # include "os_bsd.inline.hpp"
  #endif
-diff -r 4646292f1616 src/share/vm/code/vmreg.hpp
---- a/src/share/vm/code/vmreg.hpp	Tue Jul 09 12:06:30 2013 +0200
-+++ b/src/share/vm/code/vmreg.hpp	Tue Jul 09 12:06:59 2013 +0200
-@@ -63,6 +63,14 @@
- // the current stack pointer.  Warped numbers are required during compilation
- // when we do not yet know how big the frame will be.
+diff -r 01855841db6c src/share/vm/code/vmreg.hpp
+--- a/src/share/vm/code/vmreg.hpp	Fri Jul 26 00:59:18 2013 +0200
++++ b/src/share/vm/code/vmreg.hpp	Wed Aug 21 10:30:58 2013 +0200
+@@ -73,7 +73,7 @@
+ // friend class Location;
+ private:
+   enum {
+-    BAD = -1
++    BAD_REG = -1
+   };
  
-+#ifdef AIX
-+// BAD is defined in AIX system header sys/param.h.
-+// It conflicts with the BAD enum further down.
-+#ifdef BAD
-+#undef BAD
-+#endif
-+#endif
-+
- class VMRegImpl;
- typedef VMRegImpl* VMReg;
  
-diff -r 4646292f1616 src/share/vm/compiler/disassembler.hpp
---- a/src/share/vm/compiler/disassembler.hpp	Tue Jul 09 12:06:30 2013 +0200
-+++ b/src/share/vm/compiler/disassembler.hpp	Tue Jul 09 12:06:59 2013 +0200
+@@ -86,7 +86,7 @@
+ 
+ public:
+ 
+-  static VMReg  as_VMReg(int val, bool bad_ok = false) { assert(val > BAD || bad_ok, "invalid"); return (VMReg) (intptr_t) val; }
++  static VMReg  as_VMReg(int val, bool bad_ok = false) { assert(val > BAD_REG || bad_ok, "invalid"); return (VMReg) (intptr_t) val; }
+ 
+   const char*  name() {
+     if (is_reg()) {
+@@ -98,8 +98,8 @@
+       return "STACKED REG";
+     }
+   }
+-  static VMReg Bad() { return (VMReg) (intptr_t) BAD; }
+-  bool is_valid() const { return ((intptr_t) this) != BAD; }
++  static VMReg Bad() { return (VMReg) (intptr_t) BAD_REG; }
++  bool is_valid() const { return ((intptr_t) this) != BAD_REG; }
+   bool is_stack() const { return (intptr_t) this >= (intptr_t) stack0; }
+   bool is_reg()   const { return is_valid() && !is_stack(); }
+ 
+diff -r 01855841db6c src/share/vm/compiler/disassembler.hpp
+--- a/src/share/vm/compiler/disassembler.hpp	Fri Jul 26 00:59:18 2013 +0200
++++ b/src/share/vm/compiler/disassembler.hpp	Wed Aug 21 10:30:58 2013 +0200
 @@ -36,6 +36,9 @@
  #ifdef TARGET_OS_FAMILY_windows
  # include "os_windows.inline.hpp"
@@ -120,9 +137,9 @@
  #ifdef TARGET_OS_FAMILY_bsd
  # include "os_bsd.inline.hpp"
  #endif
-diff -r 4646292f1616 src/share/vm/gc_implementation/concurrentMarkSweep/adaptiveFreeList.cpp
---- a/src/share/vm/gc_implementation/concurrentMarkSweep/adaptiveFreeList.cpp	Tue Jul 09 12:06:30 2013 +0200
-+++ b/src/share/vm/gc_implementation/concurrentMarkSweep/adaptiveFreeList.cpp	Tue Jul 09 12:06:59 2013 +0200
+diff -r 01855841db6c src/share/vm/gc_implementation/concurrentMarkSweep/adaptiveFreeList.cpp
+--- a/src/share/vm/gc_implementation/concurrentMarkSweep/adaptiveFreeList.cpp	Fri Jul 26 00:59:18 2013 +0200
++++ b/src/share/vm/gc_implementation/concurrentMarkSweep/adaptiveFreeList.cpp	Wed Aug 21 10:30:58 2013 +0200
 @@ -122,7 +122,7 @@
  
  template <class Chunk>
@@ -132,9 +149,9 @@
  }
  
  template <class Chunk>
-diff -r 4646292f1616 src/share/vm/gc_implementation/concurrentMarkSweep/cmsAdaptiveSizePolicy.cpp
---- a/src/share/vm/gc_implementation/concurrentMarkSweep/cmsAdaptiveSizePolicy.cpp	Tue Jul 09 12:06:30 2013 +0200
-+++ b/src/share/vm/gc_implementation/concurrentMarkSweep/cmsAdaptiveSizePolicy.cpp	Tue Jul 09 12:06:59 2013 +0200
+diff -r 01855841db6c src/share/vm/gc_implementation/concurrentMarkSweep/cmsAdaptiveSizePolicy.cpp
+--- a/src/share/vm/gc_implementation/concurrentMarkSweep/cmsAdaptiveSizePolicy.cpp	Fri Jul 26 00:59:18 2013 +0200
++++ b/src/share/vm/gc_implementation/concurrentMarkSweep/cmsAdaptiveSizePolicy.cpp	Wed Aug 21 10:30:58 2013 +0200
 @@ -37,6 +37,9 @@
  #ifdef TARGET_OS_FAMILY_windows
  # include "os_windows.inline.hpp"
@@ -145,9 +162,9 @@
  #ifdef TARGET_OS_FAMILY_bsd
  # include "os_bsd.inline.hpp"
  #endif
-diff -r 4646292f1616 src/share/vm/gc_implementation/parallelScavenge/parMarkBitMap.cpp
---- a/src/share/vm/gc_implementation/parallelScavenge/parMarkBitMap.cpp	Tue Jul 09 12:06:30 2013 +0200
-+++ b/src/share/vm/gc_implementation/parallelScavenge/parMarkBitMap.cpp	Tue Jul 09 12:06:59 2013 +0200
+diff -r 01855841db6c src/share/vm/gc_implementation/parallelScavenge/parMarkBitMap.cpp
+--- a/src/share/vm/gc_implementation/parallelScavenge/parMarkBitMap.cpp	Fri Jul 26 00:59:18 2013 +0200
++++ b/src/share/vm/gc_implementation/parallelScavenge/parMarkBitMap.cpp	Wed Aug 21 10:30:58 2013 +0200
 @@ -38,6 +38,9 @@
  #ifdef TARGET_OS_FAMILY_windows
  # include "os_windows.inline.hpp"
@@ -158,9 +175,9 @@
  #ifdef TARGET_OS_FAMILY_bsd
  # include "os_bsd.inline.hpp"
  #endif
-diff -r 4646292f1616 src/share/vm/gc_implementation/parallelScavenge/psVirtualspace.cpp
---- a/src/share/vm/gc_implementation/parallelScavenge/psVirtualspace.cpp	Tue Jul 09 12:06:30 2013 +0200
-+++ b/src/share/vm/gc_implementation/parallelScavenge/psVirtualspace.cpp	Tue Jul 09 12:06:59 2013 +0200
+diff -r 01855841db6c src/share/vm/gc_implementation/parallelScavenge/psVirtualspace.cpp
+--- a/src/share/vm/gc_implementation/parallelScavenge/psVirtualspace.cpp	Fri Jul 26 00:59:18 2013 +0200
++++ b/src/share/vm/gc_implementation/parallelScavenge/psVirtualspace.cpp	Wed Aug 21 10:30:58 2013 +0200
 @@ -35,6 +35,9 @@
  #ifdef TARGET_OS_FAMILY_windows
  # include "os_windows.inline.hpp"
@@ -171,9 +188,9 @@
  #ifdef TARGET_OS_FAMILY_bsd
  # include "os_bsd.inline.hpp"
  #endif
-diff -r 4646292f1616 src/share/vm/interpreter/bytecodeInterpreter.cpp
---- a/src/share/vm/interpreter/bytecodeInterpreter.cpp	Tue Jul 09 12:06:30 2013 +0200
-+++ b/src/share/vm/interpreter/bytecodeInterpreter.cpp	Tue Jul 09 12:06:59 2013 +0200
+diff -r 01855841db6c src/share/vm/interpreter/bytecodeInterpreter.cpp
+--- a/src/share/vm/interpreter/bytecodeInterpreter.cpp	Fri Jul 26 00:59:18 2013 +0200
++++ b/src/share/vm/interpreter/bytecodeInterpreter.cpp	Wed Aug 21 10:30:58 2013 +0200
 @@ -67,6 +67,9 @@
  #ifdef TARGET_OS_ARCH_linux_ppc
  # include "orderAccess_linux_ppc.inline.hpp"
@@ -184,9 +201,9 @@
  #ifdef TARGET_OS_ARCH_bsd_x86
  # include "orderAccess_bsd_x86.inline.hpp"
  #endif
-diff -r 4646292f1616 src/share/vm/libadt/port.hpp
---- a/src/share/vm/libadt/port.hpp	Tue Jul 09 12:06:30 2013 +0200
-+++ b/src/share/vm/libadt/port.hpp	Tue Jul 09 12:06:59 2013 +0200
+diff -r 01855841db6c src/share/vm/libadt/port.hpp
+--- a/src/share/vm/libadt/port.hpp	Fri Jul 26 00:59:18 2013 +0200
++++ b/src/share/vm/libadt/port.hpp	Wed Aug 21 10:30:58 2013 +0200
 @@ -91,8 +91,6 @@
  #define IMPLEMENTATION
  #include <stdlib.h>
@@ -196,21 +213,9 @@
  
  #elif defined(_MSC_VER)
  // Microsoft Visual C++
-@@ -192,8 +190,11 @@
- typedef double float64;         // 64-bit float
- #endif // __TANDEM
- 
-+#ifndef _AIX
-+// These conflict with /usr/include/sys/inttypes.h on aix.
- typedef jlong int64;            // Java long for my 64-bit type
- typedef julong uint64;          // Java long for my 64-bit type
-+#endif
- 
- //-----------------------------------------------------------------------------
- // Nice constants
-diff -r 4646292f1616 src/share/vm/memory/allocation.cpp
---- a/src/share/vm/memory/allocation.cpp	Tue Jul 09 12:06:30 2013 +0200
-+++ b/src/share/vm/memory/allocation.cpp	Tue Jul 09 12:06:59 2013 +0200
+diff -r 01855841db6c src/share/vm/memory/allocation.cpp
+--- a/src/share/vm/memory/allocation.cpp	Fri Jul 26 00:59:18 2013 +0200
++++ b/src/share/vm/memory/allocation.cpp	Wed Aug 21 10:30:58 2013 +0200
 @@ -45,6 +45,9 @@
  #ifdef TARGET_OS_FAMILY_windows
  # include "os_windows.inline.hpp"
@@ -221,30 +226,23 @@
  #ifdef TARGET_OS_FAMILY_bsd
  # include "os_bsd.inline.hpp"
  #endif
-diff -r 4646292f1616 src/share/vm/memory/allocation.hpp
---- a/src/share/vm/memory/allocation.hpp	Tue Jul 09 12:06:30 2013 +0200
-+++ b/src/share/vm/memory/allocation.hpp	Tue Jul 09 12:06:59 2013 +0200
-@@ -218,7 +218,7 @@
- // Calling new or delete will result in fatal error.
- 
+diff -r 01855841db6c src/share/vm/memory/allocation.hpp
+--- a/src/share/vm/memory/allocation.hpp	Fri Jul 26 00:59:18 2013 +0200
++++ b/src/share/vm/memory/allocation.hpp	Wed Aug 21 10:30:58 2013 +0200
+@@ -218,7 +218,8 @@
  class StackObj ALLOCATION_SUPER_CLASS_SPEC {
-- private:
+  private:
+   void* operator new(size_t size);
++  void* operator new [](size_t size);
 + public:
-   void* operator new(size_t size);
    void  operator delete(void* p);
-   void* operator new [](size_t size);
-@@ -244,7 +244,7 @@
- // be defined as a an empty string "".
- //
- class _ValueObj {
-- private:
-+ public:
-   void* operator new(size_t size);
-   void  operator delete(void* p);
-   void* operator new [](size_t size);
-diff -r 4646292f1616 src/share/vm/memory/space.hpp
---- a/src/share/vm/memory/space.hpp	Tue Jul 09 12:06:30 2013 +0200
-+++ b/src/share/vm/memory/space.hpp	Tue Jul 09 12:06:59 2013 +0200
+-  void* operator new [](size_t size);
+   void  operator delete [](void* p);
+ };
+
+diff -r 01855841db6c src/share/vm/memory/space.hpp
+--- a/src/share/vm/memory/space.hpp	Fri Jul 26 00:59:18 2013 +0200
++++ b/src/share/vm/memory/space.hpp	Wed Aug 21 10:30:58 2013 +0200
 @@ -45,6 +45,9 @@
  #ifdef TARGET_OS_FAMILY_windows
  # include "os_windows.inline.hpp"
@@ -255,10 +253,10 @@
  #ifdef TARGET_OS_FAMILY_bsd
  # include "os_bsd.inline.hpp"
  #endif
-diff -r 4646292f1616 src/share/vm/memory/universe.cpp
---- a/src/share/vm/memory/universe.cpp	Tue Jul 09 12:06:30 2013 +0200
-+++ b/src/share/vm/memory/universe.cpp	Tue Jul 09 12:06:59 2013 +0200
-@@ -745,7 +745,7 @@
+diff -r 01855841db6c src/share/vm/memory/universe.cpp
+--- a/src/share/vm/memory/universe.cpp	Fri Jul 26 00:59:18 2013 +0200
++++ b/src/share/vm/memory/universe.cpp	Wed Aug 21 10:30:58 2013 +0200
+@@ -747,7 +747,7 @@
        // the correct no-access prefix.
        // The final value will be set in initialize_heap() below.
        Universe::set_narrow_oop_base((address)NarrowOopHeapMax);
@@ -267,21 +265,21 @@
        if (UseLargePages) {
          // Cannot allocate guard pages for implicit checks in indexed
          // addressing mode when large pages are specified on windows.
-@@ -823,6 +823,11 @@
+@@ -825,6 +825,11 @@
        // Can't reserve heap below 32Gb.
        // keep the Universe::narrow_oop_base() set in Universe::reserve_heap()
        Universe::set_narrow_oop_shift(LogMinObjAlignmentInBytes);
 +#ifdef AIX
 +      // There is no protected page before the heap. This assures all oops
-+      // are decoded so that NULL is preserverd, so this page will not be accessed.
++      // are decoded so that NULL is preserved, so this page will not be accessed.
 +      Universe::set_narrow_oop_use_implicit_null_checks(false);
 +#endif
        if (verbose) {
          tty->print(", %s: "PTR_FORMAT,
              narrow_oop_mode_to_string(HeapBasedNarrowOop),
-diff -r 4646292f1616 src/share/vm/oops/typeArrayOop.hpp
---- a/src/share/vm/oops/typeArrayOop.hpp	Tue Jul 09 12:06:30 2013 +0200
-+++ b/src/share/vm/oops/typeArrayOop.hpp	Tue Jul 09 12:06:59 2013 +0200
+diff -r 01855841db6c src/share/vm/oops/typeArrayOop.hpp
+--- a/src/share/vm/oops/typeArrayOop.hpp	Fri Jul 26 00:59:18 2013 +0200
++++ b/src/share/vm/oops/typeArrayOop.hpp	Wed Aug 21 10:30:58 2013 +0200
 @@ -51,6 +51,9 @@
  #ifdef TARGET_OS_ARCH_linux_ppc
  # include "orderAccess_linux_ppc.inline.hpp"
@@ -292,9 +290,9 @@
  #ifdef TARGET_OS_ARCH_bsd_x86
  # include "orderAccess_bsd_x86.inline.hpp"
  #endif
-diff -r 4646292f1616 src/share/vm/opto/c2_globals.hpp
---- a/src/share/vm/opto/c2_globals.hpp	Tue Jul 09 12:06:30 2013 +0200
-+++ b/src/share/vm/opto/c2_globals.hpp	Tue Jul 09 12:06:59 2013 +0200
+diff -r 01855841db6c src/share/vm/opto/c2_globals.hpp
+--- a/src/share/vm/opto/c2_globals.hpp	Fri Jul 26 00:59:18 2013 +0200
++++ b/src/share/vm/opto/c2_globals.hpp	Wed Aug 21 10:30:58 2013 +0200
 @@ -47,6 +47,9 @@
  #ifdef TARGET_OS_FAMILY_windows
  # include "c2_globals_windows.hpp"
@@ -305,9 +303,9 @@
  #ifdef TARGET_OS_FAMILY_bsd
  # include "c2_globals_bsd.hpp"
  #endif
-diff -r 4646292f1616 src/share/vm/prims/jvm.cpp
---- a/src/share/vm/prims/jvm.cpp	Tue Jul 09 12:06:30 2013 +0200
-+++ b/src/share/vm/prims/jvm.cpp	Tue Jul 09 12:06:59 2013 +0200
+diff -r 01855841db6c src/share/vm/prims/jvm.cpp
+--- a/src/share/vm/prims/jvm.cpp	Fri Jul 26 00:59:18 2013 +0200
++++ b/src/share/vm/prims/jvm.cpp	Wed Aug 21 10:30:58 2013 +0200
 @@ -76,6 +76,9 @@
  #ifdef TARGET_OS_FAMILY_windows
  # include "jvm_windows.h"
@@ -318,9 +316,9 @@
  #ifdef TARGET_OS_FAMILY_bsd
  # include "jvm_bsd.h"
  #endif
-diff -r 4646292f1616 src/share/vm/prims/jvm.h
---- a/src/share/vm/prims/jvm.h	Tue Jul 09 12:06:30 2013 +0200
-+++ b/src/share/vm/prims/jvm.h	Tue Jul 09 12:06:59 2013 +0200
+diff -r 01855841db6c src/share/vm/prims/jvm.h
+--- a/src/share/vm/prims/jvm.h	Fri Jul 26 00:59:18 2013 +0200
++++ b/src/share/vm/prims/jvm.h	Wed Aug 21 10:30:58 2013 +0200
 @@ -35,6 +35,9 @@
  #ifdef TARGET_OS_FAMILY_windows
  # include "jvm_windows.h"
@@ -331,9 +329,9 @@
  #ifdef TARGET_OS_FAMILY_bsd
  # include "jvm_bsd.h"
  #endif
-diff -r 4646292f1616 src/share/vm/prims/nativeLookup.cpp
---- a/src/share/vm/prims/nativeLookup.cpp	Tue Jul 09 12:06:30 2013 +0200
-+++ b/src/share/vm/prims/nativeLookup.cpp	Tue Jul 09 12:06:59 2013 +0200
+diff -r 01855841db6c src/share/vm/prims/nativeLookup.cpp
+--- a/src/share/vm/prims/nativeLookup.cpp	Fri Jul 26 00:59:18 2013 +0200
++++ b/src/share/vm/prims/nativeLookup.cpp	Wed Aug 21 10:30:58 2013 +0200
 @@ -50,6 +50,9 @@
  #ifdef TARGET_OS_FAMILY_windows
  # include "os_windows.inline.hpp"
@@ -344,9 +342,9 @@
  #ifdef TARGET_OS_FAMILY_bsd
  # include "os_bsd.inline.hpp"
  #endif
-diff -r 4646292f1616 src/share/vm/runtime/arguments.cpp
---- a/src/share/vm/runtime/arguments.cpp	Tue Jul 09 12:06:30 2013 +0200
-+++ b/src/share/vm/runtime/arguments.cpp	Tue Jul 09 12:06:59 2013 +0200
+diff -r 01855841db6c src/share/vm/runtime/arguments.cpp
+--- a/src/share/vm/runtime/arguments.cpp	Fri Jul 26 00:59:18 2013 +0200
++++ b/src/share/vm/runtime/arguments.cpp	Wed Aug 21 10:30:58 2013 +0200
 @@ -49,6 +49,9 @@
  #ifdef TARGET_OS_FAMILY_windows
  # include "os_windows.inline.hpp"
@@ -357,9 +355,9 @@
  #ifdef TARGET_OS_FAMILY_bsd
  # include "os_bsd.inline.hpp"
  #endif
-diff -r 4646292f1616 src/share/vm/runtime/atomic.cpp
---- a/src/share/vm/runtime/atomic.cpp	Tue Jul 09 12:06:30 2013 +0200
-+++ b/src/share/vm/runtime/atomic.cpp	Tue Jul 09 12:06:59 2013 +0200
+diff -r 01855841db6c src/share/vm/runtime/atomic.cpp
+--- a/src/share/vm/runtime/atomic.cpp	Fri Jul 26 00:59:18 2013 +0200
++++ b/src/share/vm/runtime/atomic.cpp	Wed Aug 21 10:30:58 2013 +0200
 @@ -33,6 +33,9 @@
  #ifdef TARGET_OS_FAMILY_windows
  # include "os_windows.inline.hpp"
@@ -370,9 +368,9 @@
  #ifdef TARGET_OS_FAMILY_bsd
  # include "os_bsd.inline.hpp"
  #endif
-diff -r 4646292f1616 src/share/vm/runtime/atomic.inline.hpp
---- a/src/share/vm/runtime/atomic.inline.hpp	Tue Jul 09 12:06:30 2013 +0200
-+++ b/src/share/vm/runtime/atomic.inline.hpp	Tue Jul 09 12:06:59 2013 +0200
+diff -r 01855841db6c src/share/vm/runtime/atomic.inline.hpp
+--- a/src/share/vm/runtime/atomic.inline.hpp	Fri Jul 26 00:59:18 2013 +0200
++++ b/src/share/vm/runtime/atomic.inline.hpp	Wed Aug 21 10:30:58 2013 +0200
 @@ -57,6 +57,11 @@
  # include "atomic_windows_x86.inline.hpp"
  #endif
@@ -385,9 +383,9 @@
  // BSD
  #ifdef TARGET_OS_ARCH_bsd_x86
  # include "atomic_bsd_x86.inline.hpp"
-diff -r 4646292f1616 src/share/vm/runtime/globals.hpp
---- a/src/share/vm/runtime/globals.hpp	Tue Jul 09 12:06:30 2013 +0200
-+++ b/src/share/vm/runtime/globals.hpp	Tue Jul 09 12:06:59 2013 +0200
+diff -r 01855841db6c src/share/vm/runtime/globals.hpp
+--- a/src/share/vm/runtime/globals.hpp	Fri Jul 26 00:59:18 2013 +0200
++++ b/src/share/vm/runtime/globals.hpp	Wed Aug 21 10:30:58 2013 +0200
 @@ -61,6 +61,9 @@
  #ifdef TARGET_OS_FAMILY_windows
  # include "globals_windows.hpp"
@@ -438,9 +436,9 @@
  #ifdef TARGET_OS_FAMILY_bsd
  # include "c2_globals_bsd.hpp"
  #endif
-diff -r 4646292f1616 src/share/vm/runtime/interfaceSupport.hpp
---- a/src/share/vm/runtime/interfaceSupport.hpp	Tue Jul 09 12:06:30 2013 +0200
-+++ b/src/share/vm/runtime/interfaceSupport.hpp	Tue Jul 09 12:06:59 2013 +0200
+diff -r 01855841db6c src/share/vm/runtime/interfaceSupport.hpp
+--- a/src/share/vm/runtime/interfaceSupport.hpp	Fri Jul 26 00:59:18 2013 +0200
++++ b/src/share/vm/runtime/interfaceSupport.hpp	Wed Aug 21 10:30:58 2013 +0200
 @@ -107,6 +107,9 @@
  #ifdef TARGET_OS_FAMILY_windows
  # include "interfaceSupport_windows.hpp"
@@ -451,9 +449,9 @@
  #ifdef TARGET_OS_FAMILY_bsd
  # include "interfaceSupport_bsd.hpp"
  #endif
-diff -r 4646292f1616 src/share/vm/runtime/javaFrameAnchor.hpp
---- a/src/share/vm/runtime/javaFrameAnchor.hpp	Tue Jul 09 12:06:30 2013 +0200
-+++ b/src/share/vm/runtime/javaFrameAnchor.hpp	Tue Jul 09 12:06:59 2013 +0200
+diff -r 01855841db6c src/share/vm/runtime/javaFrameAnchor.hpp
+--- a/src/share/vm/runtime/javaFrameAnchor.hpp	Fri Jul 26 00:59:18 2013 +0200
++++ b/src/share/vm/runtime/javaFrameAnchor.hpp	Wed Aug 21 10:30:58 2013 +0200
 @@ -50,6 +50,9 @@
  #ifdef TARGET_OS_ARCH_linux_ppc
  # include "orderAccess_linux_ppc.inline.hpp"
@@ -464,9 +462,9 @@
  #ifdef TARGET_OS_ARCH_bsd_x86
  # include "orderAccess_bsd_x86.inline.hpp"
  #endif
-diff -r 4646292f1616 src/share/vm/runtime/mutexLocker.hpp
---- a/src/share/vm/runtime/mutexLocker.hpp	Tue Jul 09 12:06:30 2013 +0200
-+++ b/src/share/vm/runtime/mutexLocker.hpp	Tue Jul 09 12:06:59 2013 +0200
+diff -r 01855841db6c src/share/vm/runtime/mutexLocker.hpp
+--- a/src/share/vm/runtime/mutexLocker.hpp	Fri Jul 26 00:59:18 2013 +0200
++++ b/src/share/vm/runtime/mutexLocker.hpp	Wed Aug 21 10:30:58 2013 +0200
 @@ -36,6 +36,9 @@
  #ifdef TARGET_OS_FAMILY_windows
  # include "os_windows.inline.hpp"
@@ -477,20 +475,21 @@
  #ifdef TARGET_OS_FAMILY_bsd
  # include "os_bsd.inline.hpp"
  #endif
-diff -r 4646292f1616 src/share/vm/runtime/os.hpp
---- a/src/share/vm/runtime/os.hpp	Tue Jul 09 12:06:30 2013 +0200
-+++ b/src/share/vm/runtime/os.hpp	Tue Jul 09 12:06:59 2013 +0200
-@@ -39,6 +39,9 @@
+diff -r 01855841db6c src/share/vm/runtime/os.hpp
+--- a/src/share/vm/runtime/os.hpp	Fri Jul 26 00:59:18 2013 +0200
++++ b/src/share/vm/runtime/os.hpp	Wed Aug 21 10:30:58 2013 +0200
+@@ -41,6 +41,10 @@
  #ifdef TARGET_OS_FAMILY_windows
  # include "jvm_windows.h"
  #endif
 +#ifdef TARGET_OS_FAMILY_aix
 +# include "jvm_aix.h"
++# include <setjmp.h>
 +#endif
  #ifdef TARGET_OS_FAMILY_bsd
  # include "jvm_bsd.h"
- #endif
-@@ -743,6 +746,10 @@
+ # include <setjmp.h>
+@@ -750,6 +754,10 @@
  #ifdef TARGET_OS_FAMILY_windows
  # include "os_windows.hpp"
  #endif
@@ -501,7 +500,7 @@
  #ifdef TARGET_OS_FAMILY_bsd
  # include "os_posix.hpp"
  # include "os_bsd.hpp"
-@@ -771,6 +778,9 @@
+@@ -778,6 +786,9 @@
  #ifdef TARGET_OS_ARCH_linux_ppc
  # include "os_linux_ppc.hpp"
  #endif
@@ -511,9 +510,9 @@
  #ifdef TARGET_OS_ARCH_bsd_x86
  # include "os_bsd_x86.hpp"
  #endif
-diff -r 4646292f1616 src/share/vm/runtime/osThread.hpp
---- a/src/share/vm/runtime/osThread.hpp	Tue Jul 09 12:06:30 2013 +0200
-+++ b/src/share/vm/runtime/osThread.hpp	Tue Jul 09 12:06:59 2013 +0200
+diff -r 01855841db6c src/share/vm/runtime/osThread.hpp
+--- a/src/share/vm/runtime/osThread.hpp	Fri Jul 26 00:59:18 2013 +0200
++++ b/src/share/vm/runtime/osThread.hpp	Wed Aug 21 10:30:58 2013 +0200
 @@ -105,6 +105,9 @@
  #ifdef TARGET_OS_FAMILY_windows
  # include "osThread_windows.hpp"
@@ -524,9 +523,9 @@
  #ifdef TARGET_OS_FAMILY_bsd
  # include "osThread_bsd.hpp"
  #endif
-diff -r 4646292f1616 src/share/vm/runtime/sharedRuntimeTrans.cpp
---- a/src/share/vm/runtime/sharedRuntimeTrans.cpp	Tue Jul 09 12:06:30 2013 +0200
-+++ b/src/share/vm/runtime/sharedRuntimeTrans.cpp	Tue Jul 09 12:06:59 2013 +0200
+diff -r 01855841db6c src/share/vm/runtime/sharedRuntimeTrans.cpp
+--- a/src/share/vm/runtime/sharedRuntimeTrans.cpp	Fri Jul 26 00:59:18 2013 +0200
++++ b/src/share/vm/runtime/sharedRuntimeTrans.cpp	Wed Aug 21 10:30:58 2013 +0200
 @@ -56,10 +56,12 @@
  # define __LO(x) *(1+(int*)&x)
  #endif
@@ -556,27 +555,35 @@
  
  /* __ieee754_log(x)
   * Return the logrithm of x
-diff -r 4646292f1616 src/share/vm/runtime/sharedRuntimeTrig.cpp
---- a/src/share/vm/runtime/sharedRuntimeTrig.cpp	Tue Jul 09 12:06:30 2013 +0200
-+++ b/src/share/vm/runtime/sharedRuntimeTrig.cpp	Tue Jul 09 12:06:59 2013 +0200
-@@ -656,6 +656,13 @@
- C5  =  2.08757232129817482790e-09, /* 0x3E21EE9E, 0xBDB4B1C4 */
- C6  = -1.13596475577881948265e-11; /* 0xBDA8FAE9, 0xBE8838D4 */
+diff -r 01855841db6c src/share/vm/runtime/sharedRuntimeTrig.cpp
+--- a/src/share/vm/runtime/sharedRuntimeTrig.cpp	Fri Jul 26 00:59:18 2013 +0200
++++ b/src/share/vm/runtime/sharedRuntimeTrig.cpp	Wed Aug 21 10:30:58 2013 +0200
+@@ -658,7 +658,7 @@
  
-+// Aix defines hz to be 100, see sys/m_param.h.
-+#ifdef AIX
-+#ifdef hz
-+#undef hz
-+#endif
-+#endif
-+
  static double __kernel_cos(double x, double y)
  {
-   double a,hz,z,r,qx;
-diff -r 4646292f1616 src/share/vm/runtime/thread.hpp
---- a/src/share/vm/runtime/thread.hpp	Tue Jul 09 12:06:30 2013 +0200
-+++ b/src/share/vm/runtime/thread.hpp	Tue Jul 09 12:06:59 2013 +0200
-@@ -1711,6 +1711,9 @@
+-  double a,hz,z,r,qx;
++  double a,h,z,r,qx;
+   int ix;
+   ix = __HI(x)&0x7fffffff;      /* ix = |x|'s high word*/
+   if(ix<0x3e400000) {                   /* if x < 2**27 */
+@@ -675,9 +675,9 @@
+       __HI(qx) = ix-0x00200000; /* x/4 */
+       __LO(qx) = 0;
+     }
+-    hz = 0.5*z-qx;
+-    a  = one-qx;
+-    return a - (hz - (z*r-x*y));
++    h = 0.5*z-qx;
++    a = one-qx;
++    return a - (h - (z*r-x*y));
+   }
+ }
+ 
+diff -r 01855841db6c src/share/vm/runtime/thread.hpp
+--- a/src/share/vm/runtime/thread.hpp	Fri Jul 26 00:59:18 2013 +0200
++++ b/src/share/vm/runtime/thread.hpp	Wed Aug 21 10:30:58 2013 +0200
+@@ -1730,6 +1730,9 @@
  #ifdef TARGET_OS_ARCH_linux_ppc
  # include "thread_linux_ppc.hpp"
  #endif
@@ -586,9 +593,9 @@
  #ifdef TARGET_OS_ARCH_bsd_x86
  # include "thread_bsd_x86.hpp"
  #endif
-diff -r 4646292f1616 src/share/vm/runtime/thread.inline.hpp
---- a/src/share/vm/runtime/thread.inline.hpp	Tue Jul 09 12:06:30 2013 +0200
-+++ b/src/share/vm/runtime/thread.inline.hpp	Tue Jul 09 12:06:59 2013 +0200
+diff -r 01855841db6c src/share/vm/runtime/thread.inline.hpp
+--- a/src/share/vm/runtime/thread.inline.hpp	Fri Jul 26 00:59:18 2013 +0200
++++ b/src/share/vm/runtime/thread.inline.hpp	Wed Aug 21 10:30:58 2013 +0200
 @@ -37,6 +37,9 @@
  #ifdef TARGET_OS_FAMILY_windows
  # include "thread_windows.inline.hpp"
@@ -599,9 +606,9 @@
  #ifdef TARGET_OS_FAMILY_bsd
  # include "thread_bsd.inline.hpp"
  #endif
-diff -r 4646292f1616 src/share/vm/runtime/threadLocalStorage.hpp
---- a/src/share/vm/runtime/threadLocalStorage.hpp	Tue Jul 09 12:06:30 2013 +0200
-+++ b/src/share/vm/runtime/threadLocalStorage.hpp	Tue Jul 09 12:06:59 2013 +0200
+diff -r 01855841db6c src/share/vm/runtime/threadLocalStorage.hpp
+--- a/src/share/vm/runtime/threadLocalStorage.hpp	Fri Jul 26 00:59:18 2013 +0200
++++ b/src/share/vm/runtime/threadLocalStorage.hpp	Wed Aug 21 10:30:58 2013 +0200
 @@ -68,6 +68,9 @@
  #ifdef TARGET_OS_ARCH_linux_ppc
  # include "threadLS_linux_ppc.hpp"
@@ -612,9 +619,9 @@
  #ifdef TARGET_OS_ARCH_bsd_x86
  # include "threadLS_bsd_x86.hpp"
  #endif
-diff -r 4646292f1616 src/share/vm/runtime/timer.cpp
---- a/src/share/vm/runtime/timer.cpp	Tue Jul 09 12:06:30 2013 +0200
-+++ b/src/share/vm/runtime/timer.cpp	Tue Jul 09 12:06:59 2013 +0200
+diff -r 01855841db6c src/share/vm/runtime/timer.cpp
+--- a/src/share/vm/runtime/timer.cpp	Fri Jul 26 00:59:18 2013 +0200
++++ b/src/share/vm/runtime/timer.cpp	Wed Aug 21 10:30:58 2013 +0200
 @@ -35,6 +35,9 @@
  #ifdef TARGET_OS_FAMILY_windows
  # include "os_windows.inline.hpp"
@@ -625,9 +632,9 @@
  #ifdef TARGET_OS_FAMILY_bsd
  # include "os_bsd.inline.hpp"
  #endif
-diff -r 4646292f1616 src/share/vm/runtime/virtualspace.cpp
---- a/src/share/vm/runtime/virtualspace.cpp	Tue Jul 09 12:06:30 2013 +0200
-+++ b/src/share/vm/runtime/virtualspace.cpp	Tue Jul 09 12:06:59 2013 +0200
+diff -r 01855841db6c src/share/vm/runtime/virtualspace.cpp
+--- a/src/share/vm/runtime/virtualspace.cpp	Fri Jul 26 00:59:18 2013 +0200
++++ b/src/share/vm/runtime/virtualspace.cpp	Wed Aug 21 10:30:58 2013 +0200
 @@ -36,6 +36,9 @@
  #ifdef TARGET_OS_FAMILY_windows
  # include "os_windows.inline.hpp"
@@ -638,9 +645,9 @@
  #ifdef TARGET_OS_FAMILY_bsd
  # include "os_bsd.inline.hpp"
  #endif
-diff -r 4646292f1616 src/share/vm/runtime/vmStructs.cpp
---- a/src/share/vm/runtime/vmStructs.cpp	Tue Jul 09 12:06:30 2013 +0200
-+++ b/src/share/vm/runtime/vmStructs.cpp	Tue Jul 09 12:06:59 2013 +0200
+diff -r 01855841db6c src/share/vm/runtime/vmStructs.cpp
+--- a/src/share/vm/runtime/vmStructs.cpp	Fri Jul 26 00:59:18 2013 +0200
++++ b/src/share/vm/runtime/vmStructs.cpp	Wed Aug 21 10:30:58 2013 +0200
 @@ -143,6 +143,9 @@
  #ifdef TARGET_OS_ARCH_linux_ppc
  # include "vmStructs_linux_ppc.hpp"
@@ -651,9 +658,9 @@
  #ifdef TARGET_OS_ARCH_bsd_x86
  # include "vmStructs_bsd_x86.hpp"
  #endif
-diff -r 4646292f1616 src/share/vm/runtime/vm_version.cpp
---- a/src/share/vm/runtime/vm_version.cpp	Tue Jul 09 12:06:30 2013 +0200
-+++ b/src/share/vm/runtime/vm_version.cpp	Tue Jul 09 12:06:59 2013 +0200
+diff -r 01855841db6c src/share/vm/runtime/vm_version.cpp
+--- a/src/share/vm/runtime/vm_version.cpp	Fri Jul 26 00:59:18 2013 +0200
++++ b/src/share/vm/runtime/vm_version.cpp	Wed Aug 21 10:30:58 2013 +0200
 @@ -177,6 +177,7 @@
  #define OS       LINUX_ONLY("linux")             \
                   WINDOWS_ONLY("windows")         \
@@ -672,9 +679,9 @@
      #else
        #define HOTSPOT_BUILD_COMPILER "unknown compiler"
      #endif
-diff -r 4646292f1616 src/share/vm/utilities/accessFlags.cpp
---- a/src/share/vm/utilities/accessFlags.cpp	Tue Jul 09 12:06:30 2013 +0200
-+++ b/src/share/vm/utilities/accessFlags.cpp	Tue Jul 09 12:06:59 2013 +0200
+diff -r 01855841db6c src/share/vm/utilities/accessFlags.cpp
+--- a/src/share/vm/utilities/accessFlags.cpp	Fri Jul 26 00:59:18 2013 +0200
++++ b/src/share/vm/utilities/accessFlags.cpp	Wed Aug 21 10:30:58 2013 +0200
 @@ -34,6 +34,9 @@
  #ifdef TARGET_OS_FAMILY_windows
  # include "os_windows.inline.hpp"
@@ -685,9 +692,9 @@
  #ifdef TARGET_OS_FAMILY_bsd
  # include "os_bsd.inline.hpp"
  #endif
-diff -r 4646292f1616 src/share/vm/utilities/bitMap.cpp
---- a/src/share/vm/utilities/bitMap.cpp	Tue Jul 09 12:06:30 2013 +0200
-+++ b/src/share/vm/utilities/bitMap.cpp	Tue Jul 09 12:06:59 2013 +0200
+diff -r 01855841db6c src/share/vm/utilities/bitMap.cpp
+--- a/src/share/vm/utilities/bitMap.cpp	Fri Jul 26 00:59:18 2013 +0200
++++ b/src/share/vm/utilities/bitMap.cpp	Wed Aug 21 10:30:58 2013 +0200
 @@ -35,6 +35,9 @@
  #ifdef TARGET_OS_FAMILY_windows
  # include "os_windows.inline.hpp"
@@ -698,9 +705,9 @@
  #ifdef TARGET_OS_FAMILY_bsd
  # include "os_bsd.inline.hpp"
  #endif
-diff -r 4646292f1616 src/share/vm/utilities/debug.hpp
---- a/src/share/vm/utilities/debug.hpp	Tue Jul 09 12:06:30 2013 +0200
-+++ b/src/share/vm/utilities/debug.hpp	Tue Jul 09 12:06:59 2013 +0200
+diff -r 01855841db6c src/share/vm/utilities/debug.hpp
+--- a/src/share/vm/utilities/debug.hpp	Fri Jul 26 00:59:18 2013 +0200
++++ b/src/share/vm/utilities/debug.hpp	Wed Aug 21 10:30:58 2013 +0200
 @@ -25,8 +25,8 @@
  #ifndef SHARE_VM_UTILITIES_DEBUG_HPP
  #define SHARE_VM_UTILITIES_DEBUG_HPP
@@ -711,9 +718,9 @@
  
  #include <stdarg.h>
  
-diff -r 4646292f1616 src/share/vm/utilities/decoder.cpp
---- a/src/share/vm/utilities/decoder.cpp	Tue Jul 09 12:06:30 2013 +0200
-+++ b/src/share/vm/utilities/decoder.cpp	Tue Jul 09 12:06:59 2013 +0200
+diff -r 01855841db6c src/share/vm/utilities/decoder.cpp
+--- a/src/share/vm/utilities/decoder.cpp	Fri Jul 26 00:59:18 2013 +0200
++++ b/src/share/vm/utilities/decoder.cpp	Wed Aug 21 10:30:58 2013 +0200
 @@ -33,6 +33,8 @@
    #include "decoder_windows.hpp"
  #elif defined(__APPLE__)
@@ -732,9 +739,9 @@
  #else
    decoder = new (std::nothrow)ElfDecoder();
  #endif
-diff -r 4646292f1616 src/share/vm/utilities/globalDefinitions.hpp
---- a/src/share/vm/utilities/globalDefinitions.hpp	Tue Jul 09 12:06:30 2013 +0200
-+++ b/src/share/vm/utilities/globalDefinitions.hpp	Tue Jul 09 12:06:59 2013 +0200
+diff -r 01855841db6c src/share/vm/utilities/globalDefinitions.hpp
+--- a/src/share/vm/utilities/globalDefinitions.hpp	Fri Jul 26 00:59:18 2013 +0200
++++ b/src/share/vm/utilities/globalDefinitions.hpp	Wed Aug 21 10:30:58 2013 +0200
 @@ -38,6 +38,9 @@
  #ifdef TARGET_COMPILER_sparcWorks
  # include "utilities/globalDefinitions_sparcWorks.hpp"
@@ -745,9 +752,9 @@
  
  #include "utilities/macros.hpp"
  
-diff -r 4646292f1616 src/share/vm/utilities/histogram.hpp
---- a/src/share/vm/utilities/histogram.hpp	Tue Jul 09 12:06:30 2013 +0200
-+++ b/src/share/vm/utilities/histogram.hpp	Tue Jul 09 12:06:59 2013 +0200
+diff -r 01855841db6c src/share/vm/utilities/histogram.hpp
+--- a/src/share/vm/utilities/histogram.hpp	Fri Jul 26 00:59:18 2013 +0200
++++ b/src/share/vm/utilities/histogram.hpp	Wed Aug 21 10:30:58 2013 +0200
 @@ -37,6 +37,9 @@
  #ifdef TARGET_OS_FAMILY_windows
  # include "os_windows.inline.hpp"
@@ -758,9 +765,9 @@
  #ifdef TARGET_OS_FAMILY_bsd
  # include "os_bsd.inline.hpp"
  #endif
-diff -r 4646292f1616 src/share/vm/utilities/macros.hpp
---- a/src/share/vm/utilities/macros.hpp	Tue Jul 09 12:06:30 2013 +0200
-+++ b/src/share/vm/utilities/macros.hpp	Tue Jul 09 12:06:59 2013 +0200
+diff -r 01855841db6c src/share/vm/utilities/macros.hpp
+--- a/src/share/vm/utilities/macros.hpp	Fri Jul 26 00:59:18 2013 +0200
++++ b/src/share/vm/utilities/macros.hpp	Wed Aug 21 10:30:58 2013 +0200
 @@ -254,6 +254,14 @@
  #define NOT_LINUX(code) code
  #endif
@@ -776,9 +783,9 @@
  #ifdef SOLARIS
  #define SOLARIS_ONLY(code) code
  #define NOT_SOLARIS(code)
-diff -r 4646292f1616 src/share/vm/utilities/ostream.cpp
---- a/src/share/vm/utilities/ostream.cpp	Tue Jul 09 12:06:30 2013 +0200
-+++ b/src/share/vm/utilities/ostream.cpp	Tue Jul 09 12:06:59 2013 +0200
+diff -r 01855841db6c src/share/vm/utilities/ostream.cpp
+--- a/src/share/vm/utilities/ostream.cpp	Fri Jul 26 00:59:18 2013 +0200
++++ b/src/share/vm/utilities/ostream.cpp	Wed Aug 21 10:30:58 2013 +0200
 @@ -39,6 +39,9 @@
  #ifdef TARGET_OS_FAMILY_windows
  # include "os_windows.inline.hpp"
@@ -789,7 +796,7 @@
  #ifdef TARGET_OS_FAMILY_bsd
  # include "os_bsd.inline.hpp"
  #endif
-@@ -1037,7 +1040,7 @@
+@@ -1040,7 +1043,7 @@
  
  #ifndef PRODUCT
  
@@ -798,9 +805,9 @@
  #include <sys/types.h>
  #include <sys/socket.h>
  #include <netinet/in.h>
-diff -r 4646292f1616 src/share/vm/utilities/resourceHash.hpp
---- a/src/share/vm/utilities/resourceHash.hpp	Tue Jul 09 12:06:30 2013 +0200
-+++ b/src/share/vm/utilities/resourceHash.hpp	Tue Jul 09 12:06:59 2013 +0200
+diff -r 01855841db6c src/share/vm/utilities/resourceHash.hpp
+--- a/src/share/vm/utilities/resourceHash.hpp	Fri Jul 26 00:59:18 2013 +0200
++++ b/src/share/vm/utilities/resourceHash.hpp	Wed Aug 21 10:30:58 2013 +0200
 @@ -44,8 +44,12 @@
  
  template<
@@ -816,9 +823,9 @@
      unsigned SIZE = 256
      >
  class ResourceHashtable : public ResourceObj {
-diff -r 4646292f1616 src/share/vm/utilities/taskqueue.hpp
---- a/src/share/vm/utilities/taskqueue.hpp	Tue Jul 09 12:06:30 2013 +0200
-+++ b/src/share/vm/utilities/taskqueue.hpp	Tue Jul 09 12:06:59 2013 +0200
+diff -r 01855841db6c src/share/vm/utilities/taskqueue.hpp
+--- a/src/share/vm/utilities/taskqueue.hpp	Fri Jul 26 00:59:18 2013 +0200
++++ b/src/share/vm/utilities/taskqueue.hpp	Wed Aug 21 10:30:58 2013 +0200
 @@ -53,6 +53,9 @@
  #ifdef TARGET_OS_ARCH_linux_ppc
  # include "orderAccess_linux_ppc.inline.hpp"
--- a/ppc_patches/0014_aix_make_changes.patch	Wed Aug 28 16:09:50 2013 +0000
+++ b/ppc_patches/0014_aix_make_changes.patch	Fri Sep 06 11:29:41 2013 +0200
@@ -1,7 +1,6 @@
 # HG changeset patch
 # Parent bc2bd92998c3a6a01d1e6833ae70a286df521785
-make: Implement aix ppc64 build.
-
+8023034: PPC64 (part 14): Implement AIX/PPC64 support in HotSpot makefiles
 diff -r bc2bd92998c3 make/aix/Makefile
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
 +++ b/make/aix/Makefile	Tue Jul 23 22:13:05 2013 +0200
@@ -413,7 +412,7 @@
 @@ -0,0 +1,99 @@
 +#! /bin/sh
 +#
-+# Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
++# Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
 +# Copyright 2012, 2013 SAP AG. All rights reserved.
 +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 +#
@@ -516,7 +515,7 @@
 @@ -0,0 +1,87 @@
 +#! /bin/sh
 +#
-+# Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
++# Copyright (c) 1999, 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
@@ -606,7 +605,7 @@
 +++ b/make/aix/makefiles/adlc.make	Tue Jul 23 22:13:05 2013 +0200
 @@ -0,0 +1,233 @@
 +#
-+# Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
++# Copyright (c) 1999, 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
@@ -1233,7 +1232,7 @@
 +++ b/make/aix/makefiles/compiler2.make	Tue Jul 23 22:13:05 2013 +0200
 @@ -0,0 +1,32 @@
 +#
-+# Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
++# Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
 +# Copyright 2012, 2013 SAP AG. All rights reserved.
 +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 +#
@@ -1269,7 +1268,7 @@
 +++ b/make/aix/makefiles/core.make	Tue Jul 23 22:13:05 2013 +0200
 @@ -0,0 +1,33 @@
 +#
-+# Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
++# Copyright (c) 1999, 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
@@ -1586,7 +1585,7 @@
 +++ b/make/aix/makefiles/dtrace.make	Tue Jul 23 22:13:05 2013 +0200
 @@ -0,0 +1,27 @@
 +#
-+# Copyright (c) 2005, 2008, Oracle and/or its affiliates. All rights reserved.
++# Copyright (c) 2005, 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
@@ -1617,7 +1616,7 @@
 +++ b/make/aix/makefiles/fastdebug.make	Tue Jul 23 22:13:05 2013 +0200
 @@ -0,0 +1,73 @@
 +#
-+# Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
++# Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
 +# Copyright 2012, 2013 SAP AG. All rights reserved.
 +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 +#
@@ -1694,7 +1693,7 @@
 +++ b/make/aix/makefiles/jsig.make	Tue Jul 23 22:13:05 2013 +0200
 @@ -0,0 +1,87 @@
 +#
-+# Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
++# Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
 +# Copyright 2012, 2013 SAP AG. All rights reserved.
 +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 +#
@@ -1785,7 +1784,7 @@
 +++ b/make/aix/makefiles/jvmti.make	Tue Jul 23 22:13:05 2013 +0200
 @@ -0,0 +1,118 @@
 +#
-+# Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
++# Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
 +# Copyright 2012, 2013 SAP AG. All rights reserved.
 +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 +#
@@ -2185,7 +2184,7 @@
 +++ b/make/aix/makefiles/mapfile-vers-jsig	Tue Jul 23 22:13:05 2013 +0200
 @@ -0,0 +1,38 @@
 +#
-+# Copyright (c) 2005, 2008, Oracle and/or its affiliates. All rights reserved.
++# Copyright (c) 2005, 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
@@ -2498,7 +2497,7 @@
 +++ b/make/aix/makefiles/ppc64.make	Tue Jul 23 22:13:05 2013 +0200
 @@ -0,0 +1,94 @@
 +#
-+# Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.
++# Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
 +# Copyright 2012, 2013 SAP AG. All rights reserved.
 +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 +#
@@ -2596,7 +2595,7 @@
 +++ b/make/aix/makefiles/product.make	Tue Jul 23 22:13:05 2013 +0200
 @@ -0,0 +1,58 @@
 +#
-+# Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
++# Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
 +# Copyright 2012, 2013 SAP AG. All rights reserved.
 +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 +#
@@ -2658,7 +2657,7 @@
 +++ b/make/aix/makefiles/rules.make	Tue Jul 23 22:13:05 2013 +0200
 @@ -0,0 +1,203 @@
 +#
-+# Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
++# Copyright (c) 2003, 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
@@ -2865,7 +2864,7 @@
 +++ b/make/aix/makefiles/sa.make	Tue Jul 23 22:13:05 2013 +0200
 @@ -0,0 +1,116 @@
 +#
-+# Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
++# Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
 +# Copyright 2012, 2013 SAP AG. All rights reserved.
 +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 +#
@@ -2985,7 +2984,7 @@
 +++ b/make/aix/makefiles/saproc.make	Tue Jul 23 22:13:05 2013 +0200
 @@ -0,0 +1,117 @@
 +#
-+# Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
++# Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
 +# Copyright 2012, 2013 SAP AG. All rights reserved.
 +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 +#
@@ -3759,7 +3758,7 @@
 +++ b/make/aix/makefiles/xlc.make	Tue Jul 23 22:13:05 2013 +0200
 @@ -0,0 +1,159 @@
 +#
-+# Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
++# Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
 +# Copyright (c) 2012 SAP. All rights reserved.
 +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 +#
--- a/ppc_patches/0015_aix_ppc_files.patch	Wed Aug 28 16:09:50 2013 +0000
+++ b/ppc_patches/0015_aix_ppc_files.patch	Fri Sep 06 11:29:41 2013 +0200
@@ -1,14 +1,11 @@
 # HG changeset patch
-# Parent b6c4ef4134dfc60571d11c1cf077263e36d8099e
-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.
-
-diff -r b6c4ef4134df src/os/aix/vm/attachListener_aix.cpp
+# Parent 870a22e75241538eaf6e06423c2f79312d1d71e3
+8023038: PPC64 (part 15): Platform files for AIX/PPC64 support
+Summary: With this change HotSpot compiles as debugcore on aix_ppc64 and runs purely interpreted.
+diff -r 870a22e75241 src/os/aix/vm/attachListener_aix.cpp
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/src/os/aix/vm/attachListener_aix.cpp	Wed Jul 03 13:00:32 2013 +0200
-@@ -0,0 +1,551 @@
++++ b/src/os/aix/vm/attachListener_aix.cpp	Thu Aug 15 12:10:12 2013 +0200
+@@ -0,0 +1,575 @@
 +/*
 + * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
 + * Copyright 2012, 2013 SAP AG. All rights reserved.
@@ -485,6 +482,30 @@
 +  return op;
 +}
 +
++
++// Performs initialization at vm startup
++// For Linux we remove any stale .java_pid file which could cause
++// an attaching process to think we are ready to receive on the
++// domain socket before we are properly initialized
++
++void AttachListener::vm_start() {
++  char fn[UNIX_PATH_MAX];
++  struct stat64 st;
++  int ret;
++
++  int n = snprintf(fn, UNIX_PATH_MAX, "%s/.java_pid%d",
++           os::get_temp_directory(), os::current_process_id());
++  assert(n < (int)UNIX_PATH_MAX, "java_pid file name buffer overflow");
++
++  RESTARTABLE(::stat64(fn, &st), ret);
++  if (ret == 0) {
++    ret = ::unlink(fn);
++    if (ret == -1) {
++      debug_only(warning("failed to remove stale attach pid file at %s", fn));
++    }
++  }
++}
++
 +int AttachListener::pd_init() {
 +  JavaThread* thread = JavaThread::current();
 +  ThreadBlockInVM tbivm(thread);
@@ -560,9 +581,9 @@
 +  // Cleanup server socket to detach clients.
 +  listener_cleanup();
 +}
-diff -r b6c4ef4134df src/os/aix/vm/c2_globals_aix.hpp
+diff -r 870a22e75241 src/os/aix/vm/c2_globals_aix.hpp
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/src/os/aix/vm/c2_globals_aix.hpp	Wed Jul 03 13:00:32 2013 +0200
++++ b/src/os/aix/vm/c2_globals_aix.hpp	Thu Aug 15 12:10:12 2013 +0200
 @@ -0,0 +1,37 @@
 +/*
 + * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -601,9 +622,9 @@
 +//
 +
 +#endif // OS_AIX_VM_C2_GLOBALS_AIX_HPP
-diff -r b6c4ef4134df src/os/aix/vm/decoder_aix.hpp
+diff -r 870a22e75241 src/os/aix/vm/decoder_aix.hpp
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/src/os/aix/vm/decoder_aix.hpp	Wed Jul 03 13:00:32 2013 +0200
++++ b/src/os/aix/vm/decoder_aix.hpp	Thu Aug 15 12:10:12 2013 +0200
 @@ -0,0 +1,48 @@
 +/*
 + * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -653,9 +674,9 @@
 +    return false;
 +  }
 +};
-diff -r b6c4ef4134df src/os/aix/vm/globals_aix.hpp
+diff -r 870a22e75241 src/os/aix/vm/globals_aix.hpp
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/src/os/aix/vm/globals_aix.hpp	Wed Jul 03 13:00:32 2013 +0200
++++ b/src/os/aix/vm/globals_aix.hpp	Thu Aug 15 12:10:12 2013 +0200
 @@ -0,0 +1,63 @@
 +/*
 + * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -720,9 +741,9 @@
 +define_pd_global(bool, UseThreadPriorities, true) ;
 +
 +#endif // OS_AIX_VM_GLOBALS_AIX_HPP
-diff -r b6c4ef4134df src/os/aix/vm/interfaceSupport_aix.hpp
+diff -r 870a22e75241 src/os/aix/vm/interfaceSupport_aix.hpp
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/src/os/aix/vm/interfaceSupport_aix.hpp	Wed Jul 03 13:00:32 2013 +0200
++++ b/src/os/aix/vm/interfaceSupport_aix.hpp	Thu Aug 15 12:10:12 2013 +0200
 @@ -0,0 +1,35 @@
 +/*
 + * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -759,9 +780,9 @@
 +}
 +
 +#endif // OS_LINUX_VM_INTERFACESUPPORT_LINUX_HPP
-diff -r b6c4ef4134df src/os/aix/vm/jsig.c
+diff -r 870a22e75241 src/os/aix/vm/jsig.c
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/src/os/aix/vm/jsig.c	Wed Jul 03 13:00:32 2013 +0200
++++ b/src/os/aix/vm/jsig.c	Thu Aug 15 12:10:12 2013 +0200
 @@ -0,0 +1,233 @@
 +/*
 + * Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -996,9 +1017,9 @@
 +  }
 +  return NULL;
 +}
-diff -r b6c4ef4134df src/os/aix/vm/jvm_aix.cpp
+diff -r 870a22e75241 src/os/aix/vm/jvm_aix.cpp
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/src/os/aix/vm/jvm_aix.cpp	Wed Jul 03 13:00:32 2013 +0200
++++ b/src/os/aix/vm/jvm_aix.cpp	Thu Aug 15 12:10:12 2013 +0200
 @@ -0,0 +1,201 @@
 +/*
 + * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -1201,9 +1222,9 @@
 +  }
 +  return false;
 +}
-diff -r b6c4ef4134df src/os/aix/vm/jvm_aix.h
+diff -r 870a22e75241 src/os/aix/vm/jvm_aix.h
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/src/os/aix/vm/jvm_aix.h	Wed Jul 03 13:00:32 2013 +0200
++++ b/src/os/aix/vm/jvm_aix.h	Thu Aug 15 12:10:12 2013 +0200
 @@ -0,0 +1,123 @@
 +/*
 + * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -1328,11 +1349,12 @@
 +#endif /* JVM_MD_H */
 +
 +#endif // OS_AIX_VM_JVM_AIX_H
-diff -r b6c4ef4134df src/os/aix/vm/libperfstat_aix.cpp
+diff -r 870a22e75241 src/os/aix/vm/libperfstat_aix.cpp
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/src/os/aix/vm/libperfstat_aix.cpp	Wed Jul 03 13:00:32 2013 +0200
-@@ -0,0 +1,124 @@
++++ b/src/os/aix/vm/libperfstat_aix.cpp	Thu Aug 15 12:10:12 2013 +0200
+@@ -0,0 +1,125 @@
 +/*
++ * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
 + * Copyright 2012, 2013 SAP AG. All rights reserved.
 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 + *
@@ -1456,9 +1478,9 @@
 +  assert(g_fun_perfstat_reset, "");
 +  g_fun_perfstat_reset();
 +}
-diff -r b6c4ef4134df src/os/aix/vm/libperfstat_aix.hpp
+diff -r 870a22e75241 src/os/aix/vm/libperfstat_aix.hpp
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/src/os/aix/vm/libperfstat_aix.hpp	Wed Jul 03 13:00:32 2013 +0200
++++ b/src/os/aix/vm/libperfstat_aix.hpp	Thu Aug 15 12:10:12 2013 +0200
 @@ -0,0 +1,59 @@
 +/*
 + * Copyright 2012, 2013 SAP AG. All rights reserved.
@@ -1519,9 +1541,9 @@
 +};
 +
 +#endif // OS_AIX_VM_LIBPERFSTAT_AIX_HPP
-diff -r b6c4ef4134df src/os/aix/vm/loadlib_aix.cpp
+diff -r 870a22e75241 src/os/aix/vm/loadlib_aix.cpp
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/src/os/aix/vm/loadlib_aix.cpp	Wed Jul 03 13:00:32 2013 +0200
++++ b/src/os/aix/vm/loadlib_aix.cpp	Thu Aug 15 12:10:12 2013 +0200
 @@ -0,0 +1,185 @@
 +/*
 + * Copyright 2012, 2013 SAP AG. All rights reserved.
@@ -1708,9 +1730,9 @@
 +
 +}
 +
-diff -r b6c4ef4134df src/os/aix/vm/loadlib_aix.hpp
+diff -r 870a22e75241 src/os/aix/vm/loadlib_aix.hpp
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/src/os/aix/vm/loadlib_aix.hpp	Wed Jul 03 13:00:32 2013 +0200
++++ b/src/os/aix/vm/loadlib_aix.hpp	Thu Aug 15 12:10:12 2013 +0200
 @@ -0,0 +1,128 @@
 +/*
 + * Copyright 2012, 2013 SAP AG. All rights reserved.
@@ -1840,9 +1862,9 @@
 +
 +
 +#endif // OS_AIX_VM_LOADLIB_AIX_HPP
-diff -r b6c4ef4134df src/os/aix/vm/mutex_aix.inline.hpp
+diff -r 870a22e75241 src/os/aix/vm/mutex_aix.inline.hpp
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/src/os/aix/vm/mutex_aix.inline.hpp	Wed Jul 03 13:00:32 2013 +0200
++++ b/src/os/aix/vm/mutex_aix.inline.hpp	Thu Aug 15 12:10:12 2013 +0200
 @@ -0,0 +1,33 @@
 +/*
 + * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -1877,9 +1899,9 @@
 +#include "thread_aix.inline.hpp"
 +
 +#endif // OS_AIX_VM_MUTEX_AIX_INLINE_HPP
-diff -r b6c4ef4134df src/os/aix/vm/osThread_aix.cpp
+diff -r 870a22e75241 src/os/aix/vm/osThread_aix.cpp
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/src/os/aix/vm/osThread_aix.cpp	Wed Jul 03 13:00:32 2013 +0200
++++ b/src/os/aix/vm/osThread_aix.cpp	Thu Aug 15 12:10:12 2013 +0200
 @@ -0,0 +1,58 @@
 +/*
 + * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -1939,9 +1961,9 @@
 +void OSThread::pd_destroy() {
 +  delete _startThread_lock;
 +}
-diff -r b6c4ef4134df src/os/aix/vm/osThread_aix.hpp
+diff -r 870a22e75241 src/os/aix/vm/osThread_aix.hpp
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/src/os/aix/vm/osThread_aix.hpp	Wed Jul 03 13:00:32 2013 +0200
++++ b/src/os/aix/vm/osThread_aix.hpp	Thu Aug 15 12:10:12 2013 +0200
 @@ -0,0 +1,144 @@
 +/*
 + * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -2087,9 +2109,9 @@
 +  } _last_cpu_times;
 +
 +#endif // OS_AIX_VM_OSTHREAD_AIX_HPP
-diff -r b6c4ef4134df src/os/aix/vm/os_aix.cpp
+diff -r 870a22e75241 src/os/aix/vm/os_aix.cpp
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/src/os/aix/vm/os_aix.cpp	Wed Jul 03 13:00:32 2013 +0200
++++ b/src/os/aix/vm/os_aix.cpp	Thu Aug 15 12:10:12 2013 +0200
 @@ -0,0 +1,5120 @@
 +/*
 + * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -7211,9 +7233,9 @@
 +
 +  return strlen(buffer);
 +}
-diff -r b6c4ef4134df src/os/aix/vm/os_aix.hpp
+diff -r 870a22e75241 src/os/aix/vm/os_aix.hpp
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/src/os/aix/vm/os_aix.hpp	Wed Jul 03 13:00:32 2013 +0200
++++ b/src/os/aix/vm/os_aix.hpp	Thu Aug 15 12:10:12 2013 +0200
 @@ -0,0 +1,385 @@
 +/*
 + * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -7600,9 +7622,9 @@
 +};
 +
 +#endif // OS_AIX_VM_OS_AIX_HPP
-diff -r b6c4ef4134df src/os/aix/vm/os_aix.inline.hpp
+diff -r 870a22e75241 src/os/aix/vm/os_aix.inline.hpp
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/src/os/aix/vm/os_aix.inline.hpp	Wed Jul 03 13:00:32 2013 +0200
++++ b/src/os/aix/vm/os_aix.inline.hpp	Thu Aug 15 12:10:12 2013 +0200
 @@ -0,0 +1,286 @@
 +/*
 + * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -7890,9 +7912,9 @@
 +  return ::setsockopt(fd, level, optname, optval, optlen);
 +}
 +#endif // OS_AIX_VM_OS_AIX_INLINE_HPP
-diff -r b6c4ef4134df src/os/aix/vm/os_share_aix.hpp
+diff -r 870a22e75241 src/os/aix/vm/os_share_aix.hpp
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/src/os/aix/vm/os_share_aix.hpp	Wed Jul 03 13:00:32 2013 +0200
++++ b/src/os/aix/vm/os_share_aix.hpp	Thu Aug 15 12:10:12 2013 +0200
 @@ -0,0 +1,37 @@
 +/*
 + * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -7931,9 +7953,9 @@
 +#define PROCFILE_LENGTH 128
 +
 +#endif // OS_AIX_VM_OS_SHARE_AIX_HPP
-diff -r b6c4ef4134df src/os/aix/vm/perfMemory_aix.cpp
+diff -r 870a22e75241 src/os/aix/vm/perfMemory_aix.cpp
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/src/os/aix/vm/perfMemory_aix.cpp	Wed Jul 03 13:00:32 2013 +0200
++++ b/src/os/aix/vm/perfMemory_aix.cpp	Thu Aug 15 12:10:12 2013 +0200
 @@ -0,0 +1,1026 @@
 +/*
 + * Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -8961,9 +8983,9 @@
 +char* PerfMemory::backing_store_filename() {
 +  return backing_store_file_name;
 +}
-diff -r b6c4ef4134df src/os/aix/vm/porting_aix.cpp
+diff -r 870a22e75241 src/os/aix/vm/porting_aix.cpp
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/src/os/aix/vm/porting_aix.cpp	Wed Jul 03 13:00:32 2013 +0200
++++ b/src/os/aix/vm/porting_aix.cpp	Thu Aug 15 12:10:12 2013 +0200
 @@ -0,0 +1,367 @@
 +/*
 + * Copyright 2012, 2013 SAP AG. All rights reserved.
@@ -9332,9 +9354,9 @@
 +  return rc; // error: return 0 [sic]
 +
 +}
-diff -r b6c4ef4134df src/os/aix/vm/porting_aix.hpp
+diff -r 870a22e75241 src/os/aix/vm/porting_aix.hpp
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/src/os/aix/vm/porting_aix.hpp	Wed Jul 03 13:00:32 2013 +0200
++++ b/src/os/aix/vm/porting_aix.hpp	Thu Aug 15 12:10:12 2013 +0200
 @@ -0,0 +1,81 @@
 +/*
 + * Copyright 2012, 2013 SAP AG. All rights reserved.
@@ -9417,9 +9439,9 @@
 +      const struct tbtable** p_tb,     // [out] optional: ptr to traceback table to get further information
 +      char* p_errmsg, size_t errmsglen // [out] optional: user provided buffer for error messages
 +    );
-diff -r b6c4ef4134df src/os/aix/vm/threadCritical_aix.cpp
+diff -r 870a22e75241 src/os/aix/vm/threadCritical_aix.cpp
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/src/os/aix/vm/threadCritical_aix.cpp	Wed Jul 03 13:00:32 2013 +0200
++++ b/src/os/aix/vm/threadCritical_aix.cpp	Thu Aug 15 12:10:12 2013 +0200
 @@ -0,0 +1,68 @@
 +/*
 + * Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -9489,9 +9511,9 @@
 +    guarantee(ret == 0, "fatal error with pthread_mutex_unlock()");
 +  }
 +}
-diff -r b6c4ef4134df src/os/aix/vm/thread_aix.inline.hpp
+diff -r 870a22e75241 src/os/aix/vm/thread_aix.inline.hpp
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/src/os/aix/vm/thread_aix.inline.hpp	Wed Jul 03 13:00:32 2013 +0200
++++ b/src/os/aix/vm/thread_aix.inline.hpp	Thu Aug 15 12:10:12 2013 +0200
 @@ -0,0 +1,42 @@
 +/*
 + * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -9535,9 +9557,9 @@
 +inline void ThreadLocalStorage::pd_invalidate_all() {} // nothing to do
 +
 +#endif // OS_AIX_VM_THREAD_AIX_INLINE_HPP
-diff -r b6c4ef4134df src/os/aix/vm/vmError_aix.cpp
+diff -r 870a22e75241 src/os/aix/vm/vmError_aix.cpp
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/src/os/aix/vm/vmError_aix.cpp	Wed Jul 03 13:00:32 2013 +0200
++++ b/src/os/aix/vm/vmError_aix.cpp	Thu Aug 15 12:10:12 2013 +0200
 @@ -0,0 +1,122 @@
 +/*
 + * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -9661,9 +9683,9 @@
 +
 +  sigthreadmask(SIG_UNBLOCK, &newset, NULL);
 +}
-diff -r b6c4ef4134df src/os_cpu/aix_ppc/vm/atomic_aix_ppc.inline.hpp
+diff -r 870a22e75241 src/os_cpu/aix_ppc/vm/atomic_aix_ppc.inline.hpp
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/src/os_cpu/aix_ppc/vm/atomic_aix_ppc.inline.hpp	Wed Jul 03 13:00:32 2013 +0200
++++ b/src/os_cpu/aix_ppc/vm/atomic_aix_ppc.inline.hpp	Thu Aug 15 12:10:12 2013 +0200
 @@ -0,0 +1,401 @@
 +/*
 + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -10066,9 +10088,9 @@
 +#undef strasm_ppc_nobarrier_clobber_memory
 +
 +#endif // OS_CPU_AIX_OJDKPPC_VM_ATOMIC_AIX_PPC_INLINE_HPP
-diff -r b6c4ef4134df src/os_cpu/aix_ppc/vm/globals_aix_ppc.hpp
+diff -r 870a22e75241 src/os_cpu/aix_ppc/vm/globals_aix_ppc.hpp
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/src/os_cpu/aix_ppc/vm/globals_aix_ppc.hpp	Wed Jul 03 13:00:32 2013 +0200
++++ b/src/os_cpu/aix_ppc/vm/globals_aix_ppc.hpp	Thu Aug 15 12:10:12 2013 +0200
 @@ -0,0 +1,54 @@
 +/*
 + * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -10124,9 +10146,9 @@
 +define_pd_global(bool, UseVectoredExceptions,    false);
 +
 +#endif // OS_CPU_AIX_OJDKPPC_VM_GLOBALS_AIX_PPC_HPP
-diff -r b6c4ef4134df src/os_cpu/aix_ppc/vm/orderAccess_aix_ppc.inline.hpp
+diff -r 870a22e75241 src/os_cpu/aix_ppc/vm/orderAccess_aix_ppc.inline.hpp
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/src/os_cpu/aix_ppc/vm/orderAccess_aix_ppc.inline.hpp	Wed Jul 03 13:00:32 2013 +0200
++++ b/src/os_cpu/aix_ppc/vm/orderAccess_aix_ppc.inline.hpp	Thu Aug 15 12:10:12 2013 +0200
 @@ -0,0 +1,147 @@
 +/*
 + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -10275,9 +10297,9 @@
 +#undef inlasm_ppc_fence
 +
 +#endif // OS_CPU_AIX_OJDKPPC_VM_ORDERACCESS_AIX_PPC_INLINE_HPP
-diff -r b6c4ef4134df src/os_cpu/aix_ppc/vm/os_aix_ppc.cpp
+diff -r 870a22e75241 src/os_cpu/aix_ppc/vm/os_aix_ppc.cpp
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/src/os_cpu/aix_ppc/vm/os_aix_ppc.cpp	Wed Jul 03 13:00:32 2013 +0200
++++ b/src/os_cpu/aix_ppc/vm/os_aix_ppc.cpp	Thu Aug 15 12:10:12 2013 +0200
 @@ -0,0 +1,560 @@
 +/*
 + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -10839,9 +10861,9 @@
 +  assert(((intptr_t)os::current_stack_pointer() & (StackAlignmentInBytes-1)) == 0, "incorrect stack alignment");
 +}
 +#endif
-diff -r b6c4ef4134df src/os_cpu/aix_ppc/vm/os_aix_ppc.hpp
+diff -r 870a22e75241 src/os_cpu/aix_ppc/vm/os_aix_ppc.hpp
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/src/os_cpu/aix_ppc/vm/os_aix_ppc.hpp	Wed Jul 03 13:00:32 2013 +0200
++++ b/src/os_cpu/aix_ppc/vm/os_aix_ppc.hpp	Thu Aug 15 12:10:12 2013 +0200
 @@ -0,0 +1,35 @@
 +/*
 + * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -10878,9 +10900,9 @@
 +  static bool register_code_area(char *low, char *high) { return true; }
 +
 +#endif // OS_CPU_AIX_OJDKPPC_VM_OS_AIX_PPC_HPP
-diff -r b6c4ef4134df src/os_cpu/aix_ppc/vm/prefetch_aix_ppc.inline.hpp
+diff -r 870a22e75241 src/os_cpu/aix_ppc/vm/prefetch_aix_ppc.inline.hpp
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/src/os_cpu/aix_ppc/vm/prefetch_aix_ppc.inline.hpp	Wed Jul 03 13:00:32 2013 +0200
++++ b/src/os_cpu/aix_ppc/vm/prefetch_aix_ppc.inline.hpp	Thu Aug 15 12:10:12 2013 +0200
 @@ -0,0 +1,58 @@
 +/*
 + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -10940,9 +10962,9 @@
 +}
 +
 +#endif // OS_CPU_AIX_PPC_64_VM_PREFETCH_AIX_PPC_64_INLINE_HPP
-diff -r b6c4ef4134df src/os_cpu/aix_ppc/vm/threadLS_aix_ppc.cpp
+diff -r 870a22e75241 src/os_cpu/aix_ppc/vm/threadLS_aix_ppc.cpp
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/src/os_cpu/aix_ppc/vm/threadLS_aix_ppc.cpp	Wed Jul 03 13:00:32 2013 +0200
++++ b/src/os_cpu/aix_ppc/vm/threadLS_aix_ppc.cpp	Thu Aug 15 12:10:12 2013 +0200
 @@ -0,0 +1,40 @@
 +/*
 + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -10984,9 +11006,9 @@
 +void ThreadLocalStorage::pd_set_thread(Thread* thread) {
 +  os::thread_local_storage_at_put(ThreadLocalStorage::thread_index(), thread);
 +}
-diff -r b6c4ef4134df src/os_cpu/aix_ppc/vm/threadLS_aix_ppc.hpp
+diff -r 870a22e75241 src/os_cpu/aix_ppc/vm/threadLS_aix_ppc.hpp
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/src/os_cpu/aix_ppc/vm/threadLS_aix_ppc.hpp	Wed Jul 03 13:00:32 2013 +0200
++++ b/src/os_cpu/aix_ppc/vm/threadLS_aix_ppc.hpp	Thu Aug 15 12:10:12 2013 +0200
 @@ -0,0 +1,36 @@
 +/*
 + * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -11024,9 +11046,9 @@
 +  }
 +
 +#endif // OS_CPU_AIX_OJDKPPC_VM_THREADLS_AIX_PPC_HPP
-diff -r b6c4ef4134df src/os_cpu/aix_ppc/vm/thread_aix_ppc.cpp
+diff -r 870a22e75241 src/os_cpu/aix_ppc/vm/thread_aix_ppc.cpp
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/src/os_cpu/aix_ppc/vm/thread_aix_ppc.cpp	Wed Jul 03 13:00:32 2013 +0200
++++ b/src/os_cpu/aix_ppc/vm/thread_aix_ppc.cpp	Thu Aug 15 12:10:12 2013 +0200
 @@ -0,0 +1,36 @@
 +/*
 + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -11064,9 +11086,9 @@
 +}
 +
 +void JavaThread::cache_global_variables() { }
-diff -r b6c4ef4134df src/os_cpu/aix_ppc/vm/thread_aix_ppc.hpp
+diff -r 870a22e75241 src/os_cpu/aix_ppc/vm/thread_aix_ppc.hpp
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/src/os_cpu/aix_ppc/vm/thread_aix_ppc.hpp	Wed Jul 03 13:00:32 2013 +0200
++++ b/src/os_cpu/aix_ppc/vm/thread_aix_ppc.hpp	Thu Aug 15 12:10:12 2013 +0200
 @@ -0,0 +1,79 @@
 +/*
 + * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -11147,9 +11169,9 @@
 +  intptr_t* last_interpreter_fp() { return _last_interpreter_fp; }
 +
 +#endif // OS_CPU_AIX_OJDKPPC_VM_THREAD_AIX_PPC_HPP
-diff -r b6c4ef4134df src/os_cpu/aix_ppc/vm/vmStructs_aix_ppc.hpp
+diff -r 870a22e75241 src/os_cpu/aix_ppc/vm/vmStructs_aix_ppc.hpp
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/src/os_cpu/aix_ppc/vm/vmStructs_aix_ppc.hpp	Wed Jul 03 13:00:32 2013 +0200
++++ b/src/os_cpu/aix_ppc/vm/vmStructs_aix_ppc.hpp	Thu Aug 15 12:10:12 2013 +0200
 @@ -0,0 +1,55 @@
 +/*
 + * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -11206,9 +11228,9 @@
 +#define VM_LONG_CONSTANTS_OS_CPU(declare_constant, declare_preprocessor_constant, declare_c1_constant, declare_c2_constant, declare_c2_preprocessor_constant)
 +
 +#endif // OS_CPU_AIX_OJDKPPC_VM_VMSTRUCTS_AIX_PPC_HPP
-diff -r b6c4ef4134df src/share/vm/utilities/globalDefinitions_xlc.hpp
+diff -r 870a22e75241 src/share/vm/utilities/globalDefinitions_xlc.hpp
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/src/share/vm/utilities/globalDefinitions_xlc.hpp	Wed Jul 03 13:00:32 2013 +0200
++++ b/src/share/vm/utilities/globalDefinitions_xlc.hpp	Thu Aug 15 12:10:12 2013 +0200
 @@ -0,0 +1,202 @@
 +/*
 + * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved.
--- a/ppc_patches/0111_opto-Support_for_C_calling_conventions.patch	Wed Aug 28 16:09:50 2013 +0000
+++ b/ppc_patches/0111_opto-Support_for_C_calling_conventions.patch	Fri Sep 06 11:29:41 2013 +0200
@@ -1,9 +1,9 @@
 # HG changeset patch
 # Parent 0eeed7412a34a4557ef705dd2fba235be4694192
-opto,rt: Support for C calling conventions that require 64-bit ints.
+8024342: PPC64 (part 111): 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
+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().
--- a/ppc_patches/0112_opto-C_argument_in_register_AND_stack_slot.patch	Wed Aug 28 16:09:50 2013 +0000
+++ b/ppc_patches/0112_opto-C_argument_in_register_AND_stack_slot.patch	Fri Sep 06 11:29:41 2013 +0200
@@ -1,6 +1,13 @@
 # HG changeset patch
 # Parent 7b067351e4ee718da6ecb35c31bf594d0025b852
-rt: C argument in register AND stack slot.
+8024344: PPC64 (part 112): C argument in register AND stack slot.
+
+On PPC, the first 13 floating point arguments are passed in 
+floating point registers. Also, all but the first 8 arguments
+are passed on the stack. So there can be floating point 
+arguments that are passed on the stack and in a register.
+We duplicate the regs datastructure in c_calling_convention() to
+represent this.
 
 diff -r 7b067351e4ee src/cpu/sparc/vm/sharedRuntime_sparc.cpp
 --- a/src/cpu/sparc/vm/sharedRuntime_sparc.cpp	Fri Feb 22 09:43:14 2013 +0100
--- a/ppc_patches/0115_8003850_opto-introduce_phase_lateExpand.patch	Wed Aug 28 16:09:50 2013 +0000
+++ b/ppc_patches/0115_8003850_opto-introduce_phase_lateExpand.patch	Fri Sep 06 11:29:41 2013 +0200
@@ -1,5 +1,5 @@
 # HG changeset patch
-# Parent 4a2b502db5beffa99f6befe30ebc31ad5d061db0
+# Parent 5ab2c3638b6c8fa182394daa792b6ca2c5820160
 8003850 opto: introduce phase lateExpand to expand nodes after register allocation.
 
 Some nodes can not be expanded during matching. E.g., register allocation
@@ -8,10 +8,10 @@
 register allocation. Whether and how nodes are expanded is specified
 in the ad-file. See block.cpp for a detailed documentation.
 
-diff -r 4a2b502db5be src/cpu/sparc/vm/sparc.ad
---- a/src/cpu/sparc/vm/sparc.ad	Fri Jun 07 12:39:00 2013 +0200
-+++ b/src/cpu/sparc/vm/sparc.ad	Fri Jun 07 12:39:13 2013 +0200
-@@ -1037,6 +1037,11 @@
+diff -r 5ab2c3638b6c src/cpu/sparc/vm/sparc.ad
+--- a/src/cpu/sparc/vm/sparc.ad	Fri Aug 23 10:19:54 2013 +0200
++++ b/src/cpu/sparc/vm/sparc.ad	Fri Aug 23 10:29:55 2013 +0200
+@@ -1034,6 +1034,11 @@
    }
  }
  
@@ -33,9 +33,9 @@
  // Should the Matcher clone shifts on addressing modes, expecting them to
  // be subsumed into complex addressing expressions or compute them into
  // registers?  True for Intel but false for most RISCs
-diff -r 4a2b502db5be src/cpu/x86/vm/x86_32.ad
---- a/src/cpu/x86/vm/x86_32.ad	Fri Jun 07 12:39:00 2013 +0200
-+++ b/src/cpu/x86/vm/x86_32.ad	Fri Jun 07 12:39:13 2013 +0200
+diff -r 5ab2c3638b6c src/cpu/x86/vm/x86_32.ad
+--- a/src/cpu/x86/vm/x86_32.ad	Fri Aug 23 10:19:54 2013 +0200
++++ b/src/cpu/x86/vm/x86_32.ad	Fri Aug 23 10:29:55 2013 +0200
 @@ -487,6 +487,11 @@
    return 0;  // absolute addressing, no offset
  }
@@ -58,9 +58,9 @@
  // Should the Matcher clone shifts on addressing modes, expecting them to
  // be subsumed into complex addressing expressions or compute them into
  // registers?  True for Intel but false for most RISCs
-diff -r 4a2b502db5be src/cpu/x86/vm/x86_64.ad
---- a/src/cpu/x86/vm/x86_64.ad	Fri Jun 07 12:39:00 2013 +0200
-+++ b/src/cpu/x86/vm/x86_64.ad	Fri Jun 07 12:39:13 2013 +0200
+diff -r 5ab2c3638b6c src/cpu/x86/vm/x86_64.ad
+--- a/src/cpu/x86/vm/x86_64.ad	Fri Aug 23 10:19:54 2013 +0200
++++ b/src/cpu/x86/vm/x86_64.ad	Fri Aug 23 10:29:55 2013 +0200
 @@ -688,6 +688,11 @@
    return 0;  // absolute addressing, no offset
  }
@@ -73,7 +73,7 @@
  void MachConstantBaseNode::emit(CodeBuffer& cbuf, PhaseRegAlloc* ra_) const {
    // Empty encoding
  }
-@@ -1544,6 +1549,9 @@
+@@ -1542,6 +1547,9 @@
  // No CMOVF/CMOVD with SSE2
  const int Matcher::float_cmove_cost() { return ConditionalMoveLimit; }
  
@@ -83,9 +83,9 @@
  // Should the Matcher clone shifts on addressing modes, expecting them
  // to be subsumed into complex addressing expressions or compute them
  // into registers?  True for Intel but false for most RISCs
-diff -r 4a2b502db5be src/share/vm/adlc/adlparse.cpp
---- a/src/share/vm/adlc/adlparse.cpp	Fri Jun 07 12:39:00 2013 +0200
-+++ b/src/share/vm/adlc/adlparse.cpp	Fri Jun 07 12:39:13 2013 +0200
+diff -r 5ab2c3638b6c src/share/vm/adlc/adlparse.cpp
+--- a/src/share/vm/adlc/adlparse.cpp	Fri Aug 23 10:19:54 2013 +0200
++++ b/src/share/vm/adlc/adlparse.cpp	Fri Aug 23 10:29:55 2013 +0200
 @@ -220,6 +220,8 @@
        parse_err(SYNERR, "Instructions specify ins_encode, not encode\n");
      }
@@ -267,9 +267,9 @@
  
  //------------------------------constant_parse---------------------------------
  // Parse a constant expression.
-diff -r 4a2b502db5be src/share/vm/adlc/adlparse.hpp
---- a/src/share/vm/adlc/adlparse.hpp	Fri Jun 07 12:39:00 2013 +0200
-+++ b/src/share/vm/adlc/adlparse.hpp	Fri Jun 07 12:39:13 2013 +0200
+diff -r 5ab2c3638b6c src/share/vm/adlc/adlparse.hpp
+--- a/src/share/vm/adlc/adlparse.hpp	Fri Aug 23 10:19:54 2013 +0200
++++ b/src/share/vm/adlc/adlparse.hpp	Fri Aug 23 10:29:55 2013 +0200
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
@@ -286,9 +286,9 @@
  
    void           constant_parse(InstructForm& inst);
    void           constant_parse_expression(EncClass* encoding, char* ec_name);
-diff -r 4a2b502db5be src/share/vm/adlc/archDesc.hpp
---- a/src/share/vm/adlc/archDesc.hpp	Fri Jun 07 12:39:00 2013 +0200
-+++ b/src/share/vm/adlc/archDesc.hpp	Fri Jun 07 12:39:13 2013 +0200
+diff -r 5ab2c3638b6c src/share/vm/adlc/archDesc.hpp
+--- a/src/share/vm/adlc/archDesc.hpp	Fri Aug 23 10:19:54 2013 +0200
++++ b/src/share/vm/adlc/archDesc.hpp	Fri Aug 23 10:29:55 2013 +0200
 @@ -311,6 +311,8 @@
    void defineEvalConstant(FILE *fp, InstructForm &node);
    // Generator for Emit methods for instructions
@@ -298,9 +298,9 @@
  
    // Define a MachOper encode method
    void define_oper_interface(FILE *fp, OperandForm &oper, FormDict &globals,
-diff -r 4a2b502db5be src/share/vm/adlc/formssel.cpp
---- a/src/share/vm/adlc/formssel.cpp	Fri Jun 07 12:39:00 2013 +0200
-+++ b/src/share/vm/adlc/formssel.cpp	Fri Jun 07 12:39:13 2013 +0200
+diff -r 5ab2c3638b6c src/share/vm/adlc/formssel.cpp
+--- a/src/share/vm/adlc/formssel.cpp	Fri Aug 23 10:19:54 2013 +0200
++++ b/src/share/vm/adlc/formssel.cpp	Fri Aug 23 10:29:55 2013 +0200
 @@ -36,20 +36,21 @@
  {
        _ftype = Form::INS;
@@ -385,9 +385,9 @@
  // This instruction has a peephole rule?
  Peephole *InstructForm::peepholes() const {
    return _peephole;
-diff -r 4a2b502db5be src/share/vm/adlc/formssel.hpp
---- a/src/share/vm/adlc/formssel.hpp	Fri Jun 07 12:39:00 2013 +0200
-+++ b/src/share/vm/adlc/formssel.hpp	Fri Jun 07 12:39:13 2013 +0200
+diff -r 5ab2c3638b6c src/share/vm/adlc/formssel.hpp
+--- a/src/share/vm/adlc/formssel.hpp	Fri Aug 23 10:19:54 2013 +0200
++++ b/src/share/vm/adlc/formssel.hpp	Fri Aug 23 10:29:55 2013 +0200
 @@ -96,6 +96,7 @@
    char          *_size;            // Size of instruction
    InsEncode     *_insencode;       // Encoding class instruction belongs to
@@ -405,10 +405,10 @@
    // Return this instruction's first peephole rule, or NULL
    virtual Peephole   *peepholes() const;
    // Add a peephole rule to this instruction
-diff -r 4a2b502db5be src/share/vm/adlc/output_c.cpp
---- a/src/share/vm/adlc/output_c.cpp	Fri Jun 07 12:39:00 2013 +0200
-+++ b/src/share/vm/adlc/output_c.cpp	Fri Jun 07 12:39:13 2013 +0200
-@@ -2483,9 +2483,114 @@
+diff -r 5ab2c3638b6c src/share/vm/adlc/output_c.cpp
+--- a/src/share/vm/adlc/output_c.cpp	Fri Aug 23 10:19:54 2013 +0200
++++ b/src/share/vm/adlc/output_c.cpp	Fri Aug 23 10:29:55 2013 +0200
+@@ -2488,9 +2488,114 @@
    fprintf(fp, "  return (VerifyOops ? MachNode::size(ra_) : %s);\n", inst._size);
  
    // (3) and (4)
@@ -524,7 +524,7 @@
  // defineEmit -----------------------------------------------------------------
  void ArchDesc::defineEmit(FILE* fp, InstructForm& inst) {
    InsEncode* encode = inst._insencode;
-@@ -2836,7 +2941,7 @@
+@@ -2841,7 +2946,7 @@
    } else if ( (strcmp(name,"disp") == 0) ) {
      fprintf(fp,"(PhaseRegAlloc *ra_, const Node *node, int idx) const { \n");
    } else {
@@ -533,7 +533,7 @@
    }
  
    // Check for hexadecimal value OR replacement variable
-@@ -3137,7 +3242,15 @@
+@@ -3142,7 +3247,15 @@
      // Ensure this is a machine-world instruction
      if ( instr->ideal_only() ) continue;
  
@@ -550,9 +550,9 @@
      if (instr->is_mach_constant()) defineEvalConstant(fp, *instr);
      if (instr->_size)              defineSize        (fp, *instr);
  
-diff -r 4a2b502db5be src/share/vm/adlc/output_h.cpp
---- a/src/share/vm/adlc/output_h.cpp	Fri Jun 07 12:39:00 2013 +0200
-+++ b/src/share/vm/adlc/output_h.cpp	Fri Jun 07 12:39:13 2013 +0200
+diff -r 5ab2c3638b6c src/share/vm/adlc/output_h.cpp
+--- a/src/share/vm/adlc/output_h.cpp	Fri Aug 23 10:19:54 2013 +0200
++++ b/src/share/vm/adlc/output_h.cpp	Fri Aug 23 10:29:55 2013 +0200
 @@ -1607,7 +1607,12 @@
      // Output the opcode function and the encode function here using the
      // encoding class information in the _insencode slot.
@@ -567,25 +567,26 @@
      }
  
      // virtual function for getting the size of an instruction
-diff -r 4a2b502db5be src/share/vm/opto/block.cpp
---- a/src/share/vm/opto/block.cpp	Fri Jun 07 12:39:00 2013 +0200
-+++ b/src/share/vm/opto/block.cpp	Fri Jun 07 12:39:13 2013 +0200
-@@ -153,6 +153,14 @@
+diff -r 5ab2c3638b6c src/share/vm/opto/block.cpp
+--- a/src/share/vm/opto/block.cpp	Fri Aug 23 10:19:54 2013 +0200
++++ b/src/share/vm/opto/block.cpp	Fri Aug 23 10:29:55 2013 +0200
+@@ -144,6 +144,15 @@
    _nodes.remove(find_node(n));
  }
  
-+bool Block::contains( const Node *n ) const {
-+  for( uint i = 0; i < _nodes.size(); i++ ) {
-+    if( _nodes[i] == n )
++bool Block::contains(const Node *n) const {
++  for (uint i = 0; i < _nodes.size(); i++) {
++    if (_nodes[i] == n) {
 +      return true;
++    }
 +  }
 +  return false;
 +}
 +
- //------------------------------is_Empty---------------------------------------
  // Return empty status of a block.  Empty blocks contain only the head, other
  // ideal nodes, and an optional trailing goto.
-@@ -711,7 +719,7 @@
+ int Block::is_Empty() const {
+@@ -699,7 +708,7 @@
  // Fix up the final control flow for basic blocks.
  void PhaseCFG::fixup_flow() {
    // Fixup final control flow for the blocks.  Remove jump-to-next
@@ -593,8 +594,8 @@
 +  // block.  If neither arm of an IF follows the conditional branch, we
    // have to add a second jump after the conditional.  We place the
    // TRUE branch target in succs[0] for both GOTOs and IFs.
-   for (uint i=0; i < _num_blocks; i++) {
-@@ -853,6 +861,224 @@
+   for (uint i = 0; i < number_of_blocks(); i++) {
+@@ -844,6 +853,225 @@
  }
  
  
@@ -667,7 +668,7 @@
 +  NOT_PRODUCT(bool foundNode = false;)
 +
 +  // for all blocks
-+  for (uint i = 0; i < _num_blocks; i++) {
++    for (uint i = 0; i < number_of_blocks(); i++) {
 +    Block *b = _blocks[i];
 +    // For all instructions in the current block.
 +    for (uint j = 0; j < b->_nodes.size(); j++) {
@@ -775,7 +776,7 @@
 +        for (int k = 0; k < new_nodes.length(); ++k) {
 +          n2 = new_nodes.at(k);
 +          b->_nodes.insert(++index, n2);
-+          _bbs.map(n2->_idx, b);
++          map_node_to_block(n2, b);
 +        }
 +
 +        // Add old node n to remove and remove them all from block.
@@ -816,13 +817,14 @@
 +}
 +
 +
- //------------------------------dump-------------------------------------------
++//------------------------------dump-------------------------------------------
  #ifndef PRODUCT
  void PhaseCFG::_dump_cfg( const Node *end, VectorSet &visited  ) const {
-diff -r 4a2b502db5be src/share/vm/opto/block.hpp
---- a/src/share/vm/opto/block.hpp	Fri Jun 07 12:39:00 2013 +0200
-+++ b/src/share/vm/opto/block.hpp	Fri Jun 07 12:39:13 2013 +0200
-@@ -276,10 +276,12 @@
+   const Node *x = end->is_block_proj();
+diff -r 5ab2c3638b6c src/share/vm/opto/block.hpp
+--- a/src/share/vm/opto/block.hpp	Fri Aug 23 10:19:54 2013 +0200
++++ b/src/share/vm/opto/block.hpp	Fri Aug 23 10:29:55 2013 +0200
+@@ -275,10 +275,12 @@
    // Add an instruction to an existing block.  It must go after the head
    // instruction and before the end instruction.
    void add_inst( Node *n ) { _nodes.insert(end_idx(),n); }
@@ -836,8 +838,8 @@
  
    // helper function that adds caller save registers to MachProjNode
    void add_call_kills(MachProjNode *proj, RegMask& regs, const char* save_policy, bool exclude_soe);
-@@ -457,6 +459,9 @@
-     _bbs.map( n->_idx, b );
+@@ -554,6 +556,9 @@
+     map_node_to_block(n, b);
    }
  
 +  // Check all nodes and late expand them if necessary.
@@ -846,10 +848,10 @@
  #ifndef PRODUCT
    bool trace_opto_pipelining() const { return _trace_opto_pipelining; }
  
-diff -r 4a2b502db5be src/share/vm/opto/c2_globals.hpp
---- a/src/share/vm/opto/c2_globals.hpp	Fri Jun 07 12:39:00 2013 +0200
-+++ b/src/share/vm/opto/c2_globals.hpp	Fri Jun 07 12:39:13 2013 +0200
-@@ -457,6 +457,8 @@
+diff -r 5ab2c3638b6c src/share/vm/opto/c2_globals.hpp
+--- a/src/share/vm/opto/c2_globals.hpp	Fri Aug 23 10:19:54 2013 +0200
++++ b/src/share/vm/opto/c2_globals.hpp	Fri Aug 23 10:29:55 2013 +0200
+@@ -460,6 +460,8 @@
    experimental(bool, AggressiveUnboxing, false,                             \
            "Control optimizations for aggressive boxing elimination")        \
                                                                              \
@@ -858,10 +860,10 @@
    product(bool, DoEscapeAnalysis, true,                                     \
            "Perform escape analysis")                                        \
                                                                              \
-diff -r 4a2b502db5be src/share/vm/opto/compile.cpp
---- a/src/share/vm/opto/compile.cpp	Fri Jun 07 12:39:00 2013 +0200
-+++ b/src/share/vm/opto/compile.cpp	Fri Jun 07 12:39:13 2013 +0200
-@@ -2239,6 +2239,11 @@
+diff -r 5ab2c3638b6c src/share/vm/opto/compile.cpp
+--- a/src/share/vm/opto/compile.cpp	Fri Aug 23 10:19:54 2013 +0200
++++ b/src/share/vm/opto/compile.cpp	Fri Aug 23 10:29:55 2013 +0200
+@@ -2236,6 +2236,11 @@
      peep.do_transform();
    }
  
@@ -873,9 +875,9 @@
    // Convert Nodes to instruction bits in a buffer
    {
      // %%%% workspace merge brought two timers together for one job
-diff -r 4a2b502db5be src/share/vm/opto/machnode.hpp
---- a/src/share/vm/opto/machnode.hpp	Fri Jun 07 12:39:00 2013 +0200
-+++ b/src/share/vm/opto/machnode.hpp	Fri Jun 07 12:39:13 2013 +0200
+diff -r 5ab2c3638b6c src/share/vm/opto/machnode.hpp
+--- a/src/share/vm/opto/machnode.hpp	Fri Aug 23 10:19:54 2013 +0200
++++ b/src/share/vm/opto/machnode.hpp	Fri Aug 23 10:29:55 2013 +0200
 @@ -155,6 +155,14 @@
    virtual void ext_format(PhaseRegAlloc *,const MachNode *node,int idx, outputStream *st) const=0;
  
@@ -913,10 +915,10 @@
    virtual void emit(CodeBuffer& cbuf, PhaseRegAlloc* ra_) const;
    virtual uint size(PhaseRegAlloc* ra_) const;
    virtual bool pinned() const { return UseRDPCForConstantTableBase; }
-diff -r 4a2b502db5be src/share/vm/opto/matcher.hpp
---- a/src/share/vm/opto/matcher.hpp	Fri Jun 07 12:39:00 2013 +0200
-+++ b/src/share/vm/opto/matcher.hpp	Fri Jun 07 12:39:13 2013 +0200
-@@ -425,6 +425,9 @@
+diff -r 5ab2c3638b6c src/share/vm/opto/matcher.hpp
+--- a/src/share/vm/opto/matcher.hpp	Fri Aug 23 10:19:54 2013 +0200
++++ b/src/share/vm/opto/matcher.hpp	Fri Aug 23 10:29:55 2013 +0200
+@@ -445,6 +445,9 @@
    // aligned.
    static const bool misaligned_doubles_ok;
  
@@ -926,9 +928,9 @@
    // Perform a platform dependent implicit null fixup.  This is needed
    // on windows95 to take care of some unusual register constraints.
    void pd_implicit_null_fixup(MachNode *load, uint idx);
-diff -r 4a2b502db5be src/share/vm/opto/node.cpp
---- a/src/share/vm/opto/node.cpp	Fri Jun 07 12:39:00 2013 +0200
-+++ b/src/share/vm/opto/node.cpp	Fri Jun 07 12:39:13 2013 +0200
+diff -r 5ab2c3638b6c src/share/vm/opto/node.cpp
+--- a/src/share/vm/opto/node.cpp	Fri Aug 23 10:19:54 2013 +0200
++++ b/src/share/vm/opto/node.cpp	Fri Aug 23 10:29:55 2013 +0200
 @@ -961,6 +961,9 @@
  //------------------------------emit-------------------------------------------
  // Emit bytes starting at parameter 'ptr'.
@@ -939,10 +941,10 @@
  //------------------------------size-------------------------------------------
  // Size of instruction in bytes
  uint Node::size(PhaseRegAlloc *ra_) const { return 0; }
-diff -r 4a2b502db5be src/share/vm/opto/node.hpp
---- a/src/share/vm/opto/node.hpp	Fri Jun 07 12:39:00 2013 +0200
-+++ b/src/share/vm/opto/node.hpp	Fri Jun 07 12:39:13 2013 +0200
-@@ -356,6 +356,8 @@
+diff -r 5ab2c3638b6c src/share/vm/opto/node.hpp
+--- a/src/share/vm/opto/node.hpp	Fri Aug 23 10:19:54 2013 +0200
++++ b/src/share/vm/opto/node.hpp	Fri Aug 23 10:29:55 2013 +0200
+@@ -355,6 +355,8 @@
  
    // Reference to the i'th input Node.  Error if out of bounds.
    Node* in(uint i) const { assert(i < _max, err_msg_res("oob: i=%d, _max=%d", i, _max)); return _in[i]; }
@@ -951,7 +953,7 @@
    // Reference to the i'th output Node.  Error if out of bounds.
    // Use this accessor sparingly.  We are going trying to use iterators instead.
    Node* raw_out(uint i) const { assert(i < _outcnt,"oob"); return _out[i]; }
-@@ -383,6 +385,10 @@
+@@ -382,6 +384,10 @@
  
    // Set a required input edge, also updates corresponding output edge
    void add_req( Node *n ); // Append a NEW required input
@@ -962,7 +964,7 @@
    void add_req_batch( Node* n, uint m ); // Append m NEW required inputs (all n).
    void del_req( uint idx ); // Delete required edge & compact
    void ins_req( uint i, Node *n ); // Insert a NEW required input
-@@ -934,6 +940,8 @@
+@@ -933,6 +939,8 @@
    // Emit bytes starting at parameter 'ptr'
    // Bump 'ptr' by the number of output bytes
    virtual void emit(CodeBuffer &cbuf, PhaseRegAlloc *ra_) const;
--- a/ppc_patches/0122_PPC-C2_compiler_port-ppc_files.patch	Wed Aug 28 16:09:50 2013 +0000
+++ b/ppc_patches/0122_PPC-C2_compiler_port-ppc_files.patch	Fri Sep 06 11:29:41 2013 +0200
@@ -1,13 +1,54 @@
 # HG changeset patch
-# Parent 29de6e01e4782517e647ade0cda86f3b7d6ed0aa
+# Parent 02c2c15be7cc5b9be29ea6dee01794ad326fefd2
 ppc: Initial C2 compiler port, ppc files
 
 The C2 compiler builds on linuxppc and aixppc, and
 executes simple programs.
 
-diff -r 29de6e01e478 src/cpu/ppc/vm/c2_globals_ppc.hpp
+diff -r 02c2c15be7cc src/cpu/ppc/vm/assembler_ppc.hpp
+--- a/src/cpu/ppc/vm/assembler_ppc.hpp	Fri Sep 06 09:26:06 2013 +0200
++++ b/src/cpu/ppc/vm/assembler_ppc.hpp	Fri Sep 06 10:52:30 2013 +0200
+@@ -960,8 +960,8 @@
+   static int sr(       int         x)  { return  opp_u_field(x,             15, 12); }
+   static int tbr(      int         x)  { return  opp_u_field(x,             20, 11); }
+   static int th(       int         x)  { return  opp_u_field(x,             10,  7); }
+-  static int thct(     int         x)  { assert((x&8)==0, "must be valid cache specification");  return th(x); }
+-  static int thds(     int         x)  { assert((x&8)==8, "must be valid stream specification"); return th(x); }
++  static int thct(     int         x)  { assert((x&8) == 0, "must be valid cache specification");  return th(x); }
++  static int thds(     int         x)  { assert((x&8) == 8, "must be valid stream specification"); return th(x); }
+   static int to(       int         x)  { return  opp_u_field(x,             10,  6); }
+   static int u(        int         x)  { return  opp_u_field(x,             19, 16); }
+   static int ui(       int         x)  { return  opp_u_field(x,             31, 16); }
+@@ -1204,7 +1204,7 @@
+   }
+   // endgroup opcode for Power6
+   static bool is_endgroup(int x) {
+-    return is_ori(x) && inv_ra_field(x)==1 && inv_rs_field(x)==1 && inv_d1_field(x)==0;
++    return is_ori(x) && inv_ra_field(x) == 1 && inv_rs_field(x) == 1 && inv_d1_field(x) == 0;
+   }
+ 
+ 
+@@ -1229,7 +1229,7 @@
+   inline void isel(   Register d, Register a, Register b, int bc);
+ 
+   // PPC 1, section 3.3.11, Fixed-Point Logical Instructions
+-         void andi(   Register a, Register s, int ui16);    // optimized version
++         void andi(   Register a, Register s, int ui16);   // optimized version
+   inline void andi_(  Register a, Register s, int ui16);
+   inline void andis_( Register a, Register s, int ui16);
+   inline void ori(    Register a, Register s, int ui16);
+@@ -1938,7 +1938,7 @@
+   inline void load_const(Register d, AddressLiteral& a, Register tmp = noreg);
+ 
+   // Load a 64 bit constant, optimized, not identifyable.
+-  // Tmp can be used to increase ILP. Set return_simm16_rest=true to get a
++  // Tmp can be used to increase ILP. Set return_simm16_rest = true to get a
+   // 16 bit immediate offset. This is useful if the offset can be encoded in
+   // a succeeding instruction.
+          int load_const_optimized(Register d, long a,  Register tmp = noreg, bool return_simm16_rest = false);
+diff -r 02c2c15be7cc src/cpu/ppc/vm/c2_globals_ppc.hpp
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/src/cpu/ppc/vm/c2_globals_ppc.hpp	Tue Jul 23 22:05:29 2013 +0200
++++ b/src/cpu/ppc/vm/c2_globals_ppc.hpp	Fri Sep 06 10:52:30 2013 +0200
 @@ -0,0 +1,95 @@
 +/*
 + * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -104,9 +145,9 @@
 +define_pd_global(bool, NeverActAsServerClassMachine, false);
 +
 +#endif // CPU_PPC_VM_C2_GLOBALS_PPC_HPP
-diff -r 29de6e01e478 src/cpu/ppc/vm/c2_init_ppc.cpp
+diff -r 02c2c15be7cc src/cpu/ppc/vm/c2_init_ppc.cpp
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/src/cpu/ppc/vm/c2_init_ppc.cpp	Tue Jul 23 22:05:29 2013 +0200
++++ b/src/cpu/ppc/vm/c2_init_ppc.cpp	Fri Sep 06 10:52:30 2013 +0200
 @@ -0,0 +1,35 @@
 +/*
 + * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -143,9 +184,9 @@
 +
 +void Compile::pd_compiler2_init() {
 +}
-diff -r 29de6e01e478 src/cpu/ppc/vm/compile_ppc.cpp
---- a/src/cpu/ppc/vm/compile_ppc.cpp	Tue Jul 23 21:17:13 2013 +0200
-+++ b/src/cpu/ppc/vm/compile_ppc.cpp	Tue Jul 23 22:05:29 2013 +0200
+diff -r 02c2c15be7cc src/cpu/ppc/vm/compile_ppc.cpp
+--- a/src/cpu/ppc/vm/compile_ppc.cpp	Fri Sep 06 09:26:06 2013 +0200
++++ b/src/cpu/ppc/vm/compile_ppc.cpp	Fri Sep 06 10:52:30 2013 +0200
 @@ -78,9 +78,9 @@
          MachSafePointNode *call = (MachSafePointNode *)m;
          // Set register mask.
@@ -158,9 +199,22 @@
          }
          //m->rem_req(TypeFunc::ReturnAdr);
          m->set_req(TypeFunc::ReturnAdr, loadToc);
-diff -r 29de6e01e478 src/cpu/ppc/vm/globals_ppc.hpp
---- a/src/cpu/ppc/vm/globals_ppc.hpp	Tue Jul 23 21:17:13 2013 +0200
-+++ b/src/cpu/ppc/vm/globals_ppc.hpp	Tue Jul 23 22:05:29 2013 +0200
+diff -r 02c2c15be7cc src/cpu/ppc/vm/cppInterpreter_ppc.cpp
+--- a/src/cpu/ppc/vm/cppInterpreter_ppc.cpp	Fri Sep 06 09:26:06 2013 +0200
++++ b/src/cpu/ppc/vm/cppInterpreter_ppc.cpp	Fri Sep 06 10:52:30 2013 +0200
+@@ -1981,8 +1981,7 @@
+ 
+   // Restore R14_state.
+   __ ld(R14_state, 0, R1_SP);
+-  __ addi(R14_state, R14_state,
+-              -frame::interpreter_frame_cinterpreterstate_size_in_bytes());
++  __ addi(R14_state, R14_state, -frame::interpreter_frame_cinterpreterstate_size_in_bytes());
+ 
+   //
+   // Registers alive
+diff -r 02c2c15be7cc src/cpu/ppc/vm/globals_ppc.hpp
+--- a/src/cpu/ppc/vm/globals_ppc.hpp	Fri Sep 06 09:26:06 2013 +0200
++++ b/src/cpu/ppc/vm/globals_ppc.hpp	Fri Sep 06 10:52:30 2013 +0200
 @@ -60,6 +60,13 @@
  
  // Platform dependent flag handling: flags only defined on this platform.
@@ -201,10 +255,138 @@
  
 -
  #endif // CPU_PPC_VM_GLOBALS_PPC_HPP
-diff -r 29de6e01e478 src/cpu/ppc/vm/ppc.ad
+diff -r 02c2c15be7cc src/cpu/ppc/vm/jni_ppc.h
+--- a/src/cpu/ppc/vm/jni_ppc.h	Fri Sep 06 09:26:06 2013 +0200
++++ b/src/cpu/ppc/vm/jni_ppc.h	Fri Sep 06 10:52:30 2013 +0200
+@@ -40,8 +40,10 @@
+   #define JNIIMPORT
+ #endif
+ 
+-  #define JNICALL
+-  typedef int jint;
++#define JNICALL
++
++typedef int jint;
++
+ #if defined(_LP64)
+   typedef long jlong;
+ #else
+diff -r 02c2c15be7cc src/cpu/ppc/vm/macroAssembler_ppc.cpp
+--- a/src/cpu/ppc/vm/macroAssembler_ppc.cpp	Fri Sep 06 09:26:06 2013 +0200
++++ b/src/cpu/ppc/vm/macroAssembler_ppc.cpp	Fri Sep 06 10:52:30 2013 +0200
+@@ -2914,12 +2914,11 @@
+   if (!VerifyOops) {
+     return;
+   }
+-  // will be preserved.
++  // Will be preserved.
+   Register tmp = R11;
+   assert(oop != tmp, "precondition");
+   unsigned int nbytes_save = 10*8; // 10 volatile gprs
+-  address/* FunctionDescriptor** */fd =
+-    StubRoutines::verify_oop_subroutine_entry_address();
++  address/* FunctionDescriptor** */fd = StubRoutines::verify_oop_subroutine_entry_address();
+   // save tmp
+   mr(R0, tmp);
+   // kill tmp
+diff -r 02c2c15be7cc src/cpu/ppc/vm/macroAssembler_ppc.hpp
+--- a/src/cpu/ppc/vm/macroAssembler_ppc.hpp	Fri Sep 06 09:26:06 2013 +0200
++++ b/src/cpu/ppc/vm/macroAssembler_ppc.hpp	Fri Sep 06 10:52:30 2013 +0200
+@@ -320,7 +320,7 @@
+     // the entry point
+     address         entry_point,
+     // flag which indicates if exception should be checked
+-    bool            check_exception=true
++    bool            check_exception = true
+   );
+ 
+   // Support for VM calls. This is the base routine called by the
+diff -r 02c2c15be7cc src/cpu/ppc/vm/macroAssembler_ppc.inline.hpp
+--- a/src/cpu/ppc/vm/macroAssembler_ppc.inline.hpp	Fri Sep 06 09:26:06 2013 +0200
++++ b/src/cpu/ppc/vm/macroAssembler_ppc.inline.hpp	Fri Sep 06 10:52:30 2013 +0200
+@@ -296,7 +296,7 @@
+ 
+ // Attention: No null check for loaded uncompressed OOP. Can be used for loading klass field.
+ inline void MacroAssembler::load_heap_oop_with_trap_null_check(Register d, RegisterOrConstant si16,
+-                                                                   Register s1) {
++                                                               Register s1) {
+   if ( NOT_LINUX(true)LINUX_ONLY(false) /*!os::zero_page_read_protected()*/) {
+     if (TrapBasedNullChecks) {
+       trap_null_check(s1);
+diff -r 02c2c15be7cc src/cpu/ppc/vm/methodHandles_ppc.cpp
+--- a/src/cpu/ppc/vm/methodHandles_ppc.cpp	Fri Sep 06 09:26:06 2013 +0200
++++ b/src/cpu/ppc/vm/methodHandles_ppc.cpp	Fri Sep 06 10:52:30 2013 +0200
+@@ -33,10 +33,8 @@
+ 
+ #ifdef PRODUCT
+ #define BLOCK_COMMENT(str) // nothing
+-#define STOP(error) stop(error)
+ #else
+ #define BLOCK_COMMENT(str) __ block_comment(str)
+-#define STOP(error) block_comment(error); __ stop(error)
+ #endif
+ 
+ #define BIND(label) bind(label); BLOCK_COMMENT(#label ":")
+@@ -490,7 +488,7 @@
+         trace_calling_frame = os::get_sender_for_C_frame(&trace_calling_frame);
+       }
+ 
+-      // safely create a frame and call frame::describe
++      // Safely create a frame and call frame::describe.
+       intptr_t *dump_sp = trace_calling_frame.sender_sp();
+ 
+       frame dump_frame = frame(dump_sp);
+@@ -531,7 +529,7 @@
+   __ mr(R6_ARG4, R1_SP);
+   __ call_VM_leaf(CAST_FROM_FN_PTR(address, trace_method_handle_stub));
+ 
+-  __ restore_volatile_gprs(R1_SP, 112); // except R0
++  __ restore_volatile_gprs(R1_SP, 112); // Except R0.
+   __ pop_frame();
+   __ restore_LR_CR(R0);
+ 
+diff -r 02c2c15be7cc src/cpu/ppc/vm/nativeInst_ppc.hpp
+--- a/src/cpu/ppc/vm/nativeInst_ppc.hpp	Fri Sep 06 09:26:06 2013 +0200
++++ b/src/cpu/ppc/vm/nativeInst_ppc.hpp	Fri Sep 06 10:52:30 2013 +0200
+@@ -130,7 +130,7 @@
+ class NativeCall: public NativeInstruction {
+  public:
+ 
+-  enum specific_constants {
++  enum ppc_specific_constants {
+     load_const_instruction_size                 = 28,
+     load_const_from_method_toc_instruction_size = 16,
+     instruction_size                            = 16 // Used in shared code for calls with reloc_info.
+@@ -238,7 +238,7 @@
+ class NativeMovConstReg: public NativeInstruction {
+  public:
+ 
+-  enum specific_constants {
++  enum ppc_specific_constants {
+     load_const_instruction_size                 = 20,
+     load_const_from_method_toc_instruction_size =  8,
+     instruction_size                            =  8 // Used in shared code for calls with reloc_info.
+@@ -277,7 +277,7 @@
+   // We use MacroAssembler::b64_patchable() for implementing a
+   // jump-anywhere instruction.
+ 
+-  enum specific_constants {
++  enum ppc_specific_constants {
+     instruction_size = MacroAssembler::b64_patchable_size
+   };
+ 
+@@ -382,7 +382,6 @@
+   void set_destination(address new_destination);
+ };
+ 
+-
+ inline bool is_NativeCallTrampolineStub_at(address address) {
+   int first_instr = *(int*)address;
+   return Assembler::is_addis(first_instr) &&
+diff -r 02c2c15be7cc src/cpu/ppc/vm/ppc.ad
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/src/cpu/ppc/vm/ppc.ad	Tue Jul 23 22:05:29 2013 +0200
-@@ -0,0 +1,13635 @@
++++ b/src/cpu/ppc/vm/ppc.ad	Fri Sep 06 10:52:30 2013 +0200
+@@ -0,0 +1,13711 @@
 +//
 +// Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
 +// Copyright 2012, 2013 SAP AG. All rights reserved.
@@ -2282,8 +2464,7 @@
 +  Register ic_klass       = as_Register(Matcher::inline_cache_reg_encode());
 +  Register receiver_klass = R0;  // tmp
 +
-+  assert_different_registers(ic_klass, receiver_klass,
-+                             R11_scratch1, R3_ARG1);
++  assert_different_registers(ic_klass, receiver_klass, R11_scratch1, R3_ARG1);
 +  assert(R11_scratch1 == R11, "need prologue scratch register");
 +
 +  // Check for NULL argument if we don't have implicit null checks.
@@ -3843,7 +4024,7 @@
 +    // TODO: PPC port $archOpcode(ppc64Opcode_addis);
 +    MacroAssembler _masm(&cbuf);
 +    Register Rdst = reg_to_register_object($dst$$reg);
-+    intptr_t Csrc = oopDesc::encode_klass((Klass *)$src$$constant);
++    intptr_t Csrc = Klass::encode_klass((Klass *)$src$$constant);
 +    int xc = (Csrc >> 16) & 0xffff;
 +    int xd = (Csrc >>  0) & 0xffff;
 +    int value = (int)(short)(xc + ((xd & 0x8000) != 0 ? 1 : 0)); // Compensate sign extend like in patch_set_narrow_oop.
@@ -3856,7 +4037,7 @@
 +    MacroAssembler _masm(&cbuf);
 +    Register Rdst  = reg_to_register_object($dst$$reg);
 +    Register Rsrc1 = reg_to_register_object($src1$$reg);
-+    intptr_t Csrc  = oopDesc::encode_klass((Klass *)$src2$$constant);
++    intptr_t Csrc  = Klass::encode_klass((Klass *)$src2$$constant);
 +    assert(__ oop_recorder() != NULL, "this assembler needs an OopRecorder");
 +    int klass_index = __ oop_recorder()->find_index((Klass *)$src2$$constant);
 +    RelocationHolder rspec = metadata_Relocation::spec(klass_index);
@@ -4858,6 +5039,7 @@
 +    }
 +  %}
 +
++  /*
 +  enc_class emit_encode_klass(iRegNdst dst, iRegPsrc src) %{
 +    assert (UseCompressedKlassPointers, "must be compressed");
 +    assert (Universe::heap() != NULL, "java heap should be initialized");
@@ -4898,7 +5080,6 @@
 +      __ srdi(reg_dst, reg_dst, LogMinObjAlignmentInBytes);
 +    }
 +  %}
-+
 +  enc_class emit_decode_klass_not_null(iRegPdst dst, iRegNsrc src) %{
 +    // TODO: PPC port $archOpcode(ppc64Opcode_compound);
 +    MacroAssembler _masm(&cbuf);
@@ -4911,26 +5092,28 @@
 +      __ add(reg_dst, reg_dst, R30);
 +    }
 +  %}
-+
-+  enc_class lateExpand_decode_klass_not_null(iRegPdst dst, iRegNsrc src) %{
-+    decodeNKlass_shiftNode *n1 = new (C) decodeNKlass_shiftNode();
-+    n1->add_req(n_region, n_src);
++  */
++  enc_class lateExpand_decode_klass_not_null(iRegPdst dst, iRegLsrc base, iRegNsrc src) %{
++    decodeNKlass_add_baseNode *n1 = new (C) decodeNKlass_add_baseNode();
++    n1->add_req(n_region, n_base, n_src);
 +    n1->_opnds[0] = op_dst;
-+    n1->_opnds[1] = op_src;
++    n1->_opnds[1] = op_base;
++    n1->_opnds[2] = op_src;
 +    n1->_bottom_type = _bottom_type;
 +
-+    decodeNKlass_addNode *n2 = new (C) decodeNKlass_addNode();
-+    n2->add_req(n_region, n1);
++    decodeNKlass_shiftNode *n2 = new (C) decodeNKlass_shiftNode();
++    n2->add_req(n_region, n2);
 +    n2->_opnds[0] = op_dst;
 +    n2->_opnds[1] = op_dst;
 +    n2->_bottom_type = _bottom_type;
++
 +    ra_->set_pair(n1->_idx, ra_->get_reg_second(this), ra_->get_reg_first(this));
 +    ra_->set_pair(n2->_idx, ra_->get_reg_second(this), ra_->get_reg_first(this));
 +
 +    nodes->push(n1);
 +    nodes->push(n2);
 +  %}
-+
++  /*
 +  enc_class lateExpand_decode_klass(iRegPdst dst, iRegNsrc src, flagsReg crx) %{
 +    decodeNKlass_shiftNode        *n_shift    = new (C) decodeNKlass_shiftNode();
 +    compN_iRegN_conNode           *n_compare  = new (C) compN_iRegN_conNode();
@@ -4960,13 +5143,14 @@
 +    nodes->push(n_shift);
 +    nodes->push(n_add_base);
 +  %}
-+
-+  enc_class lateExpand_encode_klass_not_null(iRegNdst dst, iRegPdst src) %{
-+
-+    encodePKlass_subNode *n1 = new (C) encodePKlass_subNode();
-+    n1->add_req(n_region, n_src);
++  */
++  enc_class lateExpand_encode_klass_not_null(iRegNdst dst, iRegLsrc base, iRegPdst src) %{
++
++    encodePKlass_sub_baseNode *n1 = new (C) encodePKlass_sub_baseNode();
++    n1->add_req(n_region, n_base, n_src);
 +    n1->_opnds[0] = op_dst;
-+    n1->_opnds[1] = op_src;
++    n1->_opnds[1] = op_base;
++    n1->_opnds[2] = op_src;
 +    n1->_bottom_type = _bottom_type;
 +
 +    encodePKlass_shiftNode *n2 = new (C) encodePKlass_shiftNode();
@@ -4980,7 +5164,7 @@
 +    nodes->push(n1);
 +    nodes->push(n2);
 +  %}
-+
++  /*
 +  enc_class emit_decode_klass(iRegPdst dst, iRegNsrc src) %{
 +    // TODO: PPC port $archOpcode(ppc64Opcode_compound);
 +    MacroAssembler _masm(&cbuf);
@@ -4996,7 +5180,7 @@
 +      __ bind(done);
 +    }
 +  %}
-+
++  */
 +  // Late expand emitter for runtime leaf calls.
 +  enc_class lateExpand_java_to_runtime_call(method meth) %{
 +    // Get the struct that describes the function we are about to call.
@@ -9983,7 +10167,7 @@
 +  ins_encode( enc_srdi(dst, src, (Universe::narrow_klass_shift())) );
 +  ins_pipe(pipe_class_default);
 +%}
-+
++/*
 +// Add node for expand.
 +instruct encodePKlass_sub(iRegPdst dst, iRegPdst src) %{
 +  // The match rule is needed to make it a 'MachTypeNode'!
@@ -9995,6 +10179,19 @@
 +  ins_encode( enc_subf(dst, R30, src) );
 +  ins_pipe(pipe_class_default);
 +%}
++*/
++
++// Add node for expand.
++instruct encodePKlass_sub_base(iRegPdst dst, iRegLsrc base, iRegPdst src) %{
++  // The match rule is needed to make it a 'MachTypeNode'!
++  match(Set dst (EncodePKlass (Binary base src)));
++  predicate(false);
++
++  format %{ "SUB     $dst, $base, $src \t// encode" %}
++  size(4);
++  ins_encode( enc_subf(dst, base, src) );
++  ins_pipe(pipe_class_default);
++%}
 +
 +// base != 0
 +// 32G aligned narrow oop base.
@@ -10009,16 +10206,32 @@
 +%}
 +
 +// shift != 0, base != 0
-+instruct encodePKlass_not_null(iRegNdst dst, iRegPsrc src) %{
++instruct encodePKlass_not_null_Ex(iRegNdst dst, iRegLsrc base, iRegPsrc src) %{
++  match(Set dst (EncodePKlass (Binary base src)));
++  predicate(false);
++
++  format %{ "EncodePKlass $dst, $src\t// $src != Null, late expanded" %}
++  lateExpand( lateExpand_encode_klass_not_null(dst, base, src) );
++%}
++
++// shift != 0, base != 0
++instruct encodePKlass_not_null_ExEx(iRegNdst dst, iRegPsrc src) %{
 +  match(Set dst (EncodePKlass src));
-+  predicate(n->bottom_type()->make_ptr()->ptr() == TypePtr::NotNull &&
-+            Universe::narrow_klass_shift() != 0 &&
-+            true /* TODO: PPC port Universe::narrow_klass_base_overlaps()*/);
-+
-+  format %{ "EncodePKlass $dst, $src\t// $src != Null, late expanded" %}
-+  lateExpand( lateExpand_encode_klass_not_null(dst, src) );
-+%}
-+
++  //predicate(Universe::narrow_klass_shift() != 0 &&
++  //          true /* TODO: PPC port Universe::narrow_klass_base_overlaps()*/);
++
++  //format %{ "EncodePKlass $dst, $src\t// $src != Null, late expanded" %}
++  ins_cost(DEFAULT_COST*2);  // Don't count constant.
++  expand %{
++    immL baseImm %{ (jlong)(intptr_t)Universe::narrow_klass_base() %}
++    iRegLdst base;
++    loadConL(base, baseImm);
++    encodePKlass_not_null_Ex(dst, base, src);
++  %}
++%}
++
++
++/*
 +// shift != 0, base == 0
 +instruct encodePKlass_not_null_base_null(iRegNdst dst, iRegPsrc src) %{
 +  match(Set dst (EncodePKlass src));
@@ -10043,7 +10256,7 @@
 +  ins_encode( enc_mr_if_needed(dst, src) );
 +  ins_pipe(pipe_class_default);
 +%}
-+
++*/
 +// Decode nodes.
 +
 +// Shift node for expand.
@@ -10058,18 +10271,33 @@
 +  ins_pipe(pipe_class_default);
 +%}
 +
++/*
 +// Add node for expand.
 +instruct decodeNKlass_add(iRegPdst dst, iRegPdst src) %{
 +  // The match rule is needed to make it a 'MachTypeNode'!
 +  match(Set dst (DecodeNKlass src));
 +  predicate(false);
 +
-+  format %{ "ADD     $dst, $src, R30 \t// DecodeNKlass, add oop base" %}
++  format %{ "ADD     $dst, $src, R30 \t// DecodeNKlass, add klass base" %}
 +  size(4);
 +  ins_encode( enc_add(dst, src, R30) );
 +  ins_pipe(pipe_class_default);
 +%}
-+
++*/
++// Add node for expand.
++
++instruct decodeNKlass_add_base(iRegPdst dst, iRegLsrc base, iRegPdst src) %{
++  // The match rule is needed to make it a 'MachTypeNode'!
++  match(Set dst (DecodeNKlass (Binary base src)));
++  predicate(false);
++
++  format %{ "ADD     $dst, $base, $src \t// DecodeNKlass, add klass base" %}
++  size(4);
++  ins_encode( enc_add(dst, base, src) );
++  ins_pipe(pipe_class_default);
++%}
++
++/*
 +// shift != 0, base == 0
 +instruct decodeNKlass_nullBase(iRegPdst dst, iRegNsrc src) %{
 +  match(Set dst (DecodeNKlass src));
@@ -10103,6 +10331,36 @@
 +  ins_encode( enc_mr_if_needed(dst, src) );
 +  ins_pipe(pipe_class_default);
 +%}
++*/
++
++// src != 0, shift != 0, base != 0
++instruct decodeNKlass_notNull_addBase_Ex(iRegPdst dst, iRegLsrc base, iRegNsrc src) %{
++  match(Set dst (DecodeNKlass (Binary base src)));
++  //effect(kill src); // We need a register for the immediate result after shifting.
++  predicate(false);
++
++  format %{ "DecodeNKlass $dst =  $base + ($src << 3) \t// $src != NULL, late expanded" %}
++  lateExpand( lateExpand_decode_klass_not_null(dst, base, src));
++%}
++
++// src != 0, shift != 0, base != 0
++instruct decodeNKlass_notNull_addBase_ExEx(iRegPdst dst, iRegNsrc src) %{
++  match(Set dst (DecodeNKlass src));
++  // predicate(Universe::narrow_klass_shift() != 0 &&
++  //           Universe::narrow_klass_base() != 0);
++
++  //format %{ "DecodeNKlass $dst, $src \t// $src != NULL, expanded" %}
++
++  ins_cost(DEFAULT_COST*2);  // Don't count constant.
++  expand %{
++    // We add first, then we shift.  like this, we can get along with one register less.
++    // But we have to load the base pre-shifted.
++    immL baseImm %{ (jlong)((intptr_t)Universe::narrow_klass_base() >> Universe::narrow_klass_shift()) %}
++    iRegLdst base;
++    loadConL(base, baseImm);
++    decodeNKlass_notNull_addBase_Ex(dst, base, src);
++  %}
++%}
 +
 +// Store Pointer
 +instruct storeP(memoryAlg4 dst, iRegPsrc src) %{
@@ -13840,9 +14098,9 @@
 +// These must follow all instruction definitions as they use the names
 +// defined in the instructions definitions.
 +
-diff -r 29de6e01e478 src/cpu/ppc/vm/ppc_64.ad
+diff -r 02c2c15be7cc src/cpu/ppc/vm/ppc_64.ad
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/src/cpu/ppc/vm/ppc_64.ad	Tue Jul 23 22:05:29 2013 +0200
++++ b/src/cpu/ppc/vm/ppc_64.ad	Fri Sep 06 10:52:30 2013 +0200
 @@ -0,0 +1,24 @@
 +//
 +// Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -13868,9 +14126,76 @@
 +// questions.
 +//
 +//
-diff -r 29de6e01e478 src/cpu/ppc/vm/runtime_ppc.cpp
+diff -r 02c2c15be7cc src/cpu/ppc/vm/register_definitions_ppc.cpp
+--- a/src/cpu/ppc/vm/register_definitions_ppc.cpp	Fri Sep 06 09:26:06 2013 +0200
++++ b/src/cpu/ppc/vm/register_definitions_ppc.cpp	Fri Sep 06 10:52:30 2013 +0200
+@@ -30,8 +30,8 @@
+ #include "asm/macroAssembler.hpp"
+ #include "asm/register.hpp"
+ #include "register_ppc.hpp"
+-#ifdef TARGET_ARCH_MODEL_32
+-# include "interp_masm_32.hpp"
++#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"
+diff -r 02c2c15be7cc src/cpu/ppc/vm/register_ppc.cpp
+--- a/src/cpu/ppc/vm/register_ppc.cpp	Fri Sep 06 09:26:06 2013 +0200
++++ b/src/cpu/ppc/vm/register_ppc.cpp	Fri Sep 06 10:52:30 2013 +0200
+@@ -44,7 +44,7 @@
+ 
+ const char* ConditionRegisterImpl::name() const {
+   const char* names[number_of_registers] = {
+-    "CR0",  "CR1",  "CR2",  "CR3",  "CCR4",  "CCR5",  "CCR6",  "CCR7"
++    "CR0",  "CR1",  "CR2",  "CR3",  "CR4",  "CR5",  "CR6",  "CR7"
+   };
+   return is_valid() ? names[encoding()] : "cnoreg";
+ }
+@@ -61,7 +61,7 @@
+ 
+ const char* SpecialRegisterImpl::name() const {
+   const char* names[number_of_registers] = {
+-    "SR_XER",  "SR_LR",   "SR_CTR",  "SR_VRSAVE",   "R1_SPEFSCR",  "SR_PPR"
++    "SR_XER", "SR_LR", "SR_CTR", "SR_VRSAVE", "SPEFSCR", "SR_PPR"
+   };
+   return is_valid() ? names[encoding()] : "snoreg";
+ }
+diff -r 02c2c15be7cc src/cpu/ppc/vm/register_ppc.hpp
+--- a/src/cpu/ppc/vm/register_ppc.hpp	Fri Sep 06 09:26:06 2013 +0200
++++ b/src/cpu/ppc/vm/register_ppc.hpp	Fri Sep 06 10:52:30 2013 +0200
+@@ -60,8 +60,8 @@
+ //  FPSCR     Floating point status and control register (volatile)
+ //
+ //  CR0-CR1   Condition code fields (volatile)
+-//  CR2-CCR4   Condition code fields (nonvolatile)
+-//  CCR5-CCR7   Condition code fields (volatile)
++//  CR2-CR4   Condition code fields (nonvolatile)
++//  CR5-CR7   Condition code fields (volatile)
+ //
+ //  ----------------------------------------------
+ //  On processors with the VMX feature:
+@@ -531,7 +531,7 @@
+ REGISTER_DECLARATION(Register,      R8_ARG6,    R8);  // volatile
+ REGISTER_DECLARATION(Register,      R9_ARG7,    R9);  // volatile
+ REGISTER_DECLARATION(Register,      R10_ARG8,   R10); // volatile
+-REGISTER_DECLARATION(FloatRegister, FO_SCRATCH, F0);  // volatile
++REGISTER_DECLARATION(FloatRegister, F0_SCRATCH, F0);  // volatile
+ REGISTER_DECLARATION(FloatRegister, F1_RET,     F1);  // volatile
+ REGISTER_DECLARATION(FloatRegister, F1_ARG1,    F1);  // volatile
+ REGISTER_DECLARATION(FloatRegister, F2_ARG2,    F2);  // volatile
+@@ -560,7 +560,7 @@
+ #define R8_ARG6            AS_REGISTER(Register, R8)
+ #define R9_ARG7            AS_REGISTER(Register, R9)
+ #define R10_ARG8           AS_REGISTER(Register, R10)
+-#define FO_SCRATCH         AS_REGISTER(FloatRegister, F0)
++#define F0_SCRATCH         AS_REGISTER(FloatRegister, F0)
+ #define F1_RET             AS_REGISTER(FloatRegister, F1)
+ #define F1_ARG1            AS_REGISTER(FloatRegister, F1)
+ #define F2_ARG2            AS_REGISTER(FloatRegister, F2)
+diff -r 02c2c15be7cc src/cpu/ppc/vm/runtime_ppc.cpp
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/src/cpu/ppc/vm/runtime_ppc.cpp	Tue Jul 23 22:05:29 2013 +0200
++++ b/src/cpu/ppc/vm/runtime_ppc.cpp	Fri Sep 06 10:52:30 2013 +0200
 @@ -0,0 +1,183 @@
 +/*
 + * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -14055,9 +14380,353 @@
 +}
 +
 +#endif // COMPILER2
-diff -r 29de6e01e478 src/os_cpu/aix_ppc/vm/aix_ppc_64.ad
+diff -r 02c2c15be7cc src/cpu/ppc/vm/sharedRuntime_ppc.cpp
+--- a/src/cpu/ppc/vm/sharedRuntime_ppc.cpp	Fri Sep 06 09:26:06 2013 +0200
++++ b/src/cpu/ppc/vm/sharedRuntime_ppc.cpp	Fri Sep 06 10:52:30 2013 +0200
+@@ -3016,8 +3016,7 @@
+ 
+   // Initialize R14_state, ...
+   __ ld(R11_scratch1, 0, R1_SP);
+-  __ addi(R14_state, R11_scratch1,
+-              -frame::interpreter_frame_cinterpreterstate_size_in_bytes());
++  __ addi(R14_state, R11_scratch1, -frame::interpreter_frame_cinterpreterstate_size_in_bytes());
+   // also initialize R15_prev_state.
+   __ restore_prev_state();
+   // Return to the interpreter entry point.
+diff -r 02c2c15be7cc src/cpu/ppc/vm/stubGenerator_ppc.cpp
+--- a/src/cpu/ppc/vm/stubGenerator_ppc.cpp	Fri Sep 06 09:26:06 2013 +0200
++++ b/src/cpu/ppc/vm/stubGenerator_ppc.cpp	Fri Sep 06 10:52:30 2013 +0200
+@@ -146,14 +146,14 @@
+       // FIXME: use round_to() here
+       __ andi_(r_frame_alignment_in_bytes, r_arg_argument_count, 1);
+       __ sldi(r_frame_alignment_in_bytes,
+-                  r_frame_alignment_in_bytes, Interpreter::logStackElementSize);
++              r_frame_alignment_in_bytes, Interpreter::logStackElementSize);
+ 
+       // size = unaligned size of arguments + top abi's size
+       __ addi(r_frame_size, r_argument_size_in_bytes,
+               frame::top_ijava_frame_abi_size);
+       // size += arguments alignment
+       __ add(r_frame_size,
+-                 r_frame_size, r_frame_alignment_in_bytes);
++             r_frame_size, r_frame_alignment_in_bytes);
+       // size += size of call_stub locals
+       __ addi(r_frame_size,
+               r_frame_size, frame::entry_frame_locals_size);
+@@ -179,7 +179,7 @@
+       __ addi(r_top_of_arguments_addr,
+               R1_SP, frame::top_ijava_frame_abi_size);
+       __ add(r_top_of_arguments_addr,
+-                 r_top_of_arguments_addr, r_frame_alignment_in_bytes);
++             r_top_of_arguments_addr, r_frame_alignment_in_bytes);
+ 
+       // any arguments to copy?
+       __ cmpdi(CCR0, r_arg_argument_count, 0);
+@@ -326,8 +326,8 @@
+       // T_OBJECT, T_LONG, T_FLOAT, or T_DOUBLE is treated as T_INT.
+       __ cmpwi(CCR0, r_arg_result_type, T_OBJECT);
+       __ cmpwi(CCR1, r_arg_result_type, T_LONG);
+-      __ cmpwi(CCR5,  r_arg_result_type, T_FLOAT);
+-      __ cmpwi(CCR6,  r_arg_result_type, T_DOUBLE);
++      __ cmpwi(CCR5, r_arg_result_type, T_FLOAT);
++      __ cmpwi(CCR6, r_arg_result_type, T_DOUBLE);
+ 
+       // restore non-volatile registers
+       __ restore_nonvolatile_gprs(R1_SP, _spill_nonvolatiles_neg(r14));
+@@ -345,8 +345,8 @@
+ 
+       __ beq(CCR0, ret_is_object);
+       __ beq(CCR1, ret_is_long);
+-      __ beq(CCR5,  ret_is_float);
+-      __ beq(CCR6,  ret_is_double);
++      __ beq(CCR5, ret_is_float);
++      __ beq(CCR6, ret_is_double);
+ 
+       // default:
+       __ stw(R3_RET, 0, r_arg_result_addr);
+@@ -930,9 +930,9 @@
+       __ bind(L_fill_32_bytes);
+     }
+ 
+-    __ li(temp, 8<<shift);              // prepare for 32 byte loop
++    __ li(temp, 8<<shift);                  // prepare for 32 byte loop
+     // clone bytes int->long as above
+-    __ rldimi(value, value, 32, 0);     // 32 bit -> 64 bit
++    __ rldimi(value, value, 32, 0);         // 32 bit -> 64 bit
+ 
+     Label L_check_fill_8_bytes;
+     // Fill 32-byte chunks
+@@ -945,7 +945,7 @@
+ 
+     __ std(value, 0, to);
+     __ std(value, 8, to);
+-    __ subf_(count, temp, count); // update count
++    __ subf_(count, temp, count);           // update count
+     __ std(value, 16, to);
+     __ std(value, 24, to);
+ 
+@@ -997,7 +997,7 @@
+     __ bind(L_exit);
+     __ blr();
+ 
+-    // Handle copies less than 8 bytes.  Int is handled elsewhere.
++    // Handle copies less than 8 bytes. Int is handled elsewhere.
+     if (t == T_BYTE) {
+       __ bind(L_fill_elements);
+       Label L_fill_2, L_fill_4;
+@@ -1039,7 +1039,7 @@
+   }
+ 
+ 
+-  // Generate overlap test for array copy stubs
++  // Generate overlap test for array copy stubs.
+   //
+   // Input:
+   //   R3_ARG1    -  from
+diff -r 02c2c15be7cc src/cpu/ppc/vm/vm_version_ppc.cpp
+--- a/src/cpu/ppc/vm/vm_version_ppc.cpp	Fri Sep 06 09:26:06 2013 +0200
++++ b/src/cpu/ppc/vm/vm_version_ppc.cpp	Fri Sep 06 10:52:30 2013 +0200
+@@ -86,16 +86,17 @@
+ 
+ #ifdef COMPILER2
+   // On Power6 test for section size.
+-  if (PowerArchitecturePPC64 == 6)
++  if (PowerArchitecturePPC64 == 6) {
+     determine_section_size();
+-  // TODO: PPC port else
++  // TODO: PPC port } else {
+   // TODO: PPC port PdScheduling::power6SectorSize = 0x20;
++  }
+ 
+   MaxVectorSize = 8;
+ #endif
+ 
+   // Create and print feature-string.
+-  char buf[(num_features+1) * 16]; // max 16 chars per feature
++  char buf[(num_features+1) * 16]; // Max 16 chars per feature.
+   jio_snprintf(buf, sizeof(buf),
+                "ppc64%s%s%s%s%s%s%s%s",
+                (has_fsqrt()   ? " fsqrt"   : ""),
+@@ -124,21 +125,21 @@
+   if (FLAG_IS_DEFAULT(AllocatePrefetchStyle)) AllocatePrefetchStyle = 1;
+ 
+   if (AllocatePrefetchStyle == 4) {
+-    AllocatePrefetchStepSize = cache_line_size; // need exact value
+-    if (FLAG_IS_DEFAULT(AllocatePrefetchLines)) AllocatePrefetchLines = 12; // use larger blocks by default
+-    if (AllocatePrefetchDistance < 0) AllocatePrefetchDistance = 2*cache_line_size; // default is not defined ?
++    AllocatePrefetchStepSize = cache_line_size; // Need exact value.
++    if (FLAG_IS_DEFAULT(AllocatePrefetchLines)) AllocatePrefetchLines = 12; // Use larger blocks by default.
++    if (AllocatePrefetchDistance < 0) AllocatePrefetchDistance = 2*cache_line_size; // Default is not defined?
+   } else {
+     if (cache_line_size > AllocatePrefetchStepSize) AllocatePrefetchStepSize = cache_line_size;
+-    if (FLAG_IS_DEFAULT(AllocatePrefetchLines)) AllocatePrefetchLines = 3; // Optimistic value
+-    if (AllocatePrefetchDistance < 0) AllocatePrefetchDistance = 3*cache_line_size; // default is not defined ?
++    if (FLAG_IS_DEFAULT(AllocatePrefetchLines)) AllocatePrefetchLines = 3; // Optimistic value.
++    if (AllocatePrefetchDistance < 0) AllocatePrefetchDistance = 3*cache_line_size; // Default is not defined?
+   }
+ 
+   assert(AllocatePrefetchLines > 0, "invalid value");
+   if (AllocatePrefetchLines < 1) // Set valid value in product VM.
+-    AllocatePrefetchLines = 1; // Conservative value
++    AllocatePrefetchLines = 1; // Conservative value.
+ 
+   if (AllocatePrefetchStyle == 3 && AllocatePrefetchDistance < cache_line_size)
+-    AllocatePrefetchStyle = 1; // fall back if inappropriate
++    AllocatePrefetchStyle = 1; // Fall back if inappropriate.
+ 
+   assert(AllocatePrefetchStyle >= 0, "AllocatePrefetchStyle should be positive");
+ }
+@@ -157,13 +158,13 @@
+ 
+   const int code_size = (2* unroll * 32 + 100)*BytesPerInstWord;
+ 
+-  // Allocate space for the code
++  // Allocate space for the code.
+   ResourceMark rm;
+   CodeBuffer cb("detect_section_size", code_size, 0);
+   MacroAssembler* a = new MacroAssembler(&cb);
+ 
+   uint32_t *code = (uint32_t *)a->pc();
+-  // emit code.
++  // Emit code.
+   void (*test1)() = (void(*)())(void *)a->emit_fd();
+ 
+   Label l1;
+@@ -186,58 +187,58 @@
+ 
+     // ;;  1
+     a->nop();                   // 5
+-    a->fmr(F6, F6);     // 6
+-    a->fmr(F7, F7);     // 7
++    a->fmr(F6, F6);             // 6
++    a->fmr(F7, F7);             // 7
+     a->endgroup();              // 8
+     // ------- sector 8 ------------
+ 
+     // ;;  2
+     a->nop();                   // 9
+     a->nop();                   // 10
+-    a->fmr(F8, F8);     // 11
+-    a->fmr(F9, F9);     // 12
++    a->fmr(F8, F8);             // 11
++    a->fmr(F9, F9);             // 12
+ 
+     // ;;  3
+     a->nop();                   // 13
+-    a->fmr(F10, F10);   // 14
+-    a->fmr(F11, F11);   // 15
++    a->fmr(F10, F10);           // 14
++    a->fmr(F11, F11);           // 15
+     a->endgroup();              // 16
+     // -------- sector 16 -------------
+ 
+     // ;;  4
+     a->nop();                   // 17
+     a->nop();                   // 18
+-    a->fmr(F15, F15);   // 19
+-    a->fmr(F16, F16);   // 20
++    a->fmr(F15, F15);           // 19
++    a->fmr(F16, F16);           // 20
+ 
+     // ;;  5
+     a->nop();                   // 21
+-    a->fmr(F17, F17);   // 22
+-    a->fmr(F18, F18);   // 23
++    a->fmr(F17, F17);           // 22
++    a->fmr(F18, F18);           // 23
+     a->endgroup();              // 24
+     // ------- sector 24  ------------
+ 
+     // ;;  6
+     a->nop();                   // 25
+     a->nop();                   // 26
+-    a->fmr(F19, F19);     // 27
+-    a->fmr(F20, F20);     // 28
++    a->fmr(F19, F19);           // 27
++    a->fmr(F20, F20);           // 28
+ 
+     // ;;  7
+     a->nop();                   // 29
+-    a->fmr(F21, F21);   // 30
+-    a->fmr(F22, F22);   // 31
++    a->fmr(F21, F21);           // 30
++    a->fmr(F22, F22);           // 31
+     a->brnop0();                // 32
+ 
+     // ------- sector 32 ------------
+   }
+ 
+   // ;; 8
+-  a->cmpdi(CCR0, R4, unroll);// 33
+-  a->bge(CCR0, l1);         // 34
++  a->cmpdi(CCR0, R4, unroll);   // 33
++  a->bge(CCR0, l1);             // 34
+   a->blr();
+ 
+-  // emit code.
++  // Emit code.
+   void (*test2)() = (void(*)())(void *)a->emit_fd();
+   // uint32_t *code = (uint32_t *)a->pc();
+ 
+@@ -378,40 +379,41 @@
+ }
+ #endif // COMPILER2
+ 
+-void VM_Version::determine_features() {
+-  const int code_size = (num_features+1+2*7)*BytesPerInstWord; // 7 InstWords for each call (function descriptor + blr instruction)
++void VM_Version::determine_features() { 
++  // 7 InstWords for each call (function descriptor + blr instruction).
++  const int code_size = (num_features+1+2*7)*BytesPerInstWord;
+   int features = 0;
+ 
+   // create test area
+-  enum { BUFFER_SIZE = 2*4*K }; // needs to be >=2* max cache line size (cache line size can't exceed min page size)
++  enum { BUFFER_SIZE = 2*4*K }; // Needs to be >=2* max cache line size (cache line size can't exceed min page size).
+   char test_area[BUFFER_SIZE];
+   char *mid_of_test_area = &test_area[BUFFER_SIZE>>1];
+ 
+-  // Allocate space for the code
++  // Allocate space for the code.
+   ResourceMark rm;
+   CodeBuffer cb("detect_cpu_features", code_size, 0);
+   MacroAssembler* a = new MacroAssembler(&cb);
+ 
+-  // emit code.
++  // Emit code.
+   void (*test)(address addr, uint64_t offset)=(void(*)(address addr, uint64_t offset))(void *)a->emit_fd();
+   uint32_t *code = (uint32_t *)a->pc();
+   // Don't use R0 in ldarx.
+-  // keep R3_ARG1 = R3 unmodified, it contains &field (see below)
+-  // keep R4_ARG2 = R4 unmodified, it contains offset = 0 (see below)
+-  a->fsqrt(F3, F4);                         // code[0] -> fsqrt_m
+-  a->isel(R7, R5, R6, 0);                   // code[1] -> isel_m
+-  a->ldarx_unchecked(R7, R3_ARG1, R4_ARG2, 1);// code[2] -> lxarx_m
+-  a->cmpb(R7, R5, R6);                      // code[3] -> bcmp
+-  //a->mftgpr(R7, F3);                      // code[4] -> mftgpr
+-  a->popcntb(R7, R5);                       // code[5] -> popcntb
+-  a->popcntw(R7, R5);                       // code[6] -> popcntw
+-  a->fcfids(F3, F4);                        // code[7] -> fcfids
+-  a->vand(VR0, VR0, VR0);                   // code[8] -> vand
++  // Keep R3_ARG1 unmodified, it contains &field (see below).
++  // Keep R4_ARG2 unmodified, it contains offset = 0 (see below).
++  a->fsqrt(F3, F4);                            // code[0] -> fsqrt_m
++  a->isel(R7, R5, R6, 0);                      // code[1] -> isel_m
++  a->ldarx_unchecked(R7, R3_ARG1, R4_ARG2, 1); // code[2] -> lxarx_m
++  a->cmpb(R7, R5, R6);                         // code[3] -> bcmp
++  //a->mftgpr(R7, F3);                         // code[4] -> mftgpr
++  a->popcntb(R7, R5);                          // code[5] -> popcntb
++  a->popcntw(R7, R5);                          // code[6] -> popcntw
++  a->fcfids(F3, F4);                           // code[7] -> fcfids
++  a->vand(VR0, VR0, VR0);                      // code[8] -> vand
+   a->blr();
+ 
+-  // Emit function to set one cache line to zero
+-  void (*zero_cacheline_func_ptr)(char*) = (void(*)(char*))(void *)a->emit_fd(); // emit function descriptor and get pointer to it
+-  a->dcbz(R3_ARG1); // R3_ARG1 = R3 = addr
++  // Emit function to set one cache line to zero. Emit function descriptor and get pointer to it.
++  void (*zero_cacheline_func_ptr)(char*) = (void(*)(char*))(void *)a->emit_fd();
++  a->dcbz(R3_ARG1); // R3_ARG1 = addr
+   a->blr();
+ 
+   uint32_t *code_end = (uint32_t *)a->pc();
+@@ -425,8 +427,8 @@
+   }
+ 
+   // Measure cache line size.
+-  memset(test_area, 0xFF, BUFFER_SIZE); // fill test area with 0xFF
+-  (*zero_cacheline_func_ptr)(mid_of_test_area); // call function which executes dcbz to the middle
++  memset(test_area, 0xFF, BUFFER_SIZE); // Fill test area with 0xFF.
++  (*zero_cacheline_func_ptr)(mid_of_test_area); // Call function which executes dcbz to the middle.
+   int count = 0; // count zeroed bytes
+   for (int i = 0; i < BUFFER_SIZE; i++) if (test_area[i] == 0) count++;
+   guarantee(is_power_of_2(count), "cache line size needs to be a power of 2");
+diff -r 02c2c15be7cc src/cpu/ppc/vm/vtableStubs_ppc_64.cpp
+--- a/src/cpu/ppc/vm/vtableStubs_ppc_64.cpp	Fri Sep 06 09:26:06 2013 +0200
++++ b/src/cpu/ppc/vm/vtableStubs_ppc_64.cpp	Fri Sep 06 10:52:30 2013 +0200
+@@ -147,7 +147,7 @@
+ 
+   // Entry arguments:
+   //  R19_method: Interface
+-  //  R3_ARG1: Receiver
++  //  R3_ARG1:    Receiver
+   //
+ 
+   const Register rcvr_klass = R11_scratch1;
+@@ -256,9 +256,9 @@
+     return 1000;
+   } else {
+     if (is_vtable_stub) {
+-      return 20 + 16 + 8;    // Plain + (cOops & Traps) + safety
++      return 20 + 16 + 8 + 100;    // Plain + (cOops & Traps) + safety + TODO: new klass decompress
+     } else {
+-      return 16 + 96;
++      return 16 + 96 + 100;  // x + y + TODO: new klass decompress
+     }
+   }
+ }
+diff -r 02c2c15be7cc src/os_cpu/aix_ppc/vm/aix_ppc_64.ad
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/src/os_cpu/aix_ppc/vm/aix_ppc_64.ad	Tue Jul 23 22:05:29 2013 +0200
++++ b/src/os_cpu/aix_ppc/vm/aix_ppc_64.ad	Fri Sep 06 10:52:30 2013 +0200
 @@ -0,0 +1,24 @@
 +//
 +// Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -14083,9 +14752,9 @@
 +// questions.
 +//
 +//
-diff -r 29de6e01e478 src/os_cpu/linux_ppc/vm/linux_ppc_64.ad
+diff -r 02c2c15be7cc src/os_cpu/linux_ppc/vm/linux_ppc_64.ad
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/src/os_cpu/linux_ppc/vm/linux_ppc_64.ad	Tue Jul 23 22:05:29 2013 +0200
++++ b/src/os_cpu/linux_ppc/vm/linux_ppc_64.ad	Fri Sep 06 10:52:30 2013 +0200
 @@ -0,0 +1,24 @@
 +//
 +// Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
@@ -14111,9 +14780,9 @@
 +// questions.
 +//
 +//
-diff -r 29de6e01e478 src/share/vm/adlc/output_h.cpp
---- a/src/share/vm/adlc/output_h.cpp	Tue Jul 23 21:17:13 2013 +0200
-+++ b/src/share/vm/adlc/output_h.cpp	Tue Jul 23 22:05:29 2013 +0200
+diff -r 02c2c15be7cc src/share/vm/adlc/output_h.cpp
+--- a/src/share/vm/adlc/output_h.cpp	Fri Sep 06 09:26:06 2013 +0200
++++ b/src/share/vm/adlc/output_h.cpp	Fri Sep 06 10:52:30 2013 +0200
 @@ -26,7 +26,11 @@
  #include "adlc.hpp"
  
--- a/ppc_patches/0201_C_interpreter-implement_bytecode_profiling.patch	Wed Aug 28 16:09:50 2013 +0000
+++ b/ppc_patches/0201_C_interpreter-implement_bytecode_profiling.patch	Fri Sep 06 11:29:41 2013 +0200
@@ -1,10 +1,10 @@
 # HG changeset patch
-# Parent 0b764df6682c9ba86664f8e4e0ca7d105b74b9f8
+# Parent 513b2a4b16a5f7626999b1053297773ad428d276
 C-interpreter: implement bytecode profiling.
 
-diff -r 0b764df6682c src/cpu/zero/vm/cppInterpreter_zero.cpp
---- a/src/cpu/zero/vm/cppInterpreter_zero.cpp	Tue Jul 09 12:07:58 2013 +0200
-+++ b/src/cpu/zero/vm/cppInterpreter_zero.cpp	Tue Jul 09 12:08:45 2013 +0200
+diff -r 513b2a4b16a5 src/cpu/zero/vm/cppInterpreter_zero.cpp
+--- a/src/cpu/zero/vm/cppInterpreter_zero.cpp	Fri Sep 06 10:52:33 2013 +0200
++++ b/src/cpu/zero/vm/cppInterpreter_zero.cpp	Fri Sep 06 10:52:45 2013 +0200
 @@ -220,7 +220,7 @@
      }
      InvocationCounter *counter = mcs->invocation_counter();
@@ -14,9 +14,9 @@
        CALL_VM_NOCHECK(
          InterpreterRuntime::frequency_counter_overflow(thread, NULL));
        if (HAS_PENDING_EXCEPTION)
-diff -r 0b764df6682c src/share/vm/interpreter/bytecodeInterpreter.cpp
---- a/src/share/vm/interpreter/bytecodeInterpreter.cpp	Tue Jul 09 12:07:58 2013 +0200
-+++ b/src/share/vm/interpreter/bytecodeInterpreter.cpp	Tue Jul 09 12:08:45 2013 +0200
+diff -r 513b2a4b16a5 src/share/vm/interpreter/bytecodeInterpreter.cpp
+--- a/src/share/vm/interpreter/bytecodeInterpreter.cpp	Fri Sep 06 10:52:33 2013 +0200
++++ b/src/share/vm/interpreter/bytecodeInterpreter.cpp	Fri Sep 06 10:52:45 2013 +0200
 @@ -28,6 +28,7 @@
  #include "interpreter/bytecodeHistogram.hpp"
  #include "interpreter/bytecodeInterpreter.hpp"
@@ -658,9 +658,9 @@
      if (illegal_state_oop() != NULL || original_exception() != NULL) {
        // inform the frame manager we have no result
        istate->set_msg(throwing_exception);
-diff -r 0b764df6682c src/share/vm/interpreter/bytecodeInterpreterProfiling.hpp
+diff -r 513b2a4b16a5 src/share/vm/interpreter/bytecodeInterpreterProfiling.hpp
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/src/share/vm/interpreter/bytecodeInterpreterProfiling.hpp	Tue Jul 09 12:08:45 2013 +0200
++++ b/src/share/vm/interpreter/bytecodeInterpreterProfiling.hpp	Fri Sep 06 10:52:45 2013 +0200
 @@ -0,0 +1,308 @@
 +/*
 + * Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved.
@@ -970,9 +970,9 @@
 +#endif // CC_INTERP
 +
 +#endif // SHARE_VM_INTERPRETER_BYTECODECINTERPRETERPROFILING_HPP
-diff -r 0b764df6682c src/share/vm/interpreter/interpreterRuntime.cpp
---- a/src/share/vm/interpreter/interpreterRuntime.cpp	Tue Jul 09 12:07:58 2013 +0200
-+++ b/src/share/vm/interpreter/interpreterRuntime.cpp	Tue Jul 09 12:08:45 2013 +0200
+diff -r 513b2a4b16a5 src/share/vm/interpreter/interpreterRuntime.cpp
+--- a/src/share/vm/interpreter/interpreterRuntime.cpp	Fri Sep 06 10:52:33 2013 +0200
++++ b/src/share/vm/interpreter/interpreterRuntime.cpp	Fri Sep 06 10:52:45 2013 +0200
 @@ -267,6 +267,49 @@
    }
  }
@@ -1023,9 +1023,9 @@
  static Handle get_preinitialized_exception(Klass* k, TRAPS) {
    // get klass
    InstanceKlass* klass = InstanceKlass::cast(k);
-diff -r 0b764df6682c src/share/vm/interpreter/interpreterRuntime.hpp
---- a/src/share/vm/interpreter/interpreterRuntime.hpp	Tue Jul 09 12:07:58 2013 +0200
-+++ b/src/share/vm/interpreter/interpreterRuntime.hpp	Tue Jul 09 12:08:45 2013 +0200
+diff -r 513b2a4b16a5 src/share/vm/interpreter/interpreterRuntime.hpp
+--- a/src/share/vm/interpreter/interpreterRuntime.hpp	Fri Sep 06 10:52:33 2013 +0200
++++ b/src/share/vm/interpreter/interpreterRuntime.hpp	Fri Sep 06 10:52:45 2013 +0200
 @@ -67,6 +67,10 @@
    static ConstantPoolCacheEntry* cache_entry_at(JavaThread *thread, int i)  { return method(thread)->constants()->cache()->entry_at(i); }
    static ConstantPoolCacheEntry* cache_entry(JavaThread *thread)            { return cache_entry_at(thread, Bytes::get_native_u2(bcp(thread) + 1)); }
@@ -1037,8 +1037,8 @@
  
    // Inner work method for Interpreter's frequency counter overflow
    static nmethod* frequency_counter_overflow_inner(JavaThread* thread, address branch_bcp);
-@@ -97,6 +101,17 @@
-   static address exception_handler_for_exception(JavaThread* thread, oopDesc* exception);
+@@ -100,6 +104,17 @@
+ #endif
    static void    throw_pending_exception(JavaThread* thread);
  
 +#ifdef CC_INTERP
@@ -1055,9 +1055,9 @@
    // Statics & fields
    static void    resolve_get_put(JavaThread* thread, Bytecodes::Code bytecode);
  
-diff -r 0b764df6682c src/share/vm/interpreter/invocationCounter.hpp
---- a/src/share/vm/interpreter/invocationCounter.hpp	Tue Jul 09 12:07:58 2013 +0200
-+++ b/src/share/vm/interpreter/invocationCounter.hpp	Tue Jul 09 12:08:45 2013 +0200
+diff -r 513b2a4b16a5 src/share/vm/interpreter/invocationCounter.hpp
+--- a/src/share/vm/interpreter/invocationCounter.hpp	Fri Sep 06 10:52:33 2013 +0200
++++ b/src/share/vm/interpreter/invocationCounter.hpp	Fri Sep 06 10:52:45 2013 +0200
 @@ -101,13 +101,17 @@
  
    // Test counter using scaled limits like the asm interpreter would do rather than doing
@@ -1081,9 +1081,9 @@
    }
  
    void increment()                               { _counter += count_increment; }
-diff -r 0b764df6682c src/share/vm/oops/methodData.cpp
---- a/src/share/vm/oops/methodData.cpp	Tue Jul 09 12:07:58 2013 +0200
-+++ b/src/share/vm/oops/methodData.cpp	Tue Jul 09 12:08:45 2013 +0200
+diff -r 513b2a4b16a5 src/share/vm/oops/methodData.cpp
+--- a/src/share/vm/oops/methodData.cpp	Fri Sep 06 10:52:33 2013 +0200
++++ b/src/share/vm/oops/methodData.cpp	Fri Sep 06 10:52:45 2013 +0200
 @@ -244,6 +244,11 @@
    return mdp;
  }
@@ -1096,9 +1096,9 @@
  
  #ifndef PRODUCT
  void RetData::print_data_on(outputStream* st) {
-diff -r 0b764df6682c src/share/vm/oops/methodData.hpp
---- a/src/share/vm/oops/methodData.hpp	Tue Jul 09 12:07:58 2013 +0200
-+++ b/src/share/vm/oops/methodData.hpp	Tue Jul 09 12:08:45 2013 +0200
+diff -r 513b2a4b16a5 src/share/vm/oops/methodData.hpp
+--- a/src/share/vm/oops/methodData.hpp	Fri Sep 06 10:52:33 2013 +0200
++++ b/src/share/vm/oops/methodData.hpp	Fri Sep 06 10:52:45 2013 +0200
 @@ -225,6 +225,11 @@
    static ByteSize cell_offset(int index) {
      return byte_offset_of(DataLayout, _cells) + in_ByteSize(index * cell_size);
@@ -1376,10 +1376,10 @@
  private:
    friend class ProfileData;
  
-diff -r 0b764df6682c src/share/vm/runtime/arguments.cpp
---- a/src/share/vm/runtime/arguments.cpp	Tue Jul 09 12:07:58 2013 +0200
-+++ b/src/share/vm/runtime/arguments.cpp	Tue Jul 09 12:08:45 2013 +0200
-@@ -3579,12 +3579,9 @@
+diff -r 513b2a4b16a5 src/share/vm/runtime/arguments.cpp
+--- a/src/share/vm/runtime/arguments.cpp	Fri Sep 06 10:52:33 2013 +0200
++++ b/src/share/vm/runtime/arguments.cpp	Fri Sep 06 10:52:45 2013 +0200
+@@ -3597,12 +3597,9 @@
    FLAG_SET_DEFAULT(UseBiasedLocking, false);
    LP64_ONLY(FLAG_SET_DEFAULT(UseCompressedOops, false));
    LP64_ONLY(FLAG_SET_DEFAULT(UseCompressedKlassPointers, false));
@@ -1393,10 +1393,10 @@
  #ifdef COMPILER2
    if (!UseBiasedLocking || EmitSync != 0) {
      UseOptoBiasInlining = false;
-diff -r 0b764df6682c src/share/vm/runtime/globals.hpp
---- a/src/share/vm/runtime/globals.hpp	Tue Jul 09 12:07:58 2013 +0200
-+++ b/src/share/vm/runtime/globals.hpp	Tue Jul 09 12:08:45 2013 +0200
-@@ -2712,6 +2712,9 @@
+diff -r 513b2a4b16a5 src/share/vm/runtime/globals.hpp
+--- a/src/share/vm/runtime/globals.hpp	Fri Sep 06 10:52:33 2013 +0200
++++ b/src/share/vm/runtime/globals.hpp	Fri Sep 06 10:52:45 2013 +0200
+@@ -2728,6 +2728,9 @@
    product_pd(bool, ProfileInterpreter,                                      \
             "Profile at the bytecode level during interpretation")           \
                                                                              \
--- a/ppc_patches/0208_rt-improve_handling_of_memory_ordering_in_taskqueue_hpp.patch	Wed Aug 28 16:09:50 2013 +0000
+++ b/ppc_patches/0208_rt-improve_handling_of_memory_ordering_in_taskqueue_hpp.patch	Fri Sep 06 11:29:41 2013 +0200
@@ -3,9 +3,6 @@
 8006971 rt: Improve handling of memory ordering in taskqueue.hpp.
 
 The current implementation does not work on PPC.
- - fix problem ordering accesses to _bottom:
-   Pop_global not always reads the most recent value written
-   by pop_local.
  - Add workaround for AIX.  On Aix the second call to _age.top()
    in pop_local is optimized away in some cases.  Depends on where
    and how it is inlined.
@@ -843,21 +840,3 @@
  #ifndef SHARE_VM_UTILITIES_TASKQUEUE_HPP
  #define SHARE_VM_UTILITIES_TASKQUEUE_HPP
  
-@@ -393,7 +398,16 @@
- template<class E, MEMFLAGS F, unsigned int N>
- bool GenericTaskQueue<E, F, N>::pop_global(E& t) {
-   Age oldAge = _age.get();
--  uint localBot = _bottom;
-+
-+  // Architectures with weak memory model require a fence here. The
-+  // fence has a cumulative effect on getting age and getting bottom.
-+  // This way it is guaranteed that bottom is not older than age,
-+  // what is crucial for the correctness of the algorithm.
-+#if (defined ARM || defined IA64 || defined PPC64)
-+  OrderAccess::fence();
-+#endif
-+
-+  uint localBot = OrderAccess::load_acquire((volatile juint*)&_bottom);
-   uint n_elems = size(localBot, oldAge.top());
-   if (n_elems == 0) {
-     return false;
--- a/ppc_patches/0215_opto-extend_ImplicitNullCheck_optimizations.patch	Wed Aug 28 16:09:50 2013 +0000
+++ b/ppc_patches/0215_opto-extend_ImplicitNullCheck_optimizations.patch	Fri Sep 06 11:29:41 2013 +0200
@@ -1,5 +1,5 @@
 # HG changeset patch
-# Parent 1b768544fe04262d39324aef994c27b1c6acb96b
+# Parent bc4df45fc95f500f801fa08df93226dce027ef8a
 opto: Extend ImplicitNullCheck optimizations.
 
 ImplicitNullChecks did not work on platforms where the zero
@@ -9,9 +9,9 @@
 this property is not true.
 This is needed on AIX.
 
-diff -r 1b768544fe04 src/cpu/ppc/vm/globals_ppc.hpp
---- a/src/cpu/ppc/vm/globals_ppc.hpp	Tue Jul 23 22:13:29 2013 +0200
-+++ b/src/cpu/ppc/vm/globals_ppc.hpp	Tue Jul 23 22:40:29 2013 +0200
+diff -r bc4df45fc95f src/cpu/ppc/vm/globals_ppc.hpp
+--- a/src/cpu/ppc/vm/globals_ppc.hpp	Fri Sep 06 11:03:20 2013 +0200
++++ b/src/cpu/ppc/vm/globals_ppc.hpp	Fri Sep 06 11:03:30 2013 +0200
 @@ -106,7 +106,7 @@
    /* Trap based checks use the ppc trap instructions to check certain */    \
    /* conditions. This instruction raises a SIGTRAP caught by the      */    \
@@ -21,10 +21,10 @@
            "Allow trap instructions that make use of SIGTRAP. Use this to "  \
            "switch off all optimizations requiring SIGTRAP.")                \
    product(bool, TrapBasedICMissChecks, true,                                \
-diff -r 1b768544fe04 src/cpu/ppc/vm/macroAssembler_ppc.cpp
---- a/src/cpu/ppc/vm/macroAssembler_ppc.cpp	Tue Jul 23 22:13:29 2013 +0200
-+++ b/src/cpu/ppc/vm/macroAssembler_ppc.cpp	Tue Jul 23 22:40:29 2013 +0200
-@@ -2431,7 +2431,7 @@
+diff -r bc4df45fc95f src/cpu/ppc/vm/macroAssembler_ppc.cpp
+--- a/src/cpu/ppc/vm/macroAssembler_ppc.cpp	Fri Sep 06 11:03:20 2013 +0200
++++ b/src/cpu/ppc/vm/macroAssembler_ppc.cpp	Fri Sep 06 11:03:30 2013 +0200
+@@ -2421,7 +2421,7 @@
  }
  
  void MacroAssembler::load_klass_with_trap_null_check(Register dst, Register src) {
@@ -33,9 +33,9 @@
      if (TrapBasedNullChecks) {
        trap_null_check(src);
      }
-diff -r 1b768544fe04 src/cpu/ppc/vm/macroAssembler_ppc.inline.hpp
---- a/src/cpu/ppc/vm/macroAssembler_ppc.inline.hpp	Tue Jul 23 22:13:29 2013 +0200
-+++ b/src/cpu/ppc/vm/macroAssembler_ppc.inline.hpp	Tue Jul 23 22:40:29 2013 +0200
+diff -r bc4df45fc95f src/cpu/ppc/vm/macroAssembler_ppc.inline.hpp
+--- a/src/cpu/ppc/vm/macroAssembler_ppc.inline.hpp	Fri Sep 06 11:03:20 2013 +0200
++++ b/src/cpu/ppc/vm/macroAssembler_ppc.inline.hpp	Fri Sep 06 11:03:30 2013 +0200
 @@ -269,7 +269,7 @@
  // No support for compressed oops (base page of heap).  Does not distinguish
  // loads and stores.
@@ -57,16 +57,16 @@
 @@ -297,7 +297,7 @@
  // Attention: No null check for loaded uncompressed OOP. Can be used for loading klass field.
  inline void MacroAssembler::load_heap_oop_with_trap_null_check(Register d, RegisterOrConstant si16,
-                                                                    Register s1) {
+                                                                Register s1) {
 -  if ( NOT_LINUX(true)LINUX_ONLY(false) /*!os::zero_page_read_protected()*/) {
 +  if (!os::zero_page_read_protected()) {
      if (TrapBasedNullChecks) {
        trap_null_check(s1);
      }
-diff -r 1b768544fe04 src/cpu/ppc/vm/ppc.ad
---- a/src/cpu/ppc/vm/ppc.ad	Tue Jul 23 22:13:29 2013 +0200
-+++ b/src/cpu/ppc/vm/ppc.ad	Tue Jul 23 22:40:29 2013 +0200
-@@ -2080,7 +2080,7 @@
+diff -r bc4df45fc95f src/cpu/ppc/vm/ppc.ad
+--- a/src/cpu/ppc/vm/ppc.ad	Fri Sep 06 11:03:20 2013 +0200
++++ b/src/cpu/ppc/vm/ppc.ad	Fri Sep 06 11:03:30 2013 +0200
+@@ -2079,7 +2079,7 @@
    assert(R11_scratch1 == R11, "need prologue scratch register");
  
    // Check for NULL argument if we don't have implicit null checks.
@@ -75,9 +75,9 @@
      if (TrapBasedNullChecks) {
        __ trap_null_check(R3_ARG1);
      } else {
-diff -r 1b768544fe04 src/cpu/ppc/vm/sharedRuntime_ppc.cpp
---- a/src/cpu/ppc/vm/sharedRuntime_ppc.cpp	Tue Jul 23 22:13:29 2013 +0200
-+++ b/src/cpu/ppc/vm/sharedRuntime_ppc.cpp	Tue Jul 23 22:40:29 2013 +0200
+diff -r bc4df45fc95f src/cpu/ppc/vm/sharedRuntime_ppc.cpp
+--- a/src/cpu/ppc/vm/sharedRuntime_ppc.cpp	Fri Sep 06 11:03:20 2013 +0200
++++ b/src/cpu/ppc/vm/sharedRuntime_ppc.cpp	Fri Sep 06 11:03:30 2013 +0200
 @@ -1134,7 +1134,7 @@
    assert(!MacroAssembler::needs_explicit_null_check(oopDesc::klass_offset_in_bytes()),
           "klass offset should reach into any page");
@@ -87,9 +87,9 @@
      if (TrapBasedNullChecks) {
        __ trap_null_check(R3_ARG1);
      } else {
-diff -r 1b768544fe04 src/cpu/ppc/vm/vtableStubs_ppc_64.cpp
---- a/src/cpu/ppc/vm/vtableStubs_ppc_64.cpp	Tue Jul 23 22:13:29 2013 +0200
-+++ b/src/cpu/ppc/vm/vtableStubs_ppc_64.cpp	Tue Jul 23 22:40:29 2013 +0200
+diff -r bc4df45fc95f src/cpu/ppc/vm/vtableStubs_ppc_64.cpp
+--- a/src/cpu/ppc/vm/vtableStubs_ppc_64.cpp	Fri Sep 06 11:03:20 2013 +0200
++++ b/src/cpu/ppc/vm/vtableStubs_ppc_64.cpp	Fri Sep 06 11:03:30 2013 +0200
 @@ -221,7 +221,7 @@
  
    // Must do an explicit check if implicit checks are disabled.
@@ -99,9 +99,9 @@
      if (TrapBasedNullChecks) {
        __ trap_null_check(R19_method);
      } else {
-diff -r 1b768544fe04 src/os/bsd/vm/os_bsd.hpp
---- a/src/os/bsd/vm/os_bsd.hpp	Tue Jul 23 22:13:29 2013 +0200
-+++ b/src/os/bsd/vm/os_bsd.hpp	Tue Jul 23 22:40:29 2013 +0200
+diff -r bc4df45fc95f src/os/bsd/vm/os_bsd.hpp
+--- a/src/os/bsd/vm/os_bsd.hpp	Fri Sep 06 11:03:20 2013 +0200
++++ b/src/os/bsd/vm/os_bsd.hpp	Fri Sep 06 11:03:30 2013 +0200
 @@ -27,6 +27,9 @@
  
  // Bsd_OS defines the interface to Bsd operating systems
@@ -112,9 +112,9 @@
  /* pthread_getattr_np comes with BsdThreads-0.9-7 on RedHat 7.1 */
  typedef int (*pthread_getattr_func_type) (pthread_t, pthread_attr_t *);
  
-diff -r 1b768544fe04 src/os/linux/vm/os_linux.hpp
---- a/src/os/linux/vm/os_linux.hpp	Tue Jul 23 22:13:29 2013 +0200
-+++ b/src/os/linux/vm/os_linux.hpp	Tue Jul 23 22:40:29 2013 +0200
+diff -r bc4df45fc95f src/os/linux/vm/os_linux.hpp
+--- a/src/os/linux/vm/os_linux.hpp	Fri Sep 06 11:03:20 2013 +0200
++++ b/src/os/linux/vm/os_linux.hpp	Fri Sep 06 11:03:30 2013 +0200
 @@ -30,6 +30,9 @@
  /* pthread_getattr_np comes with LinuxThreads-0.9-7 on RedHat 7.1 */
  typedef int (*pthread_getattr_func_type) (pthread_t, pthread_attr_t *);
@@ -124,10 +124,10 @@
 +
  class Linux {
    friend class os;
- 
-diff -r 1b768544fe04 src/os/solaris/vm/os_solaris.hpp
---- a/src/os/solaris/vm/os_solaris.hpp	Tue Jul 23 22:13:29 2013 +0200
-+++ b/src/os/solaris/vm/os_solaris.hpp	Tue Jul 23 22:40:29 2013 +0200
+   friend class TestReserveMemorySpecial;
+diff -r bc4df45fc95f src/os/solaris/vm/os_solaris.hpp
+--- a/src/os/solaris/vm/os_solaris.hpp	Fri Sep 06 11:03:20 2013 +0200
++++ b/src/os/solaris/vm/os_solaris.hpp	Fri Sep 06 11:03:30 2013 +0200
 @@ -27,6 +27,9 @@
  
  // Solaris_OS defines the interface to Solaris operating systems
@@ -138,9 +138,9 @@
  class Solaris {
    friend class os;
  
-diff -r 1b768544fe04 src/os/windows/vm/os_windows.hpp
---- a/src/os/windows/vm/os_windows.hpp	Tue Jul 23 22:13:29 2013 +0200
-+++ b/src/os/windows/vm/os_windows.hpp	Tue Jul 23 22:40:29 2013 +0200
+diff -r bc4df45fc95f src/os/windows/vm/os_windows.hpp
+--- a/src/os/windows/vm/os_windows.hpp	Fri Sep 06 11:03:20 2013 +0200
++++ b/src/os/windows/vm/os_windows.hpp	Fri Sep 06 11:03:30 2013 +0200
 @@ -26,6 +26,9 @@
  #define OS_WINDOWS_VM_OS_WINDOWS_HPP
  // Win32_OS defines the interface to windows operating systems
@@ -151,9 +151,9 @@
  class win32 {
    friend class os;
  
-diff -r 1b768544fe04 src/share/vm/opto/callGenerator.cpp
---- a/src/share/vm/opto/callGenerator.cpp	Tue Jul 23 22:13:29 2013 +0200
-+++ b/src/share/vm/opto/callGenerator.cpp	Tue Jul 23 22:40:29 2013 +0200
+diff -r bc4df45fc95f src/share/vm/opto/callGenerator.cpp
+--- a/src/share/vm/opto/callGenerator.cpp	Fri Sep 06 11:03:20 2013 +0200
++++ b/src/share/vm/opto/callGenerator.cpp	Fri Sep 06 11:03:30 2013 +0200
 @@ -201,7 +201,7 @@
    // Block::implicit_null_check() only looks for loads and stores, not calls.
    ciMethod *caller = kit.method();
@@ -163,9 +163,9 @@
         ((ImplicitNullCheckThreshold > 0) && caller_md &&
         (caller_md->trap_count(Deoptimization::Reason_null_check)
         >= (uint)ImplicitNullCheckThreshold))) {
-diff -r 1b768544fe04 src/share/vm/opto/lcm.cpp
---- a/src/share/vm/opto/lcm.cpp	Tue Jul 23 22:13:29 2013 +0200
-+++ b/src/share/vm/opto/lcm.cpp	Tue Jul 23 22:40:29 2013 +0200
+diff -r bc4df45fc95f src/share/vm/opto/lcm.cpp
+--- a/src/share/vm/opto/lcm.cpp	Fri Sep 06 11:03:20 2013 +0200
++++ b/src/share/vm/opto/lcm.cpp	Fri Sep 06 11:03:30 2013 +0200
 @@ -54,6 +54,28 @@
  
  // Optimization - Graph Style
--- a/ppc_patches/0216_opto-trap_based_null_and_range_checks.patch	Wed Aug 28 16:09:50 2013 +0000
+++ b/ppc_patches/0216_opto-trap_based_null_and_range_checks.patch	Fri Sep 06 11:29:41 2013 +0200
@@ -196,25 +196,22 @@
    }
    return false;
  }
-@@ -740,26 +742,85 @@
- 
-     // Check for multi-way branches where I cannot negate the test to
+@@ -729,24 +731,83 @@
      // exchange the true and false targets.
--    if( no_flip_branch( b ) ) {
-+    if (no_flip_branch(b)) {
+     if (no_flip_branch(block)) {
        // Find fall through case - if must fall into its target
 +      // Get the index of the branch's first successor.
-       int branch_idx = b->_nodes.size() - b->_num_succs;
--      for (uint j2 = 0; j2 < b->_num_succs; j2++) {
--        const ProjNode* p = b->_nodes[branch_idx + j2]->as_Proj();
+       int branch_idx = block->_nodes.size() - block->_num_succs;
+-      for (uint j2 = 0; j2 < block->_num_succs; j2++) {
+-        const ProjNode* p = block->_nodes[branch_idx + j2]->as_Proj();
 -        if (p->_con == 0) {
 -          // successor j2 is fall through case
--          if (b->non_connector_successor(j2) != bnext) {
+-          if (block->non_connector_successor(j2) != bnext) {
 -            // but it is not the next block => insert a goto
 -            insert_goto_at(i, j2);
 +
 +      // The branch is 1 before the branch's first successor.
-+      Node *bra = b->_nodes[branch_idx-1];
++      Node *bra = block->_nodes[branch_idx-1];
 +
 +      // Handle no-flip branches which have implicit checks and which require
 +      // special block ordering and individual semantics of the 'fall through
@@ -224,18 +221,18 @@
 +        // PROB_ALWAYS.
 +        // They should be an If with 2 successors.
 +        assert(bra->is_MachIf(),   "must be If");
-+        assert(b->_num_succs == 2, "must have 2 successors");
++        assert(block->_num_succs == 2, "must have 2 successors");
 +
 +        // Get the If node and the projection for the first successor.
-+        MachIfNode *iff   = b->_nodes[b->_nodes.size()-3]->as_MachIf();
-+        ProjNode   *proj0 = b->_nodes[b->_nodes.size()-2]->as_Proj();
-+        ProjNode   *proj1 = b->_nodes[b->_nodes.size()-1]->as_Proj();
++        MachIfNode *iff   = block->_nodes[block->_nodes.size()-3]->as_MachIf();
++        ProjNode   *proj0 = block->_nodes[block->_nodes.size()-2]->as_Proj();
++        ProjNode   *proj1 = block->_nodes[block->_nodes.size()-1]->as_Proj();
 +        ProjNode   *projt = (proj0->Opcode() == Op_IfTrue)  ? proj0 : proj1;
 +        ProjNode   *projf = (proj0->Opcode() == Op_IfFalse) ? proj0 : proj1;
 +
 +        // Assert that proj0 and succs[0] match up. Similarly for proj1 and succs[1].
-+        assert(proj0->raw_out(0) == b->_succs[0]->head(), "Mismatch successor 0");
-+        assert(proj1->raw_out(0) == b->_succs[1]->head(), "Mismatch successor 1");
++        assert(proj0->raw_out(0) == block->_succs[0]->head(), "Mismatch successor 0");
++        assert(proj1->raw_out(0) == block->_succs[1]->head(), "Mismatch successor 1");
 +
 +        ProjNode *proj_always;
 +        ProjNode *proj_never;
@@ -255,11 +252,11 @@
 +        }
 +        assert(iff->_prob <= 2*PROB_NEVER, "Trap based checks are expected to trap never!");
 +        // Map the successors properly
-+        b->_succs.map(0, _bbs[proj_never ->raw_out(0)->_idx]);   // The target of the trap.
-+        b->_succs.map(1, _bbs[proj_always->raw_out(0)->_idx]);   // The fall through target.
++        block->_succs.map(0, get_block_for_node(proj_never ->raw_out(0)));   // The target of the trap.
++        block->_succs.map(1, get_block_for_node(proj_always->raw_out(0)));   // The fall through target.
 +
 +        // Place the fall through block after this block.
-+        Block *bs1 = b->non_connector_successor(1);
++        Block *bs1 = block->non_connector_successor(1);
 +        if (bs1 != bnext && move_to_next(bs1, i)) {
 +          bnext = bs1;
 +        }
@@ -269,36 +266,36 @@
 +        }
 +      } else {
 +        // Else, default handling for no-flip branches
-+        for (uint j2 = 0; j2 < b->_num_succs; j2++) {
-+          const ProjNode* p = b->_nodes[branch_idx + j2]->as_Proj();
++        for (uint j2 = 0; j2 < block->_num_succs; j2++) {
++          const ProjNode* p = block->_nodes[branch_idx + j2]->as_Proj();
 +          if (p->_con == 0) {
 +            // successor j2 is fall through case
-+            if (b->non_connector_successor(j2) != bnext) {
++            if (block->non_connector_successor(j2) != bnext) {
 +              // but it is not the next block => insert a goto
 +              insert_goto_at(i, j2);
 +            }
 +            // Put taken branch in slot 0
-+            if (j2 == 0 && b->_num_succs == 2) {
++            if (j2 == 0 && block->_num_succs == 2) {
 +              // Flip targets in succs map
-+              Block *tbs0 = b->_succs[0];
-+              Block *tbs1 = b->_succs[1];
-+              b->_succs.map(0, tbs1);
-+              b->_succs.map(1, tbs0);
++              Block *tbs0 = block->_succs[0];
++              Block *tbs1 = block->_succs[1];
++              block->_succs.map(0, tbs1);
++              block->_succs.map(1, tbs0);
 +            }
 +            break;
            }
 -          // Put taken branch in slot 0
--          if( j2 == 0 && b->_num_succs == 2) {
+-          if (j2 == 0 && block->_num_succs == 2) {
 -            // Flip targets in succs map
--            Block *tbs0 = b->_succs[0];
--            Block *tbs1 = b->_succs[1];
--            b->_succs.map( 0, tbs1 );
--            b->_succs.map( 1, tbs0 );
+-            Block *tbs0 = block->_succs[0];
+-            Block *tbs1 = block->_succs[1];
+-            block->_succs.map(0, tbs1);
+-            block->_succs.map(1, tbs0);
 -          }
 -          break;
          }
        }
-       // Remove all CatchProjs
+ 
 diff -r beb4e9dc8933 src/share/vm/opto/node.hpp
 --- a/src/share/vm/opto/node.hpp	Tue Jul 23 22:27:48 2013 +0200
 +++ b/src/share/vm/opto/node.hpp	Tue Jul 23 22:38:32 2013 +0200
@@ -328,13 +325,13 @@
        }
  
        // Verify that there is sufficient space remaining
-@@ -1729,6 +1735,12 @@
-       _inc_table.append( inct_starts[inct_cnt++], blk_labels[block_num].loc_pos() );
+@@ -1730,6 +1736,12 @@
+       _inc_table.append(inct_starts[inct_cnt++], blk_labels[block_num].loc_pos());
        continue;
      }
 +    // Handle implicit exception table updates: trap instructions.
 +    if (n->is_TrapBasedCheckNode()) {
-+      uint block_num = b->non_connector_successor(0)->_pre_order;
++      uint block_num = block->non_connector_successor(0)->_pre_order;
 +      _inc_table.append(inct_starts[inct_cnt++], blk_labels[block_num].loc_pos());
 +      continue;
 +    }
--- a/ppc_patches/series	Wed Aug 28 16:09:50 2013 +0000
+++ b/ppc_patches/series	Fri Sep 06 11:29:41 2013 +0200
@@ -1,6 +1,4 @@
-0009_linux_ppc_files.patch
-0012_rt-ppc_enable_better_implicit_null_check-posix.patch
-0013_basic_Aix_adaptions.patch
+0011-2_Adapt_PPC_to_8003424.patch
 0013-2_Avoid_new_array_problem.patch
 0014_aix_make_changes.patch
 0015_aix_ppc_files.patch