/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