/hg/release/icedtea7-forest-2.4/hotspot: 46 new changesets
andrew at icedtea.classpath.org
andrew at icedtea.classpath.org
Mon Mar 17 14:26:32 UTC 2014
changeset 5ad2c8650812 in /hg/release/icedtea7-forest-2.4/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.4/hotspot?cmd=changeset;node=5ad2c8650812
author: dsamersoff
date: Thu Aug 29 21:48:23 2013 +0400
8009062: poor performance of JNI AttachCurrentThread after fix for 7017193
Summary: don't re-evaluate stack bounds for main thread before install guard page
Reviewed-by: coleenp, dholmes, dlong
changeset 195056251b69 in /hg/release/icedtea7-forest-2.4/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.4/hotspot?cmd=changeset;node=195056251b69
author: aph
date: Thu Mar 15 07:56:24 2012 -0400
Add patches/arm.patch from IcedTea 6
changeset 8f0c2e1287f5 in /hg/release/icedtea7-forest-2.4/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.4/hotspot?cmd=changeset;node=8f0c2e1287f5
author: aph
date: Thu Mar 15 07:57:19 2012 -0400
Add patches/arm-debug.patch from IcedTea 6
changeset 1053216103e0 in /hg/release/icedtea7-forest-2.4/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.4/hotspot?cmd=changeset;node=1053216103e0
author: andrew
date: Fri Jul 12 20:03:52 2013 +0100
Add patches/arm-hsdis.patch from IcedTea 6
changeset 3dc977fbd5d1 in /hg/release/icedtea7-forest-2.4/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.4/hotspot?cmd=changeset;node=3dc977fbd5d1
author: aph
date: Thu Mar 15 07:53:52 2012 -0400
Add arm_port from IcedTea 6
changeset b7beff851ea6 in /hg/release/icedtea7-forest-2.4/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.4/hotspot?cmd=changeset;node=b7beff851ea6
author: aph
date: Thu Mar 15 08:54:12 2012 -0400
Move arm-port files to the correct place
changeset 2e40cd792106 in /hg/release/icedtea7-forest-2.4/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.4/hotspot?cmd=changeset;node=2e40cd792106
author: aph
date: Fri Jul 12 20:10:45 2013 +0100
Changes for HSX22
changeset 1998ca2209d4 in /hg/release/icedtea7-forest-2.4/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.4/hotspot?cmd=changeset;node=1998ca2209d4
author: aph
date: Fri Mar 16 08:36:04 2012 -0400
Use unified syntax for thumb code.
2012-03-16 Andrew Haley <aph at redhat.com>
* hotspot/src/cpu/zero/vm/arm_cas.S: Use unified syntax
for thumb code.
changeset de4a0e6323f9 in /hg/release/icedtea7-forest-2.4/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.4/hotspot?cmd=changeset;node=de4a0e6323f9
author: aph
date: Tue Mar 27 09:40:08 2012 -0400
ARM: First cut of invokedynamic
changeset aa1f60fceb35 in /hg/release/icedtea7-forest-2.4/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.4/hotspot?cmd=changeset;node=aa1f60fceb35
author: aph
date: Fri Mar 30 11:53:01 2012 -0400
invokedynamic and aldc for JIT
changeset 7c433abda0ff in /hg/release/icedtea7-forest-2.4/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.4/hotspot?cmd=changeset;node=7c433abda0ff
author: aph
date: Fri Mar 30 13:34:30 2012 -0400
ARM: JIT-compilation of ldc methodHandle
changeset aad627c854be in /hg/release/icedtea7-forest-2.4/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.4/hotspot?cmd=changeset;node=aad627c854be
author: aph
date: Tue Apr 10 12:22:01 2012 -0400
Tidy up, minor comment changes.
changeset 0cfce4cddb95 in /hg/release/icedtea7-forest-2.4/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.4/hotspot?cmd=changeset;node=0cfce4cddb95
author: aph
date: Wed Apr 11 09:22:39 2012 -0400
Minor review cleanups.
changeset 31c0b70bdafe in /hg/release/icedtea7-forest-2.4/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.4/hotspot?cmd=changeset;node=31c0b70bdafe
author: adinn
date: Fri Jul 12 20:17:38 2013 +0100
added jvmti event generation for dynamic_generate and compiled_method_load events to ARM JIT compiler
changeset 5952f579380f in /hg/release/icedtea7-forest-2.4/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.4/hotspot?cmd=changeset;node=5952f579380f
author: adinn
date: Fri Jul 12 20:20:10 2013 +0100
patched method handle adapter code to deal with failures in TCK
changeset f056bda687ee in /hg/release/icedtea7-forest-2.4/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.4/hotspot?cmd=changeset;node=f056bda687ee
author: adinn
date: Wed May 16 11:21:07 2012 +0100
modified safepoint check to rely on memory protect signal instead of polling
changeset 185c8d8de125 in /hg/release/icedtea7-forest-2.4/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.4/hotspot?cmd=changeset;node=185c8d8de125
author: aph
date: Thu May 17 13:45:50 2012 -0400
RTC Thumb2 JIT enhancements.
2012-05-16 Andrew Haley <aph at redhat.com>
* src/cpu/zero/vm/thumb2.cpp:
Throughout: T2EE_PRINT_* renamed to T2_PRINT_*.
Route all debug info to stderr.
We now do frameless compilation, so do all frame accesses relative
to SP.
Remove zombie detection pass.
Remove dead code.
Add OSPACE option.
(H_LDC_W)
(H_INVOKESTATIC_RESOLVED, H_INVOKESPECIAL_RESOLVED)
(H_INVOKEVIRTUAL_RESOLVED, H_INVOKEVFINAL, H_MONITORENTER)
(H_MONITOREXIT): New.
(T2_* macros): Rename from T2EE_*.
(SLOW_ENTRY_OFFSET, FAST_ENTRY_OFFSET): New.
(THUMB2_CODEBUF_SIZE): Make this depend on PRODUCT.
(H_GETSTATIC, H_PUTSTATIC, H_JSR, H_ZOMBIE, H_MONITOR): Delete.
(H_DEADCODE, H_LDC_W, H_INVOKESTATIC_RESOLVED)
(H_INVOKESPECIAL_RESOLVED, H_INVOKEVIRTUAL_RESOLVED)
(H_INVOKEVFINAL): New.
(DebugSwitch): New.
(JAZ_V6): New local register.
(Thumb2_pass1): Count reads and writes for register allocator.
Delete zombie detection pass.
(Thumb2_RegAlloc): New.
(out_align, out_align_offset, nop_16, nop_32): New.
(fullBarrier, storeBarrier): Chaeck for an MP OS.
(load_local, store_local): Check for an istate reg.
(load_istate, store_istate): New.
(Thumb2_Load, Thumb2_LoadX2): Remove monitor stack adj.
(Thumb2_Store, Thumb2_StoreX2): Likewise.
(Debug): New.
(Thumb2_save_locals, Thumb2_restore_locals, Thumb2_invoke_save)
(Thumb2_invoke_restore, Thumb2_Exit): Remove monitor stackdepth
adj. Move here from below.
(Thumb2_Accessor): Rewrite for new method header layout.
(Thumb2_Enter): Likewise.
Do frameless setup.
(Thumb2_load_long): Use a single ldrexd instruction.
(Thumb2_codegen): Align branches.
Call Debug if we're about to enter a synchronized method.
(opc_jsr) Add handler.
(opc_monitorenter, opc_monitorexit): Call handler instead of
generating code.
(Thumb2_Initialize): Disassmble ARM and Thumb code separately.
* src/cpu/zero/vm/cppInterpreter_arm.S:
Throughout: the thread pointer is now in a register, so use it
everywhere. Set the thread pointer register at every entry point
to the interpreter.
Throughout: use the macros SLOW_ENTRY and FAST_ENTRY rather than
ALIGN_CODE.
Throughout: register tmp2 is no longer available, use other
registers as appropriate.
(T2JIT): Rename from THUMB2EE.
(call_thumb2): Load all the thumb2 registers that have been
allocated to locals.
(accessor_entry): Check for stack overflow.
(.fast_accessor_*): Delete dead code.
(LOAD_FRAME): New.
(Thumb2_invokevfinalresolved_stub)
(Thumb2_invokevirtualresolved_stub): New.
(Thumb2_invokestaticresolved_stub): New.
(Thumb2_invokespecialresolved_stub): New.
(Thumb2 stubs): Use FRAME_* rather than ISTATE_*; the frame
pointer is no longer in a fixed register.
(JAZ_REGSET, JAZ_*): Move delaration of JAZ registers here.
(Thumb2_monitorenter): New.
(normal_entry_synchronized): Rearrange so that we can load the
thread pointer without exceeding the number of instructions that
we can fit into the gap between SLOW_ENTRY and FAST_ENTRY.
(normal_entry): Likewise.
(MP_COMPILE_THRESHOLD, UP_COMPILE_THRESHOLD): Adjust.
(TBIT): New.
(FRAME_METHOD, FRAME_CONSTANTS, FRAME_BCP, FRAME_STACK_LIMIT)
(FRAME_LOCALS, FRAME_STACK): New.
(SLOW_ENTRY, FAST_ENTRY, SLOW_ENTRY_OFFSET, FAST_ENTRY_OFFSET): New.
(LOAD_ISTATE): New.
(DECACHE_STACK_USING_FRAME, DECACHE_JPC_USING_FRAME): New.
(TRACE): Save and restore IP.
Pass istate to my_trace().
(Opcode monitorenter): Remove all the assembler code and replace
it with a call to Helper_monitorenter.
* src/cpu/zero/vm/bytecodes_arm.def:
Throughout: register tmp2 is no longer available, use other
registers as appropriate.
(lgetfield): Use ldrexd to load a jlong rather than an
ldrexd/strexd loop.
* src/cpu/zero/vm/asm_helper.cpp (ARCH_THUMB2): Renamed from
ARCH_THUMBEE.
(my_trace): New.
(Helper_monitorenter): New.
(Helper_monitorexit): New.
changeset d77793023b14 in /hg/release/icedtea7-forest-2.4/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.4/hotspot?cmd=changeset;node=d77793023b14
author: aph
date: Mon May 28 08:01:18 2012 -0400
Use ldrexd for atomic reads on ARMv7.
2012-05-28 Andrew Haley <aph at redhat.com>
* os_linux_zero.hpp (atomic_copy64): Use ldrexd for atomic reads
on ARMv7.
changeset 4888872c21be in /hg/release/icedtea7-forest-2.4/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.4/hotspot?cmd=changeset;node=4888872c21be
author: aph
date: Mon May 28 08:48:42 2012 -0400
Adjust saved SP when safepointing.
2012-05-28 Andrew Haley <aph at redhat.com>
* thumb2.cpp (Thumb2_Safepoint): Adjust saved SP when
safepointing.
changeset 76900149f3f0 in /hg/release/icedtea7-forest-2.4/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.4/hotspot?cmd=changeset;node=76900149f3f0
author: aph
date: Tue May 29 10:11:11 2012 -0400
Phase 1
changeset 3bb197ceab24 in /hg/release/icedtea7-forest-2.4/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.4/hotspot?cmd=changeset;node=3bb197ceab24
author: aph
date: Tue May 29 11:06:21 2012 -0400
Phase 2
changeset f8dd5ae19039 in /hg/release/icedtea7-forest-2.4/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.4/hotspot?cmd=changeset;node=f8dd5ae19039
author: aph
date: Fri Jul 12 20:26:41 2013 +0100
Don't save locals at a return.
changeset a644c3ec2b16 in /hg/release/icedtea7-forest-2.4/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.4/hotspot?cmd=changeset;node=a644c3ec2b16
author: aph
date: Fri Jul 12 20:27:35 2013 +0100
Back out mistaken checkin of debug code.
changeset 70e201bcbb24 in /hg/release/icedtea7-forest-2.4/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.4/hotspot?cmd=changeset;node=70e201bcbb24
author: adinn
date: Thu Jun 07 17:49:46 2012 +0100
corrected call from fast_method_handle_entry to CppInterpreter::method_handle_entry so that thread is loaded into r2
changeset a214ebebbdcb in /hg/release/icedtea7-forest-2.4/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.4/hotspot?cmd=changeset;node=a214ebebbdcb
author: aph
date: Wed Jun 06 10:09:22 2012 -0400
Fix JIT bug that miscompiles org.eclipse.ui.internal.contexts.ContextAuthority.sourceChanged
2012-06-06 Andrew Haley <aph at redhat.com>
* thumb2.cpp (Thumb2_Compile): Ask the CompilerOracle if we should
compile this method.
(Thumb2_iOp): Use a temporary to hold the shift count.
changeset 16446d9fa65e in /hg/release/icedtea7-forest-2.4/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.4/hotspot?cmd=changeset;node=16446d9fa65e
author: aph
date: Fri Jun 08 09:11:52 2012 -0400
ARM: Rename a bunch of misleadingly-named functions
2012-06-08 Andrew Haley <aph at redhat.com>
* thumb2.cpp: Rename some functions:
Thumb2_save_locals -> Thumb2_save_local_refs
Thumb2_restore_locals -> Thumb2_restore_local_refs
Thumb2_invoke_save -> Thumb2_save_all_locals
Thumb2_invoke_restore -> Thumb2_restore_all_locals
changeset 1ee2f45db8bc in /hg/release/icedtea7-forest-2.4/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.4/hotspot?cmd=changeset;node=1ee2f45db8bc
author: aph
date: Fri Jun 08 10:25:37 2012 -0400
Fix call to handle_special_method(). Fix compareAndSwapLong.
2012-06-08 Andrew Haley <aph at redhat.com>
* thumb2.cpp (Thumb2_codegen): Move call to
handle_special_method() outside test.
(handle_special_method: _compareAndSwapLong): Save/restore all
locals, not just locals of ref type.
changeset ce4008a48588 in /hg/release/icedtea7-forest-2.4/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.4/hotspot?cmd=changeset;node=ce4008a48588
author: chrisphi
date: Thu Aug 30 11:53:27 2012 -0400
ARM: Fix trashed thread ptr after recursive re-entry from
asm jit.
changeset 92d450da7626 in /hg/release/icedtea7-forest-2.4/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.4/hotspot?cmd=changeset;node=92d450da7626
author: chrisphi
date: Thu Mar 21 11:17:13 2013 -0400
PR1363: Fedora 19 / rawhide FTBFS SIGILL
Changed thumb2 PUSH & POP to inline functions,
Added detection of reg alloc failure, fails compile of method.
changeset 521adb51d083 in /hg/release/icedtea7-forest-2.4/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.4/hotspot?cmd=changeset;node=521adb51d083
author: andrew
date: Wed Aug 29 17:23:23 2012 +0100
PR1101: Undefined symbols on GNU/Linux SPARC
changeset f541c1d41ba7 in /hg/release/icedtea7-forest-2.4/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.4/hotspot?cmd=changeset;node=f541c1d41ba7
author: Xerxes Ranby <xerxes at zafena.se>
date: Tue May 28 19:43:58 2013 +0200
PR1188: ASM Interpreter and Thumb2 JIT javac miscompile modulo reminder on armel
Summary:
The POPF1 macro used wrong destination register r0 instead of r1 on ARM armel
causing issues with the frem bytecode.
The frem bytecode was the only bytecode using the defect macro.
changeset fef21600239c in /hg/release/icedtea7-forest-2.4/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.4/hotspot?cmd=changeset;node=fef21600239c
author: chrisphi
date: Fri Jul 12 20:56:23 2013 +0100
Changes for HSX23
changeset 60dbdc6b0859 in /hg/release/icedtea7-forest-2.4/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.4/hotspot?cmd=changeset;node=60dbdc6b0859
author: andrew
date: Fri Jul 12 21:41:06 2013 +0100
Remove fragment from method that has been removed
changeset 297a0304a568 in /hg/release/icedtea7-forest-2.4/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.4/hotspot?cmd=changeset;node=297a0304a568
author: andrew
date: Wed Jul 17 13:52:07 2013 +0100
Use $(CC) to compile mkbc instead of $(CC_COMPILE) to avoid C++-only flags
changeset d54091fd1092 in /hg/release/icedtea7-forest-2.4/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.4/hotspot?cmd=changeset;node=d54091fd1092
author: andrew
date: Wed Jul 17 17:30:04 2013 +0100
Remove C++ flags from CC_COMPILE and fix usage in zeroshark.make.
changeset 1ad36c6cff31 in /hg/release/icedtea7-forest-2.4/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.4/hotspot?cmd=changeset;node=1ad36c6cff31
author: andrew
date: Wed Jul 17 19:14:46 2013 +0100
Add note about use of $(CFLAGS)/$(CXXFLAGS)/$(CPPFLAGS) at present.
changeset 4a989c763452 in /hg/release/icedtea7-forest-2.4/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.4/hotspot?cmd=changeset;node=4a989c763452
author: andrew
date: Thu Dec 26 19:52:09 2013 +0000
Add Shark definitions from 8003868
changeset 4049b8278e88 in /hg/release/icedtea7-forest-2.4/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.4/hotspot?cmd=changeset;node=4049b8278e88
author: andrew
date: Thu Dec 26 19:52:45 2013 +0000
Drop compile_method argument removed in 7083786 from sharkCompiler.cpp
changeset e9721d827f31 in /hg/release/icedtea7-forest-2.4/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.4/hotspot?cmd=changeset;node=e9721d827f31
author: simonis
date: Mon Mar 17 13:40:34 2014 +0000
Re-enable the 'gamma' test at the end of the HotSpot build, but only for HotSpot based bootstrap JDKs.
The 'gamma' launcher only works with HotSpot based bootstrap JDKs because it uses the freshly build libjvm.so in the context and together with the class library of the boot JDK which was used to build it. This combination will not work for other JDKs.
changeset 9b1cdb2b44fa in /hg/release/icedtea7-forest-2.4/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.4/hotspot?cmd=changeset;node=9b1cdb2b44fa
author: andrew
date: Mon Mar 17 13:43:56 2014 +0000
Backout earlier RH1015432 fix
changeset 9600c7d61f8f in /hg/release/icedtea7-forest-2.4/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.4/hotspot?cmd=changeset;node=9600c7d61f8f
author: andrew
date: Fri Jan 31 21:14:06 2014 +0000
RH1015432: java-1.7.0-openjdk: Fails on PPC with StackOverflowError (revised fix)
Contributed-by: chphilli at redhat.com
changeset 78628ff1b2a8 in /hg/release/icedtea7-forest-2.4/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.4/hotspot?cmd=changeset;node=78628ff1b2a8
author: chrisphi
date: Tue Feb 18 20:45:28 2014 +0000
ARM32 assembler update for hsx24. Use ARM32JIT to turn it on/off.
changeset 8e7b2661433e in /hg/release/icedtea7-forest-2.4/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.4/hotspot?cmd=changeset;node=8e7b2661433e
author: andrew
date: Wed Feb 19 21:08:04 2014 +0000
PR1679: Allow OpenJDK to build on PaX-enabled kernels
changeset eff103ee6cbe in /hg/release/icedtea7-forest-2.4/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.4/hotspot?cmd=changeset;node=eff103ee6cbe
author: andrew
date: Thu Feb 20 03:38:40 2014 +0000
Override automatic detection of source language for bytecodes_arm.def
changeset c200cfd0bd8d in /hg/release/icedtea7-forest-2.4/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.4/hotspot?cmd=changeset;node=c200cfd0bd8d
author: andrew
date: Fri Jul 26 11:31:42 2013 +0100
Include $(CFLAGS) in assembler stage
changeset 00478c5bf5e9 in /hg/release/icedtea7-forest-2.4/hotspot
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.4/hotspot?cmd=changeset;node=00478c5bf5e9
author: aph
date: Mon Mar 17 13:15:25 2014 +0000
Replace literal offsets for METHOD_SIZEOFPARAMETERS and ISTATE_NEXT_FRAME with correct symbolic names.
Fix trace code not to dereference null pointers.
Correct Helper_aputfield and helper_aastore not to use static _byte_map_base.
Comment-out calls to TRACE.
Make sure that ISTATE_METHOD and ISTATE_SELF_LINK are set even when JITting fails.
diffstat:
make/linux/makefiles/buildtree.make | 16 +
make/linux/makefiles/gcc.make | 2 +
make/linux/makefiles/rules.make | 5 +-
make/linux/makefiles/vm.make | 2 +-
make/linux/makefiles/zeroshark.make | 37 +
src/cpu/zero/vm/arm_cas.S | 31 +
src/cpu/zero/vm/asm_helper.cpp | 745 +
src/cpu/zero/vm/bytecodes_arm.def | 7850 ++++++++++++++++
src/cpu/zero/vm/bytecodes_zero.cpp | 52 +-
src/cpu/zero/vm/bytecodes_zero.hpp | 41 +-
src/cpu/zero/vm/cppInterpreter_arm.S | 7384 +++++++++++++++
src/cpu/zero/vm/cppInterpreter_zero.cpp | 49 +
src/cpu/zero/vm/cppInterpreter_zero.hpp | 2 +
src/cpu/zero/vm/methodHandles_zero.hpp | 6 +-
src/cpu/zero/vm/thumb2.cpp | 7985 +++++++++++++++++
src/cpu/zero/vm/vm_version_zero.hpp | 11 +
src/os/linux/vm/os_linux.cpp | 131 +-
src/os_cpu/linux_sparc/vm/os_linux_sparc.cpp | 31 +-
src/os_cpu/linux_zero/vm/atomic_linux_zero.inline.hpp | 14 +
src/os_cpu/linux_zero/vm/os_linux_zero.cpp | 47 +-
src/os_cpu/linux_zero/vm/os_linux_zero.hpp | 6 +
src/share/tools/hsdis/Makefile | 10 +-
src/share/tools/hsdis/hsdis.c | 5 +
src/share/vm/prims/jvmtiExport.cpp | 41 +
src/share/vm/prims/jvmtiExport.hpp | 7 +
src/share/vm/runtime/os.cpp | 38 -
src/share/vm/runtime/os.hpp | 4 -
src/share/vm/shark/sharkCompiler.cpp | 1 -
src/share/vm/shark/shark_globals.hpp | 10 +
src/share/vm/utilities/vmError.cpp | 13 +
src/share/vm/utilities/vmError.hpp | 8 +
test/runtime/InitialThreadOverflow/DoOverflow.java | 41 +
test/runtime/InitialThreadOverflow/invoke.cxx | 70 +
test/runtime/InitialThreadOverflow/testme.sh | 73 +
tools/mkbc.c | 607 +
35 files changed, 25245 insertions(+), 130 deletions(-)
diffs (truncated from 25866 to 500 lines):
diff -r 2c97070e5af4 -r 00478c5bf5e9 make/linux/makefiles/buildtree.make
--- a/make/linux/makefiles/buildtree.make Wed Jan 29 10:01:21 2014 +0000
+++ b/make/linux/makefiles/buildtree.make Mon Mar 17 13:15:25 2014 +0000
@@ -408,6 +408,7 @@
DATA_MODE/sparcv9 = 64
DATA_MODE/amd64 = 64
DATA_MODE/ia64 = 64
+DATA_MODE/ppc64 = 64
DATA_MODE/zero = $(ARCH_DATA_MODEL)
JAVA_FLAG/32 = -d32
@@ -416,6 +417,9 @@
WRONG_DATA_MODE_MSG = \
echo "JAVA_HOME must point to a $(DATA_MODE)-bit OpenJDK."
+WRONG_JDK_MSG = \
+ echo "JAVA_HOME must point to a HotSpot based JDK \\\(genuine Sun/Oracle or OpenJDK\\\)."
+
CROSS_COMPILING_MSG = \
echo "Cross compiling for ARCH $(CROSS_COMPILE_ARCH), skipping gamma run."
@@ -452,6 +456,14 @@
echo " exit 0"; \
echo "fi"; \
echo ""; \
+ echo "# 'gamma' only runs with HotSpot based JDKs (genuine Sun/Oracle or OpenJDK)"; \
+ echo ""; \
+ echo "\$${JAVA_HOME}/bin/java $(JAVA_FLAG) -version 2>&1 | grep -E 'OpenJDK|HotSpot' > /dev/null"; \
+ echo "if [ \$$? -ne 0 ]; then "; \
+ echo " $(WRONG_JDK_MSG)"; \
+ echo " exit 0"; \
+ echo "fi"; \
+ echo ""; \
echo "# Use gamma_g if it exists"; \
echo ""; \
echo "GAMMA_PROG=gamma"; \
@@ -459,6 +471,10 @@
echo " GAMMA_PROG=gamma_g"; \
echo "fi"; \
echo ""; \
+ echo "if [ -x \"$(PAX_COMMAND)\" ]; then "; \
+ echo " $(PAX_COMMAND) $(PAX_COMMAND_ARGS) ./\$${GAMMA_PROG}"; \
+ echo "fi"; \
+ echo ""; \
echo "if [ \"$(OS_VENDOR)\" = \"Darwin\" ]; then "; \
echo " # Ensure architecture for gamma and JAVA_HOME is the same."; \
echo " # NOTE: gamma assumes the OpenJDK directory layout."; \
diff -r 2c97070e5af4 -r 00478c5bf5e9 make/linux/makefiles/gcc.make
--- a/make/linux/makefiles/gcc.make Wed Jan 29 10:01:21 2014 +0000
+++ b/make/linux/makefiles/gcc.make Mon Mar 17 13:15:25 2014 +0000
@@ -241,6 +241,7 @@
FASTDEBUG_CFLAGS/amd64 = -g
FASTDEBUG_CFLAGS/arm = -g
FASTDEBUG_CFLAGS/ppc = -g
+ FASTDEBUG_CFLAGS/zero = -g
FASTDEBUG_CFLAGS += $(DEBUG_CFLAGS/$(BUILDARCH))
ifeq ($(FASTDEBUG_CFLAGS/$(BUILDARCH)),)
FASTDEBUG_CFLAGS += -gstabs
@@ -250,6 +251,7 @@
OPT_CFLAGS/amd64 = -g
OPT_CFLAGS/arm = -g
OPT_CFLAGS/ppc = -g
+ OPT_CFLAGS/zero = -g
OPT_CFLAGS += $(OPT_CFLAGS/$(BUILDARCH))
ifeq ($(OPT_CFLAGS/$(BUILDARCH)),)
OPT_CFLAGS += -gstabs
diff -r 2c97070e5af4 -r 00478c5bf5e9 make/linux/makefiles/rules.make
--- a/make/linux/makefiles/rules.make Wed Jan 29 10:01:21 2014 +0000
+++ b/make/linux/makefiles/rules.make Mon Mar 17 13:15:25 2014 +0000
@@ -31,7 +31,10 @@
DEMANGLE = $(DEMANGLER) < $@ > .$@ && mv -f .$@ $@
# $(CC) is the c compiler (cc/gcc), $(CXX) is the c++ compiler (CC/g++).
-CC_COMPILE = $(CC) $(CXXFLAGS) $(CFLAGS)
+# FIXME: $(CXXFLAGS) currently only includes preprocessor flags while
+# $(CFLAGS) includes C and C++ flags. Ideally, there should be three
+# variables: $(CFLAGS), $(CXXFLAGS) and $(CPPFLAGS).
+CC_COMPILE = $(CC) $(CXXFLAGS)
CXX_COMPILE = $(CXX) $(CXXFLAGS) $(CFLAGS)
AS.S = $(AS) $(ASFLAGS)
diff -r 2c97070e5af4 -r 00478c5bf5e9 make/linux/makefiles/vm.make
--- a/make/linux/makefiles/vm.make Wed Jan 29 10:01:21 2014 +0000
+++ b/make/linux/makefiles/vm.make Mon Mar 17 13:15:25 2014 +0000
@@ -226,7 +226,7 @@
# Locate all source files in the given directory, excluding files in Src_Files_EXCLUDE.
define findsrc
$(notdir $(shell find $(1)/. ! -name . -prune \
- -a \( -name \*.c -o -name \*.cpp -o -name \*.s \) \
+ -a \( -name \*.c -o -name \*.cpp -o -name \*.s -o -name \*.S \) \
-a ! \( -name DUMMY $(addprefix -o -name ,$(Src_Files_EXCLUDE)) \)))
endef
diff -r 2c97070e5af4 -r 00478c5bf5e9 make/linux/makefiles/zeroshark.make
--- a/make/linux/makefiles/zeroshark.make Wed Jan 29 10:01:21 2014 +0000
+++ b/make/linux/makefiles/zeroshark.make Mon Mar 17 13:15:25 2014 +0000
@@ -25,6 +25,43 @@
# Setup common to Zero (non-Shark) and Shark versions of VM
+ifeq ($(ZERO_LIBARCH),arm)
+# check to see if we are building the assembler jit or just zero.
+ifeq ($(ARM32JIT),true)
+Obj_Files += asm_helper.o
+Obj_Files += cppInterpreter_arm.o
+Obj_Files += thumb2.o
+
+CFLAGS += -DHOTSPOT_ASM
+
+cppInterpreter_arm.o: offsets_arm.s bytecodes_arm.s
+thumb2.o: offsets_arm.s
+
+offsets_arm.s: mkoffsets
+ @echo Generating assembler offsets
+ ./mkoffsets > $@
+
+bytecodes_arm.s: bytecodes_arm.def mkbc
+ @echo Generating ARM assembler bytecode sequences
+ $(CXX_COMPILE) -E -x c++ - < $< | ./mkbc - $@ $(COMPILE_DONE)
+
+mkbc: $(GAMMADIR)/tools/mkbc.c
+ @echo Compiling mkbc tool
+ $(CC_COMPILE) -o $@ $< $(COMPILE_DONE)
+
+mkoffsets: asm_helper.cpp
+ @echo Compiling offset generator
+ $(QUIETLY) $(REMOVE_TARGET)
+ $(CXX_COMPILE) -DSTATIC_OFFSETS -o $@ $< $(COMPILE_DONE)
+
+endif
+endif
+
+%.o: %.S
+ @echo Assembling $<
+ $(QUIETLY) $(REMOVE_TARGET)
+ $(COMPILE.CC) $(CFLAGS) -o $@ $< $(COMPILE_DONE)
+
# The copied fdlibm routines in sharedRuntimeTrig.o must not be optimized
OPT_CFLAGS/sharedRuntimeTrig.o = $(OPT_CFLAGS/NOOPT)
# The copied fdlibm routines in sharedRuntimeTrans.o must not be optimized
diff -r 2c97070e5af4 -r 00478c5bf5e9 src/cpu/zero/vm/arm_cas.S
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cpu/zero/vm/arm_cas.S Mon Mar 17 13:15:25 2014 +0000
@@ -0,0 +1,31 @@
+#ifdef __ARM_ARCH_7A__
+@ jlong
+@ arm_val_compare_and_swap_long(volatile void *ptr,
+@ jlong oldval,
+@ jlong newval) {
+ .pushsection .text
+ .global arm_val_compare_and_swap_long
+#ifdef __thumb__
+ .syntax unified
+ .thumb_func
+#endif
+ .type arm_val_compare_and_swap_long, %function
+arm_val_compare_and_swap_long:
+ stmfd sp!, {r4, r5, r6, r7}
+ ldrd r4, [sp, #16]
+ dmb sy
+0: ldrexd r6, [r0]
+ cmp r6, r2
+ it eq
+ cmpeq r7, r3
+ bne 1f
+ strexd r1, r4, [r0]
+ cmp r1, #0
+ bne 0b
+ dmb sy
+1: mov r0, r6
+ mov r1, r7
+ ldmfd sp!, {r4, r5, r6, r7}
+ bx lr
+ .popsection
+#endif // __ARM_ARCH_7A__
diff -r 2c97070e5af4 -r 00478c5bf5e9 src/cpu/zero/vm/asm_helper.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cpu/zero/vm/asm_helper.cpp Mon Mar 17 13:15:25 2014 +0000
@@ -0,0 +1,745 @@
+/*
+ * Copyright 2009, 2010 Edward Nevill
+ * Copyright 2011, Red Hat
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifdef __arm__
+
+#define ARCH_THUMB2 (1<<16)
+#define ARCH_VFP (1<<17)
+#define ARCH_CLZ (1<<18)
+
+/* A workaround for private and protected fields */
+#define private public
+#define protected public
+
+#include "precompiled.hpp"
+#include "asm/assembler.hpp"
+#include "interp_masm_zero.hpp"
+#include "interpreter/bytecodeInterpreter.hpp"
+#include "interpreter/bytecodeInterpreter.inline.hpp"
+#include "interpreter/interpreter.hpp"
+#include "interpreter/interpreterRuntime.hpp"
+#include "oops/methodDataOop.hpp"
+#include "oops/methodOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/klassOop.hpp"
+#include "prims/jvmtiExport.hpp"
+#include "prims/jvmtiThreadState.hpp"
+#include "runtime/frame.hpp"
+#include "runtime/deoptimization.hpp"
+#include "runtime/frame.inline.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/stubRoutines.hpp"
+#include "runtime/synchronizer.hpp"
+#include "runtime/vframeArray.hpp"
+#include "utilities/debug.hpp"
+
+
+#ifndef STATIC_OFFSETS
+
+#include <linux/auxvec.h>
+#include <asm/hwcap.h>
+
+#define VECBUFF_SIZE 64
+
+static char valuebuf[128];
+
+// Return the name of the current method. Not multi-thread safe.
+extern "C" char*
+meth(interpreterState istate) {
+ istate->method()->name_and_sig_as_C_string(valuebuf, sizeof valuebuf);
+ char *p = valuebuf + strlen(valuebuf);
+ sprintf(p, ": " PTR_FORMAT " (bci %d)",
+ (intptr_t) istate->bcp(),
+ istate->method()->bci_from(istate->bcp()));
+ return valuebuf;
+}
+
+// Used for debugging the interpreter. The macro TRACE in
+// cppInterpreter_arm.S calls this routine, and you can trap on a
+// particular method.
+#define NAME1 "sun.nio.ch.FileChannelImpl$Unmapper.run()V"
+#define EQ(S1, S2) (S1 && (strncmp(S1, S2, strlen(S2)) == 0))
+extern "C" void my_trace(void *jpc, interpreterState istate)
+{
+ JavaThread *jt = istate->thread();
+ if (jt->zero_stack()->sp() && jt->top_zero_frame()) {
+ bool has_last_Java_frame = jt->has_last_Java_frame();
+ if (!has_last_Java_frame)
+ jt->set_last_Java_frame();
+
+ StackFrameStream sfs(jt);
+ for(int i = 0; !sfs.is_done(); sfs.next(), i++) {
+ }
+
+ // Reset the frame anchor if necessary
+ if (!has_last_Java_frame)
+ jt->reset_last_Java_frame();
+ }
+}
+
+extern "C" unsigned hwcap(void)
+{
+ int fd;
+ unsigned vecs[VECBUFF_SIZE];
+ unsigned *p;
+ int i, n;
+ unsigned rc = 0;
+ unsigned arch = 4;
+
+ fd = open("/proc/self/auxv", O_RDONLY);
+ if (fd < 0) return 0;
+ do {
+ n = read(fd, vecs, VECBUFF_SIZE * sizeof(unsigned));
+ p = vecs;
+ i = n/8;
+ while (--i >= 0) {
+ unsigned tag = *p++;
+ unsigned value = *p++;
+ if (tag == 0) goto fini;
+ if (tag == AT_HWCAP) {
+ if (value & HWCAP_THUMBEE) rc |= ARCH_THUMB2;
+ if (value & HWCAP_VFP) rc |= ARCH_VFP;
+ } else if (tag == AT_PLATFORM) {
+ const char *s = (const char *)value;
+ int c;
+
+ if (*s++ == 'v') {
+ arch = 0;
+ while ((isdigit)(c = *s++)) arch = arch * 10 + c - '0';
+ }
+ }
+ }
+ } while (n == VECBUFF_SIZE * sizeof(unsigned));
+fini:
+ close(fd);
+// printf("arch = %d, rc = 0x%08x\n", arch, rc);
+ if (arch >= 5) rc |= ARCH_CLZ;
+ if (arch >= 7) rc |= ARCH_THUMB2;
+ return rc | (1<<arch);
+}
+
+/* Thease functions allow the ASM interpreter to call CPP virtual functions.
+ * Otherwise the ASM interpreter has to grup around in the VTABLE which is
+ * not very portable.
+ */
+extern "C" bool JavaThread_is_lock_owned(JavaThread *r0, address r1)
+{
+ return r0->is_lock_owned(r1);
+}
+
+extern "C" HeapWord **CollectedHeap_top_addr(CollectedHeap *r0)
+{
+ return r0->top_addr();
+}
+
+extern "C" HeapWord **CollectedHeap_end_addr(CollectedHeap *r0)
+{
+ return r0->end_addr();
+}
+
+extern "C" char *SharedRuntime_generate_class_cast_message(const char *name, const char *klass)
+{
+ return SharedRuntime::generate_class_cast_message(name, klass);
+}
+
+#define HELPER_THROW(thread, name, msg) Exceptions::_throw_msg(thread, __FILE__, __LINE__, name, msg)
+
+class VMStructs {
+public:
+ static inline klassOop klass_at_addr(constantPoolOop constants, u2 index) {
+ return (klassOop) *constants->obj_at_addr_raw(index);
+ }
+};
+
+extern "C" oop Helper_new(interpreterState istate, unsigned index)
+{
+ JavaThread *thread = istate->thread();
+
+ constantPoolOop constants = istate->method()->constants();
+ oop result = NULL;
+ if (!constants->tag_at(index).is_unresolved_klass()) {
+ // Make sure klass is initialized and doesn't have a finalizer
+ oop entry = VMStructs::klass_at_addr(constants, index);
+ klassOop k_entry = (klassOop) entry;
+ instanceKlass* ik = (instanceKlass*) k_entry->klass_part();
+ if ( ik->is_initialized() && ik->can_be_fastpath_allocated() ) {
+ size_t obj_size = ik->size_helper();
+ // If the TLAB isn't pre-zeroed then we'll have to do it
+ bool need_zero = !ZeroTLAB;
+ if (UseTLAB) {
+ result = (oop) thread->tlab().allocate(obj_size);
+ }
+ if (result == NULL && !CMSIncrementalMode) {
+ need_zero = true;
+ // Try allocate in shared eden
+ retry:
+ HeapWord* compare_to = *Universe::heap()->top_addr();
+ HeapWord* new_top = compare_to + obj_size;
+ if (new_top <= *Universe::heap()->end_addr()) {
+ if (Atomic::cmpxchg_ptr(new_top, Universe::heap()->top_addr(), compare_to) != compare_to) {
+ goto retry;
+ }
+ result = (oop) compare_to;
+ }
+ }
+ if (result != NULL) {
+ // Initialize object (if nonzero size and need) and then the header
+ if (need_zero ) {
+ HeapWord* to_zero = (HeapWord*) result + sizeof(oopDesc) / oopSize;
+ obj_size -= sizeof(oopDesc) / oopSize;
+ if (obj_size > 0 ) {
+ memset(to_zero, 0, obj_size * HeapWordSize);
+ }
+ }
+ if (UseBiasedLocking) {
+ result->set_mark(ik->prototype_header());
+ } else {
+ result->set_mark(markOopDesc::prototype());
+ }
+ result->set_klass_gap(0);
+ result->set_klass(k_entry);
+ return result;
+ }
+ }
+ }
+ // Slow case allocation
+ InterpreterRuntime::_new(thread, istate->method()->constants(), index);
+ result = thread->vm_result();
+ thread->set_vm_result(NULL);
+ return result;
+}
+
+extern "C" int Helper_instanceof(interpreterState istate, unsigned index, oop tos)
+{
+ if (tos == NULL) return 0;
+
+ // Constant pool may have actual klass or unresolved klass. If it is
+ // unresolved we must resolve it
+ if (istate->method()->constants()->tag_at(index).is_unresolved_klass()) {
+ InterpreterRuntime::quicken_io_cc(istate->thread());
+ if (istate->thread()->has_pending_exception()) return 0;
+ }
+ klassOop klassOf = VMStructs::klass_at_addr(istate->method()->constants(), index);
+ klassOop objKlassOop = tos->klass();
+ //
+ // Check for compatibilty. This check must not GC!!
+ // Seems way more expensive now that we must dispatch
+ //
+ return objKlassOop == klassOf || objKlassOop->klass_part()->is_subtype_of(klassOf);
+}
+
+extern "C" oop Helper_checkcast(interpreterState istate, unsigned index, oop tos)
+{
+ if (tos == NULL) return NULL;
+
+ // Constant pool may have actual klass or unresolved klass. If it is
+ // unresolved we must resolve it
+ if (istate->method()->constants()->tag_at(index).is_unresolved_klass()) {
+ oop except_oop;
+ InterpreterRuntime::quicken_io_cc(istate->thread());
+ if (except_oop = istate->thread()->pending_exception()) return except_oop;
+ }
+ klassOop klassOf = VMStructs::klass_at_addr(istate->method()->constants(), index);
+ klassOop objKlassOop = tos->klass(); //ebx
+ //
+ // Check for compatibilty. This check must not GC!!
+ // Seems way more expensive now that we must dispatch
+ //
+ if (objKlassOop != klassOf && !objKlassOop->klass_part()->is_subtype_of(klassOf)) {
+ ResourceMark rm(istate->thread());
+ const char* objName = Klass::cast(objKlassOop)->external_name();
+ const char* klassName = Klass::cast(klassOf)->external_name();
+ char* message = SharedRuntime::generate_class_cast_message(objName, klassName);
+ ThreadInVMfromJava trans(istate->thread());
+ HELPER_THROW(istate->thread(), vmSymbols::java_lang_ClassCastException(), message);
+ }
+ return istate->thread()->pending_exception();
+}
+
+extern "C" oop Helper_monitorenter(interpreterState istate, oop lockee)
+{
+ BasicObjectLock* limit = istate->monitor_base();
+ BasicObjectLock* most_recent = (BasicObjectLock*) istate->stack_base();
+ BasicObjectLock* entry = NULL;
+ markOop displaced;
+ JavaThread *thread = istate->thread();
+
+ if (lockee == NULL) {
+ HELPER_THROW(istate->thread(), vmSymbols::java_lang_NullPointerException(), "");
+ goto handle_exception;
+ }
+ while (most_recent != limit ) {
+ if (most_recent->obj() == NULL) entry = most_recent;
+ else if (most_recent->obj() == lockee) break;
+ most_recent++;
+ }
+ if (entry == NULL) {
+ int monitor_words = frame::interpreter_frame_monitor_size();
+ ZeroStack *stack = thread->zero_stack();
+
+ if (monitor_words > stack->available_words()) {
+ InterpreterRuntime::throw_StackOverflowError(thread);
+ goto handle_exception;
+ } else {
+ stack->alloc(monitor_words * wordSize);
+
+ for (intptr_t *p = istate->stack() + 1; p < istate->stack_base(); p++)
+ *(p - monitor_words) = *p;
+
+ istate->set_stack_limit(istate->stack_limit() - monitor_words);
+ istate->set_stack(istate->stack() - monitor_words);
+ istate->set_stack_base(istate->stack_base() - monitor_words);
+
+ entry = (BasicObjectLock *) istate->stack_base();
+ }
+ }
+ entry->set_obj(lockee);
+ displaced = lockee->mark()->set_unlocked();
+ entry->lock()->set_displaced_header(displaced);
+ if (Atomic::cmpxchg_ptr(entry, lockee->mark_addr(), displaced) != displaced) {
+ // Is it simple recursive case?
+ if (thread->is_lock_owned((address) displaced->clear_lock_bits())) {
+ entry->lock()->set_displaced_header(NULL);
+ } else {
+ InterpreterRuntime::monitorenter(thread, entry);
+ }
More information about the distro-pkg-dev
mailing list