/hg/release/icedtea6-1.7-shark: 16 new changesets

gbenson at icedtea.classpath.org gbenson at icedtea.classpath.org
Wed Jun 2 08:34:48 PDT 2010


changeset 1a7b267eccb8 in /hg/release/icedtea6-1.7-shark
details: http://icedtea.classpath.org/hg/release/icedtea6-1.7-shark?cmd=changeset;node=1a7b267eccb8
author: Gary Benson <gbenson at redhat.com>
date: Thu Mar 11 16:35:10 2010 -0500

	Fix bugs preventing Shark building itself


changeset d33878888360 in /hg/release/icedtea6-1.7-shark
details: http://icedtea.classpath.org/hg/release/icedtea6-1.7-shark?cmd=changeset;node=d33878888360
author: Gary Benson <gbenson at redhat.com>
date: Wed Jun 02 15:46:18 2010 +0100

	Fix an issue with lost asynchronous exceptions


changeset 97e88099d052 in /hg/release/icedtea6-1.7-shark
details: http://icedtea.classpath.org/hg/release/icedtea6-1.7-shark?cmd=changeset;node=97e88099d052
author: Gary Benson <gbenson at redhat.com>
date: Wed Jun 02 15:48:00 2010 +0100

	Shark updates


changeset b7ae2dea1cd1 in /hg/release/icedtea6-1.7-shark
details: http://icedtea.classpath.org/hg/release/icedtea6-1.7-shark?cmd=changeset;node=b7ae2dea1cd1
author: Gary Benson <gbenson at redhat.com>
date: Wed Jun 02 15:50:04 2010 +0100

	PR icedtea/459: shark do nothing on stub frame


changeset 22e146a82c40 in /hg/release/icedtea6-1.7-shark
details: http://icedtea.classpath.org/hg/release/icedtea6-1.7-shark?cmd=changeset;node=22e146a82c40
author: Gary Benson <gbenson at redhat.com>
date: Wed Jun 02 15:51:33 2010 +0100

	Update Shark for LLVM 2.8 API change r100304


changeset 34b933268f34 in /hg/release/icedtea6-1.7-shark
details: http://icedtea.classpath.org/hg/release/icedtea6-1.7-shark?cmd=changeset;node=34b933268f34
author: Gary Benson <gbenson at redhat.com>
date: Wed Jun 02 15:55:32 2010 +0100

	Shark calling static jni methods jclass argument fix


changeset e91674622c51 in /hg/release/icedtea6-1.7-shark
details: http://icedtea.classpath.org/hg/release/icedtea6-1.7-shark?cmd=changeset;node=e91674622c51
author: Gary Benson <gbenson at redhat.com>
date: Wed Jun 02 15:56:29 2010 +0100

	Fix PR icedtea/324


changeset 72482e71e8cf in /hg/release/icedtea6-1.7-shark
details: http://icedtea.classpath.org/hg/release/icedtea6-1.7-shark?cmd=changeset;node=72482e71e8cf
author: Gary Benson <gbenson at redhat.com>
date: Wed Jun 02 15:57:27 2010 +0100

	Fix PR IcedTea/481


changeset 1d42cf5c96fd in /hg/release/icedtea6-1.7-shark
details: http://icedtea.classpath.org/hg/release/icedtea6-1.7-shark?cmd=changeset;node=1d42cf5c96fd
author: Gary Benson <gbenson at redhat.com>
date: Wed Jun 02 15:58:55 2010 +0100

	Updated Zero to semi-latest upstream


changeset c58efa7c6e72 in /hg/release/icedtea6-1.7-shark
details: http://icedtea.classpath.org/hg/release/icedtea6-1.7-shark?cmd=changeset;node=c58efa7c6e72
author: Gary Benson <gbenson at redhat.com>
date: Fri May 07 11:25:06 2010 +0100

	Revert an accidental reversion


changeset d22feecddbd7 in /hg/release/icedtea6-1.7-shark
details: http://icedtea.classpath.org/hg/release/icedtea6-1.7-shark?cmd=changeset;node=d22feecddbd7
author: Gary Benson <gbenson at redhat.com>
date: Wed Jun 02 16:30:20 2010 +0100

	Backport new frame anchor and stack overflow code for Zero and Shark


changeset 9c0303256eb8 in /hg/release/icedtea6-1.7-shark
details: http://icedtea.classpath.org/hg/release/icedtea6-1.7-shark?cmd=changeset;node=9c0303256eb8
author: Gary Benson <gbenson at redhat.com>
date: Tue May 11 09:26:09 2010 +0100

	Remove a now-unnecessary hack


changeset 5c5e31018399 in /hg/release/icedtea6-1.7-shark
details: http://icedtea.classpath.org/hg/release/icedtea6-1.7-shark?cmd=changeset;node=5c5e31018399
author: Gary Benson <gbenson at redhat.com>
date: Thu May 13 15:53:35 2010 +0100

	Fix signedness of T_BYTE and T_CHAR results


changeset 137342fa4b62 in /hg/release/icedtea6-1.7-shark
details: http://icedtea.classpath.org/hg/release/icedtea6-1.7-shark?cmd=changeset;node=137342fa4b62
author: Gary Benson <gbenson at redhat.com>
date: Fri May 14 11:16:36 2010 +0100

	Add missing semicolon


changeset e24af79dcade in /hg/release/icedtea6-1.7-shark
details: http://icedtea.classpath.org/hg/release/icedtea6-1.7-shark?cmd=changeset;node=e24af79dcade
author: Gary Benson <gbenson at redhat.com>
date: Fri May 14 13:55:26 2010 +0100

	Fix PR icedtea/484


changeset 53901c78cd5f in /hg/release/icedtea6-1.7-shark
details: http://icedtea.classpath.org/hg/release/icedtea6-1.7-shark?cmd=changeset;node=53901c78cd5f
author: Gary Benson <gbenson at redhat.com>
date: Fri May 14 17:37:29 2010 +0100

	Fix stack leak in Shark

	This commit fixes a bug where having an exception handler in a loop
	would caused a little bit of stack to be allocated every time the
	handler was invoked. This code...

	 int a = 23; int b = 0; while (true) { try { int c =
	a / b; } catch (ArithmeticException e) { // do nothing
	} }

	...would eventually fail with a stack overflow.


diffstat:

40 files changed, 1102 insertions(+), 368 deletions(-)
ChangeLog                                                    |  317 ++++++++++
Makefile.am                                                  |    1 
patches/icedtea-shark.patch                                  |   21 
patches/zero/shark_do_nothing_on_stub_frame.patch            |   15 
ports/hotspot/make/linux/makefiles/zeroshark.make            |    4 
ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp        |  147 +---
ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.hpp        |   12 
ports/hotspot/src/cpu/zero/vm/disassembler_zero.hpp          |    9 
ports/hotspot/src/cpu/zero/vm/entryFrame_zero.hpp            |    8 
ports/hotspot/src/cpu/zero/vm/entry_zero.hpp                 |   30 
ports/hotspot/src/cpu/zero/vm/fakeStubFrame_zero.hpp         |    4 
ports/hotspot/src/cpu/zero/vm/frame_zero.cpp                 |   14 
ports/hotspot/src/cpu/zero/vm/frame_zero.hpp                 |   22 
ports/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp          |   12 
ports/hotspot/src/cpu/zero/vm/globals_zero.hpp               |   11 
ports/hotspot/src/cpu/zero/vm/interpreterFrame_zero.hpp      |    8 
ports/hotspot/src/cpu/zero/vm/interpreterRT_zero.cpp         |    7 
ports/hotspot/src/cpu/zero/vm/javaFrameAnchor_zero.hpp       |   27 
ports/hotspot/src/cpu/zero/vm/stack_zero.cpp                 |   86 ++
ports/hotspot/src/cpu/zero/vm/stack_zero.hpp                 |   26 
ports/hotspot/src/cpu/zero/vm/stack_zero.inline.hpp          |   48 +
ports/hotspot/src/cpu/zero/vm/stubGenerator_zero.cpp         |   78 +-
ports/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp |   24 
ports/hotspot/src/share/vm/includeDB_shark                   |    3 
ports/hotspot/src/share/vm/includeDB_zero                    |   15 
ports/hotspot/src/share/vm/shark/sharkBlock.cpp              |   12 
ports/hotspot/src/share/vm/shark/sharkBuilder.cpp            |   57 +
ports/hotspot/src/share/vm/shark/sharkBuilder.hpp            |   22 
ports/hotspot/src/share/vm/shark/sharkCacheDecache.cpp       |    1 
ports/hotspot/src/share/vm/shark/sharkCodeBuffer.hpp         |   11 
ports/hotspot/src/share/vm/shark/sharkCompiler.cpp           |    4 
ports/hotspot/src/share/vm/shark/sharkContext.cpp            |    6 
ports/hotspot/src/share/vm/shark/sharkNativeWrapper.cpp      |   15 
ports/hotspot/src/share/vm/shark/sharkRuntime.cpp            |   53 +
ports/hotspot/src/share/vm/shark/sharkRuntime.hpp            |   10 
ports/hotspot/src/share/vm/shark/sharkStack.cpp              |   87 ++
ports/hotspot/src/share/vm/shark/sharkStack.hpp              |   48 +
ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp      |  176 ++++-
ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.hpp      |    5 
ports/hotspot/src/share/vm/shark/shark_globals.hpp           |   14 

diffs (truncated from 2695 to 500 lines):

diff -r 0424d3023049 -r 53901c78cd5f ChangeLog
--- a/ChangeLog	Tue Mar 16 10:29:49 2010 -0400
+++ b/ChangeLog	Fri May 14 17:37:29 2010 +0100
@@ -1,3 +1,309 @@ 2010-03-16  Deepak Bhole <dbhole at redhat.
+2010-05-14  Gary Benson  <gbenson at redhat.com>
+
+	* ports/hotspot/src/share/vm/shark/sharkCodeBuffer.hpp
+	(SharkCodeBuffer::inline_data): New method.
+	* ports/hotspot/src/share/vm/shark/sharkBuilder.hpp
+	(SharkBuilder::CreateInlineData): Likewise.
+	* ports/hotspot/src/share/vm/shark/sharkBuilder.cpp
+	(SharkBuilder::CreateInlineData): Likewise.
+	* ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp
+	(SharkTopLevelBlock::handle_exception): Inline the exception
+	handler table in the code buffer rather than creating it on
+	the stack.
+
+2010-05-14  Gary Benson  <gbenson at redhat.com>
+
+	PR icedtea/484
+	* ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.hpp
+	(CppInterpreter::normal_entry): Return int instead of void.
+	(CppInterpreter::native_entry): Likewise.
+	(CppInterpreter::accessor_entry): Likewise.
+	(CppInterpreter::empty_entry): Likewise.
+	* ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp
+	(CppInterpreter::normal_entry): Return 0.
+	(CppInterpreter::native_entry): Likewise.
+	(CppInterpreter::accessor_entry): Likewise.
+	(CppInterpreter::empty_entry): Likewise.
+	* ports/hotspot/src/cpu/zero/vm/entry_zero.hpp
+	(ZeroEntry::NormalEntryFunc): Return int instead of void.
+	(ZeroEntry::OSREntryFunc): Likewise.
+	(ZeroEntry::invoke): Deoptimize where necessary.
+	(ZeroEntry::invoke_osr): Likewise.
+	(ZeroEntry::maybe_deoptimize): New method.
+	* ports/hotspot/src/share/vm/shark/sharkBuilder.hpp
+	(SharkBuilder::deoptimized_entry_point): New method.
+	* ports/hotspot/src/share/vm/shark/sharkBuilder.hpp
+	(SharkBuilder::uncommon_trap): Return int instead of void.
+	(SharkBuilder::deoptimized_entry_point): New method.
+	* ports/hotspot/src/share/vm/shark/sharkContext.cpp
+	(SharkContext::SharkContext): Updated entry point types.
+	* ports/hotspot/src/share/vm/shark/sharkNativeWrapper.cpp
+	(SharkNativeWrapper::initialize): Make generated wrappers
+	return 0 instead of void.
+	* ports/hotspot/src/share/vm/shark/sharkRuntime.cpp
+	(SharkRuntime::uncommon_trap): Return int instead of void.
+	* ports/hotspot/src/share/vm/shark/sharkRuntime.cpp
+	(SharkRuntime::uncommon_trap): Don't enter the interpreter,
+	just return the number of frames that have been deoptimized.
+	* ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp
+	(SharkTopLevelBlock::do_trap): Return the number of deoptimized
+	frames instead of void.
+	(SharkTopLevelBlock::handle_return): Return 0 instead of void.
+	(SharkTopLevelBlock::do_call): Deoptimize where necessary.
+
+	* ports/hotspot/make/linux/makefiles/zeroshark.make:
+	Note that ARM interpreter needs updating for this change too.
+
+2010-05-14  Gary Benson  <gbenson at redhat.com>
+
+	* ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp
+	(AbstractInterpreter::layout_activation): Add missing semicolon.
+
+2010-05-13  Gary Benson  <gbenson at redhat.com>
+
+	PR icedtea/483
+	* ports/hotspot/src/share/vm/shark/sharkNativeWrapper.cpp
+	(SharkNativeWrapper::initialize): Fix signedness of T_BYTE
+	and T_CHAR results.
+
+2010-05-11  Gary Benson  <gbenson at redhat.com>
+
+	PR icedtea/323
+	* patches/icedtea-shark.patch
+	(Deoptimization::create_vframeArray): Remove a now-unnecessary hack.
+
+2010-05-10  Gary Benson  <gbenson at redhat.com>
+
+	PR icedtea/323
+	* ports/hotspot/src/cpu/zero/vm/javaFrameAnchor_zero.hpp
+	(JavaFrameAnchor::_last_Java_fp): New field.
+	(JavaFrameAnchor::clear): Also clear the above.
+	(JavaFrameAnchor::set): New method.
+	(JavaFrameAnchor::copy): Use the above.
+	(JavaFrameAnchor::set_lat_Java_sp): Removed.
+	(JavaFrameAnchor::last_Java_fp): New method.
+	(JavaFrameAnchor::last_Java_fp_offset): Likewise.
+	* ports/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp
+	(JavaThread::last_Java_fp): Likewise.
+	(JavaThread::last_Java_fp_offset): Likewise.
+	(JavaThread::set_last_Java_frame): Use new new frame anchor code.
+	(JavaThread::reset_last_Java_frame): Likewise.
+	(JavaThread::pd_last_frame): Likewise.
+	* ports/hotspot/src/cpu/zero/vm/frame_zero.hpp
+	(frame::frame): Flipped arguments.
+	(frame::_fp): Replaced with...
+	(frame::_zeroframe): New field.
+	(frame::fp): Updated.
+	(frame::zeroframe): Likewise.
+	* ports/hotspot/src/cpu/zero/vm/frame_zero.inline.hpp
+	(frame::frame): Likewise.
+	(frame::sender_sp): Likewise.
+	(frame::id): Likewise.
+	* ports/hotspot/src/cpu/zero/vm/frame_zero.cpp
+	(frame::sender_for_entry_frame): Likewise.
+	(frame::sender_for_nonentry_frame): Likewise.
+	(frame::zero_print_on_error): Likewise.
+	* ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp
+	(AbstractInterpreter::layout_activation): Use new frame
+	anchor code.
+
+	* ports/hotspot/src/cpu/zero/vm/stack_zero.hpp
+	(ZeroStack::suggest_size): New method.
+	(ZeroStack::total_words): Likewise.
+	(ZeroStack::abi_stack_available): Likewise.
+	(ZeroStack::zap): Likewise.
+	* ports/hotspot/src/cpu/zero/vm/stack_zero.inline.hpp
+	(ZeroStack::abi_stack_available): New method.
+	(ZeroStack::overflow_check): Use the above.
+	* ports/hotspot/src/cpu/zero/vm/stack_zero.cpp
+	(ZeroStack::suggest_size): New method.
+	(ZeroStack::zap): Likewise.
+	(ZeroStack::handle_overflow): Use new frame anchor code.
+	* ports/hotspot/src/cpu/zero/vm/stubGenerator_zero.cpp
+	(StubGenerator::call_stub): Use ZeroStack::suggest_size.
+
+	* ports/hotspot/src/share/vm/shark/sharkBuilder.hpp
+	(SharkBuilder::throw_StackOverflowError): New method.
+	* ports/hotspot/src/share/vm/shark/sharkBuilder.cpp
+	(SharkBuilder::throw_StackOverflowError): Likewise.
+	* ports/hotspot/src/share/vm/shark/sharkStack.hpp
+	(SharkStack::initialize): Removed argument.
+	(SharkStack::CreateStackOverflowCheck): Updated.
+	(SharkStack::CreateCheckStack): Removed method.
+	(SharkStack::frame_anchor_addr): Likewise.
+	(SharkStack::last_Java_sp_addr): New method.
+	(SharkStack::last_Java_fp_addr): New method.
+	(SharkStack::CreateSetLastJavaFrame): Use new frame anchor code.
+	(SharkStack::CreateResetLastJavaFrame): Likewise.
+	(SharkStack::CreateAssertLastJavaSPIsNull): New method.
+	* ports/hotspot/src/share/vm/shark/sharkStack.cpp
+	(SharkStack::initialize): Updated for new stack overflow code.
+	(SharkStack::CreateStackOverflowCheck): Likewise.
+	(SharkStack::CreateCheckStack): Removed.
+	(SharkStackWithNormalFrame::SharkStackWithNormalFrame): Updated
+	for new stack overflow code.
+	(SharkStackWithNativeFrame::SharkStackWithNativeFrame): Likewise.
+	(SharkStack::CreateAssertLastJavaSPIsNull): New method.
+	
+	* ports/hotspot/make/linux/makefiles/zeroshark.make
+	(CFLAGS): Remove -DHOTSPOT_ASM until the ARM interpreter
+	and JIT are updated to use the new frame anchor code.
+
+	* ports/hotspot/src/share/vm/shark/sharkNativeWrapper.cpp
+	(SharkNativeWrapper::initialize): Whitespace fix.
+
+2010-05-07  Gary Benson  <gbenson at redhat.com>
+
+	* ports/hotspot/src/cpu/zero/vm/stack_zero.hpp
+	(ZeroStack::_shadow_pages_size): New field.
+	(ZeroStack::ZeroStack): Initialize the above.
+	(ZeroStack::shadow_pages_size): New method.
+	(ZeroStack::overflow_check): Likewise.
+	(ZeroStack::handle_overflow): Likewise.
+	* ports/hotspot/src/cpu/zero/vm/stack_zero.inline.hpp: New file.
+	* ports/hotspot/src/cpu/zero/vm/stack_zero.cpp: Likewise.
+	* ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.hpp
+	(CppInterpreter::stack_overflow_imminent): Removed.
+	* ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp
+	(CppInterpreter::stack_overflow_imminent): Likewise.
+	(CppInterpreter::normal_entry): Use new stack overflow code.
+	(CppInterpreter::main_loop): Likewise.
+	(CppInterpreter::native_entry): Likewise.
+	(InterpreterFrame::build): Likewise.
+	* ports/hotspot/src/cpu/zero/vm/entryFrame_zero.hpp
+	(EntryFrame::build): Likewise.
+	* ports/hotspot/src/cpu/zero/vm/fakeStubFrame_zero.hpp
+	(FakeStubFrame::build): Likewise.
+	* ports/hotspot/src/cpu/zero/vm/interpreterFrame_zero.hpp
+	(InterpreterFrame::build): Likewise.
+	* ports/hotspot/src/cpu/zero/vm/interpreterRT_zero.cpp
+	(InterpreterRuntime::slow_signature_handler): Likewise.
+	* ports/hotspot/src/cpu/zero/vm/stubGenerator_zero.cpp
+	(StubGenerator::call_stub): Likewise.
+	(EntryFrame::build): Likewise.
+	* ports/hotspot/src/share/vm/shark/sharkRuntime.cpp
+	(SharkRuntime::uncommon_trap): Likewise.
+	(FakeStubFrame::build): Likewise.
+
+	* ports/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp
+	(JavaThread::set_last_Java_frame): Refactored.
+	(JavaThread::reset_last_Java_frame): Likewise.
+
+	* ports/hotspot/src/cpu/zero/vm/globals_zero.hpp: Updated.
+	* ports/hotspot/src/cpu/zero/vm/shark_globals_zero.hpp: Likewise.
+
+	* ports/hotspot/src/share/vm/includeDB_zero: Updated.
+	* ports/hotspot/src/share/vm/includeDB_shark: Likewise.
+
+	* ports/hotspot/src/share/vm/shark/sharkCacheDecache.cpp
+	(SharkDecacher::end_frame): Updated for newer HotSpot.
+
+2010-05-05  Gary Benson  <gbenson at redhat.com>
+
+	PR icedtea/481
+	* ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp
+	(SharkTopLevelBlock::improve_virtual_call): Disable an
+	optimization that cannot currently be supported.
+
+2010-04-30  Gary Benson  <gbenson at redhat.com>
+
+	PR icedtea/324
+	* ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp
+	(SharkTopLevelBlock::do_aload): Cope with cases where
+	the array's type is unknown.
+	(SharkTopLevelBlock::do_astore): Likewise.
+
+2010-04-22  Xerxes RÃ¥nby  <xerxes at zafena.se>
+
+	* ports/hotspot/src/share/vm/shark/sharkNativeWrapper.cpp
+	(SharkNativeWrapper::initialize): Shark calling static jni
+	methods jclass argument fix.
+
+2010-04-19  Xerxes RÃ¥nby  <xerxes at zafena.se>
+
+	* ports/hotspot/src/share/vm/shark/sharkBuilder.cpp
+	(SharkBuilder::memset): Update Shark for LLVM 2.8 API change.
+	LLVM 2.8 added a fifth isVolatile field for memset
+	introduced with LLVM r100304.
+	(SharkBuilder::CreateMemset): Likewise
+
+2010-04-12  Xerxes RÃ¥nby  <xerxes at zafena.se>
+
+	PR icedtea/459:
+	* Makefile.am: (ICEDTEA_PATCHES):
+	Apply patches/zero/shark_do_nothing_on_stub_frame.patch.
+	* ports/hotspot/src/cpu/zero/vm/frame_zero.cpp
+	(frame::is_fake_stub_frame): New method.
+	* ports/hotspot/src/cpu/zero/vm/frame_zero.hpp
+	(frame::is_fake_stub_frame): Likewise.
+	* patches/zero/shark_do_nothing_on_stub_frame.patch: New.
+
+2010-03-19  Gary Benson  <gbenson at redhat.com>
+
+	* ports/hotspot/src/cpu/zero/vm/disassembler_zero.hpp
+	(Disassembler::pd_instruction_alignment): Return a usable default.
+	(Disassembler::pd_cpu_opts): Likewise.
+	* ports/hotspot/src/share/vm/shark/sharkBlock.cpp
+	(SharkBlock::do_field_access): Indentation fixes.
+	* ports/hotspot/src/share/vm/shark/sharkBuilder.hpp
+	(SharkBuilder::throw_ArithmeticException): New method.
+	(SharkBuilder::throw_ClassCastException): Likewise.
+	(SharkBuilder::frame_address): Likewise.
+	(SharkBuilder::CreateGetFrameAddress): Likewise.
+	* ports/hotspot/src/share/vm/shark/sharkBuilder.cpp
+	(SharkBuilder::throw_ArithmeticException): New method.
+	(SharkBuilder::throw_ClassCastException): Likewise.
+	(SharkBuilder::frame_address): Likewise.
+	(SharkBuilder::CreateGetFrameAddress): Likewise.
+	(SharkBuilder::CreateMemoryBarrier): Actually do something on x86.
+	* ports/hotspot/src/share/vm/shark/sharkNativeWrapper.cpp
+	(SharkNativeWrapper::initialize): Implemented UseMembar code.
+	* ports/hotspot/src/share/vm/shark/sharkRuntime.hpp
+	(SharkRuntime::throw_ArithmeticException): New method.
+	(SharkRuntime::throw_ClassCastException): Likewise.
+	* ports/hotspot/src/share/vm/shark/sharkRuntime.cpp
+	(SharkRuntime::throw_ArithmeticException): New method.
+	(SharkRuntime::throw_ClassCastException): Likewise.
+	* ports/hotspot/src/share/vm/shark/sharkStack.hpp
+	(SharkStack::initialize): Added setup_sp_and_method parameter.
+	(SharkStack::CreateStackOverflowCheck): New method.
+	(SharkStack::CreateCheckStack): Likewise.
+	(SharkStack::interpreter_entry_point): Likewise.
+	(SharkStackWithNormalFrame::interpreter_entry_point): Likewise.
+	(SharkStackWithNativeFrame::interpreter_entry_point): Likewise.
+	(SharkStack::CreateHardStackOverflowCheck): Removed.
+	(SharkStack::CreateSoftStackOverflowCheck): Likewise.
+	* ports/hotspot/src/share/vm/shark/sharkStack.cpp
+	(SharkStack::initialize): Added setup_sp_and_method parameter,
+	and changed to use new stack overflow detection code.
+	(SharkStack::CreateStackOverflowCheck): New method.
+	(SharkStack::CreateCheckStack): Likewise.
+	(SharkStack::CreateHardStackOverflowCheck): Removed.
+	(SharkStack::CreateSoftStackOverflowCheck): Likewise.
+	(SharkStackWithNormalFrame::interpreter_entry_point): Likewise.
+	(SharkStackWithNativeFrame::interpreter_entry_point): Likewise.
+	(SharkStackWithNormalFrame::SharkStackWithNormalFrame): Updated.
+	(SharkStackWithNativeFrame::SharkStackWithNativeFrame): Likewise.
+	* ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.hpp
+	(SharkTopLevelBlock::static_field_ok_in_clinit): New method.
+	* ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp
+	(SharkTopLevelBlock::scan_for_traps): New trap.
+	(SharkTopLevelBlock::static_field_ok_in_clinit): New method.
+	(SharkTopLevelBlock::zero_check_value): Throw arithmetic exception
+	for divide by zero.
+	(SharkTopLevelBlock::do_full_instance_check): Throw class cast
+	exception.
+	(SharkTopLevelBlock::do_monitorexit): Do not handle exceptions.
+	* ports/hotspot/src/share/vm/shark/shark_globals.hpp:
+	Make debugging options available in product builds.
+
+2010-03-18  Gary Benson  <gbenson at redhat.com>
+
+	* ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp
+	(CppInterpreter::native_entry): Remove unnecessary calls to
+	JavaThread::set_do_not_unlock and JavaThread::clr_do_not_unlock,
+	fixing an issue that caused asynchronous exceptions to be lost.
+
 2010-03-16  Deepak Bhole <dbhole at redhat.com>
 
 	* plugin/icedteanp/IcedTeaPluginRequestProcessor.cc
@@ -205,6 +511,17 @@ 2010-03-18  Pavel Tisnovsky <ptisnovs at re
 	* patches/icedtea-jtreg-httpTest.patch: new regression test
 	to check if the cacerts keytool database is configured and
 	created properly and if SSL is really working.
+
+2010-03-11  Gary Benson  <gbenson at redhat.com>
+
+	* ports/hotspot/src/share/vm/shark/sharkCompiler.cpp
+	(SharkCompiler::compile_method): Catch typeflow failures more
+	generally.
+	* ports/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp
+	(SharkTopLevelBlock::scan_for_traps): New trap.
+	(SharkTopLevelBlock::do_call): Add assertion to check the above.
+	(SharkTopLevelBlock::static_subtype_check): Deal with unloaded
+	object_klass.
 
 2010-03-11  Gary Benson  <gbenson at redhat.com>
 
diff -r 0424d3023049 -r 53901c78cd5f Makefile.am
--- a/Makefile.am	Tue Mar 16 10:29:49 2010 -0400
+++ b/Makefile.am	Fri May 14 17:37:29 2010 +0100
@@ -209,6 +209,7 @@ ICEDTEA_PATCHES = \
 	patches/zero/6909153.patch \
 	patches/zero/6913869.patch \
 	patches/zero/6914622.patch \
+	patches/zero/shark_do_nothing_on_stub_frame.patch \
 	patches/icedtea-notice-safepoints.patch \
 	patches/icedtea-parisc-opt.patch \
 	patches/icedtea-lucene-crash.patch \
diff -r 0424d3023049 -r 53901c78cd5f patches/icedtea-shark.patch
--- a/patches/icedtea-shark.patch	Tue Mar 16 10:29:49 2010 -0400
+++ b/patches/icedtea-shark.patch	Fri May 14 17:37:29 2010 +0100
@@ -101,27 +101,6 @@
  
    UnrollBlock* info = new UnrollBlock(array->frame_size() * BytesPerWord,
                                        caller_adjustment * BytesPerWord,
-@@ -890,7 +897,20 @@
-   // stuff a C2I adapter we can properly fill in the callee-save
-   // register locations.
-   frame caller = fr.sender(reg_map);
-+#ifdef ZERO
-+  int frame_size;
-+  {
-+    // In zero, frame::sp() is the *end* of the frame, so
-+    // caller.sp() - fr.sp() is the size of the *caller*.
-+    RegisterMap dummy_map(thread, false);
-+    frame frame_1 = thread->last_frame();
-+    frame frame_2 = frame_1.sender(&dummy_map);
-+    assert(frame_2.sp() == fr.sp(), "should be");
-+    frame_size = frame_2.sp() - frame_1.sp();
-+  }
-+#else
-   int frame_size = caller.sp() - fr.sp();
-+#endif // ZERO
- 
-   frame sender = caller;
- 
 @@ -1057,7 +1077,7 @@
  JRT_END
  
diff -r 0424d3023049 -r 53901c78cd5f patches/zero/shark_do_nothing_on_stub_frame.patch
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/zero/shark_do_nothing_on_stub_frame.patch	Fri May 14 17:37:29 2010 +0100
@@ -0,0 +1,15 @@
+Index: hotspot/src/share/vm/runtime/frame.cpp
+===================================================================
+--- openjdk/hotspot.orig/src/share/vm/runtime/frame.cpp	2010-02-17 04:11:10.000000000 +0100
++++ openjdk/hotspot/src/share/vm/runtime/frame.cpp	2010-03-25 10:06:18.334380336 +0100
+@@ -1205,6 +1205,10 @@
+          if (is_interpreted_frame())    { oops_interpreted_do(f, map, use_interpreter_oop_map_cache);
+   } else if (is_entry_frame())          { oops_entry_do      (f, map);
+   } else if (CodeCache::contains(pc())) { oops_code_blob_do  (f, map);
++#ifdef SHARK
++  } else if (is_fake_stub_frame()) {
++    // nothing to do
++#endif // SHARK
+   } else {
+     ShouldNotReachHere();
+   }
diff -r 0424d3023049 -r 53901c78cd5f ports/hotspot/make/linux/makefiles/zeroshark.make
--- a/ports/hotspot/make/linux/makefiles/zeroshark.make	Tue Mar 16 10:29:49 2010 -0400
+++ b/ports/hotspot/make/linux/makefiles/zeroshark.make	Fri May 14 17:37:29 2010 +0100
@@ -30,7 +30,9 @@ Obj_Files += asm_helper.o
 Obj_Files += asm_helper.o
 Obj_Files += cppInterpreter_arm.o
 
-CFLAGS += -DHOTSPOT_ASM
+#XXX disabled until it has the updated frame anchor code (PR icedtea/323)
+#XXX and the updated calling convention for deopt (PR icedtea/484)
+#CFLAGS += -DHOTSPOT_ASM
 
 %.o: %.S
 	@echo Assembling $<
diff -r 0424d3023049 -r 53901c78cd5f ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp
--- a/ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp	Tue Mar 16 10:29:49 2010 -0400
+++ b/ports/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp	Fri May 14 17:37:29 2010 +0100
@@ -37,27 +37,18 @@
   thread->reset_last_Java_frame();              \
   fixup_after_potential_safepoint()
 
-void CppInterpreter::normal_entry(methodOop method, intptr_t UNUSED, TRAPS) {
+int CppInterpreter::normal_entry(methodOop method, intptr_t UNUSED, TRAPS) {
   JavaThread *thread = (JavaThread *) THREAD;
-  ZeroStack *stack = thread->zero_stack();
-
-  // Adjust the caller's stack frame to accomodate any additional
-  // local variables we have contiguously with our parameters.
-  int extra_locals = method->max_locals() - method->size_of_parameters();
-  if (extra_locals > 0) {
-    if (extra_locals > stack->available_words()) {
-      Unimplemented();
-    }
-    for (int i = 0; i < extra_locals; i++)
-      stack->push(0);
-  }
 
   // Allocate and initialize our frame.
-  InterpreterFrame *frame = InterpreterFrame::build(stack, method, thread);
+  InterpreterFrame *frame = InterpreterFrame::build(method, CHECK_0);
   thread->push_zero_frame(frame);
 
   // Execute those bytecodes!
   main_loop(0, THREAD);
+
+  // No deoptimized frames on the stack
+  return 0;
 }
 
 void CppInterpreter::main_loop(int recurse, TRAPS) {
@@ -75,12 +66,6 @@ void CppInterpreter::main_loop(int recur
 
   intptr_t *result = NULL;
   int result_slots = 0;
-
-  // Check we're not about to run out of stack
-  if (stack_overflow_imminent(thread)) {
-    CALL_VM_NOCHECK(InterpreterRuntime::throw_StackOverflowError(thread));
-    goto unwind_and_return;
-  }
 
   while (true) {
     // We can set up the frame anchor with everything we want at
@@ -123,9 +108,9 @@ void CppInterpreter::main_loop(int recur
       int monitor_words = frame::interpreter_frame_monitor_size();
 
       // Allocate the space
-      if (monitor_words > stack->available_words()) {
-        Unimplemented();
-      }
+      stack->overflow_check(monitor_words, THREAD);
+      if (HAS_PENDING_EXCEPTION)
+        break;
       stack->alloc(monitor_words * wordSize);
 
       // Move the expression stack contents
@@ -172,8 +157,6 @@ void CppInterpreter::main_loop(int recur
     }
   }
 
- unwind_and_return:
-
   // Unwind the current frame
   thread->pop_zero_frame();
 
@@ -185,7 +168,7 @@ void CppInterpreter::main_loop(int recur
     stack->push(result[-i]);
 }
 
-void CppInterpreter::native_entry(methodOop method, intptr_t UNUSED, TRAPS) {
+int CppInterpreter::native_entry(methodOop method, intptr_t UNUSED, TRAPS) {
   // Make sure method is native and not abstract
   assert(method->is_native() && !method->is_abstract(), "should be");
 
@@ -193,20 +176,13 @@ void CppInterpreter::native_entry(method
   ZeroStack *stack = thread->zero_stack();
 
   // Allocate and initialize our frame
-  InterpreterFrame *frame = InterpreterFrame::build(stack, method, thread);
+  InterpreterFrame *frame = InterpreterFrame::build(method, CHECK_0);
   thread->push_zero_frame(frame);
   interpreterState istate = frame->interpreter_state();
   intptr_t *locals = istate->locals();
 
-  // Check we're not about to run out of stack
-  if (stack_overflow_imminent(thread)) {
-    CALL_VM_NOCHECK(InterpreterRuntime::throw_StackOverflowError(thread));
-    goto unwind_and_return;



More information about the distro-pkg-dev mailing list