Mercurial > hg > release > icedtea7-2.0
changeset 1481:fa456dbffc04
Merge with doko.
author | Andrew John Hughes <gnu_andrew@member.fsf.org> |
---|---|
date | Thu, 04 Dec 2008 14:09:57 +0000 |
parents | 7a0ac0efdfe9 (current diff) d0505857d8da (diff) |
children | 4c80afa670e8 |
files | ChangeLog Makefile.am patches/icedtea-shark-build.patch |
diffstat | 4 files changed, 362 insertions(+), 366 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog Thu Dec 04 12:36:04 2008 +0000 +++ b/ChangeLog Thu Dec 04 14:09:57 2008 +0000 @@ -108,6 +108,14 @@ 2008-12-03 Matthias Klose <doko@ubuntu.com> + * patches/icedtea-shark-build.patch: Regenerate. + * patches/icedtea-shark.patch: Regenerate. + * patches/icedtea-zero.patch: Regenerate. + * patches/icedtea-hotspot7-build-fixes.patch: Remove. + * Makefile.am (ZERO_PATCHES): Remove icedtea-hotspot7-build-fixes.patch. + +2008-12-03 Matthias Klose <doko@ubuntu.com> + * patches/icedtea-shark.patch: Moved to ... * patches/hotspot/original/icedtea-shark.patch: ... here. * patches/hotspot/14.0b08/icedtea-shark.patch: New, regenerated. @@ -324,6 +332,9 @@ (os::is_allocatable): Likewise. 2008-12-03 Matthias Klose <doko@ubuntu.com> +======= +2008-12-02 Matthias Klose <doko@ubuntu.com> +>>>>>>> other * patches/icedtea-format-warnings.patch: New. * patches/icedtea-format-warnings.patch: Likewise.
--- a/Makefile.am Thu Dec 04 12:36:04 2008 +0000 +++ b/Makefile.am Thu Dec 04 14:09:57 2008 +0000 @@ -1874,6 +1874,7 @@ patches/icedtea-display-mode-changer.patch \ patches/icedtea-testenv.patch \ patches/icedtea-format-warnings.patch \ +<<<<<<< local patches/icedtea-fortify-source.patch \ $(ZERO_PATCHES_COND) \ patches/icedtea-samejvm-safe.patch \ @@ -1887,6 +1888,9 @@ patches/security/icedtea-6734167.patch \ patches/security/icedtea-6755943.patch \ patches/security/icedtea-6766136.patch +======= + $(ZERO_PATCHES_COND) +>>>>>>> other if WITH_RHINO ICEDTEA_PATCHES += \
--- a/patches/icedtea-shark.patch Thu Dec 04 12:36:04 2008 +0000 +++ b/patches/icedtea-shark.patch Thu Dec 04 14:09:57 2008 +0000 @@ -1,6 +1,304 @@ -diff -ru openjdk/hotspot/src/share/vm/ci/ciMethod.cpp openjdk/hotspot/src/share/vm/ci/ciMethod.cpp ---- openjdk/hotspot/src/share/vm/ci/ciMethod.cpp 2008-06-20 10:22:10.000000000 +0100 -+++ openjdk/hotspot/src/share/vm/ci/ciMethod.cpp 2008-05-19 12:00:23.000000000 +0100 +--- openjdk/hotspot/src/share/vm/oops/methodOop.cpp.orig 2008-11-22 00:11:18.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/oops/methodOop.cpp 2008-12-03 14:33:48.000000000 +0000 +@@ -727,10 +727,14 @@ + } + + OrderAccess::storestore(); ++#ifdef SHARK ++ mh->_from_interpreted_entry = code->instructions_begin(); ++#else + mh->_from_compiled_entry = code->verified_entry_point(); + OrderAccess::storestore(); + // Instantly compiled code can execute. + mh->_from_interpreted_entry = mh->get_i2c_entry(); ++#endif // SHARK + + } + +--- openjdk/hotspot/src/share/vm/memory/cardTableModRefBS.hpp.orig 2008-11-22 00:11:18.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/memory/cardTableModRefBS.hpp 2008-12-03 14:33:48.000000000 +0000 +@@ -44,6 +44,7 @@ + friend class VMStructs; + friend class CardTableRS; + friend class CheckForUnmarkedOops; // Needs access to raw card bytes. ++ friend class SharkBuilder; + #ifndef PRODUCT + // For debugging. + friend class GuaranteeNotModClosure; +--- openjdk/hotspot/src/share/vm/runtime/globals.cpp.orig 2008-11-22 00:11:18.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/runtime/globals.cpp 2008-12-03 14:33:48.000000000 +0000 +@@ -176,6 +176,18 @@ + #define C2_NOTPRODUCT_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, "{C2 notproduct}", DEFAULT }, + #endif + ++#define SHARK_PRODUCT_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, "{Shark product}", DEFAULT }, ++#define SHARK_PD_PRODUCT_FLAG_STRUCT(type, name, doc) { #type, XSTR(name), &name, "{Shark pd product}", DEFAULT }, ++#define SHARK_DIAGNOSTIC_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, "{Shark diagnostic}", DEFAULT }, ++#ifdef PRODUCT ++ #define SHARK_DEVELOP_FLAG_STRUCT(type, name, value, doc) /* flag is constant */ ++ #define SHARK_PD_DEVELOP_FLAG_STRUCT(type, name, doc) /* flag is constant */ ++ #define SHARK_NOTPRODUCT_FLAG_STRUCT(type, name, value, doc) ++#else ++ #define SHARK_DEVELOP_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, "{Shark}", DEFAULT }, ++ #define SHARK_PD_DEVELOP_FLAG_STRUCT(type, name, doc) { #type, XSTR(name), &name, "{Shark pd}", DEFAULT }, ++ #define SHARK_NOTPRODUCT_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, "{Shark notproduct}", DEFAULT }, ++#endif + + static Flag flagTable[] = { + RUNTIME_FLAGS(RUNTIME_DEVELOP_FLAG_STRUCT, RUNTIME_PD_DEVELOP_FLAG_STRUCT, RUNTIME_PRODUCT_FLAG_STRUCT, RUNTIME_PD_PRODUCT_FLAG_STRUCT, RUNTIME_DIAGNOSTIC_FLAG_STRUCT, RUNTIME_EXPERIMENTAL_FLAG_STRUCT, RUNTIME_NOTPRODUCT_FLAG_STRUCT, RUNTIME_MANAGEABLE_FLAG_STRUCT, RUNTIME_PRODUCT_RW_FLAG_STRUCT, RUNTIME_LP64_PRODUCT_FLAG_STRUCT) +@@ -189,6 +201,9 @@ + #ifdef COMPILER2 + C2_FLAGS(C2_DEVELOP_FLAG_STRUCT, C2_PD_DEVELOP_FLAG_STRUCT, C2_PRODUCT_FLAG_STRUCT, C2_PD_PRODUCT_FLAG_STRUCT, C2_DIAGNOSTIC_FLAG_STRUCT, C2_NOTPRODUCT_FLAG_STRUCT) + #endif ++#ifdef SHARK ++ SHARK_FLAGS(SHARK_DEVELOP_FLAG_STRUCT, SHARK_PD_DEVELOP_FLAG_STRUCT, SHARK_PRODUCT_FLAG_STRUCT, SHARK_PD_PRODUCT_FLAG_STRUCT, SHARK_DIAGNOSTIC_FLAG_STRUCT, SHARK_NOTPRODUCT_FLAG_STRUCT) ++#endif + {0, NULL, NULL} + }; + +--- openjdk/hotspot/src/share/vm/runtime/vframeArray.cpp.orig 2008-11-22 00:11:18.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/runtime/vframeArray.cpp 2008-12-03 14:33:49.000000000 +0000 +@@ -64,6 +64,11 @@ + assert(monitor->owner() == NULL || (!monitor->owner()->is_unlocked() && !monitor->owner()->has_bias_pattern()), "object must be null or locked, and unbiased"); + BasicObjectLock* dest = _monitors->at(index); + dest->set_obj(monitor->owner()); ++#ifdef SHARK ++ // XXX This can be removed when Shark knows ++ // which monitors are in use. ++ if (monitor->owner()) ++#endif // SHARK + monitor->lock()->move_to(monitor->owner(), dest->lock()); + } + } +@@ -262,6 +267,11 @@ + top = iframe()->previous_monitor_in_interpreter_frame(top); + BasicObjectLock* src = _monitors->at(index); + top->set_obj(src->obj()); ++#ifdef SHARK ++ // XXX This can be removed when Shark knows ++ // which monitors are in use. ++ if (src->obj()) ++#endif // SHARK + src->lock()->move_to(src->obj(), top->lock()); + } + if (ProfileInterpreter) { +--- openjdk/hotspot/src/share/vm/runtime/vm_version.cpp.orig 2008-12-03 14:23:37.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/runtime/vm_version.cpp 2008-12-03 14:33:48.000000000 +0000 +@@ -94,12 +94,16 @@ + #ifdef TIERED + #define VMTYPE "Server" + #else ++#ifdef SHARK ++ #define VMTYPE "Shark" ++#else + #if defined(COMPILER1) || defined(COMPILER2) +- #define VMTYPE COMPILER1_PRESENT("Client") \ +- COMPILER2_PRESENT("Server") ++ #define VMTYPE COMPILER1_PRESENT("Client") \ ++ COMPILER2_PRESENT("Server") + #else + #define VMTYPE "Core" + #endif // COMPILER1 || COMPILER2 ++#endif // SHARK + #endif // TIERED + #endif // KERNEL + +--- openjdk/hotspot/src/share/vm/runtime/deoptimization.cpp.orig 2008-11-22 00:11:18.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/runtime/deoptimization.cpp 2008-12-03 14:33:48.000000000 +0000 +@@ -229,6 +229,7 @@ + + } + ++#ifndef SHARK + // Compute the caller frame based on the sender sp of stub_frame and stored frame sizes info. + CodeBlob* cb = stub_frame.cb(); + // Verify we have the right vframeArray +@@ -239,6 +240,10 @@ + assert(cb->is_deoptimization_stub() || cb->is_uncommon_trap_stub(), "just checking"); + Events::log("fetch unroll sp " INTPTR_FORMAT, unpack_sp); + #endif ++#else ++ intptr_t* unpack_sp = stub_frame.sender(&dummy_map).unextended_sp(); ++#endif // !SHARK ++ + // This is a guarantee instead of an assert because if vframe doesn't match + // we will unpack the wrong deoptimized frame and wind up in strange places + // where it will be very difficult to figure out what went wrong. Better +@@ -349,7 +354,9 @@ + + frame_pcs[0] = deopt_sender.raw_pc(); + ++#ifndef SHARK + assert(CodeCache::find_blob_unsafe(frame_pcs[0]) != NULL, "bad pc"); ++#endif // SHARK + + 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 + + +-#ifdef COMPILER2 ++#if defined(COMPILER2) || defined(SHARK) + void Deoptimization::load_class_by_index(constantPoolHandle constant_pool, int index, TRAPS) { + // in case of an unresolved klass entry, load the class. + if (constant_pool->tag_at(index).is_unresolved_klass()) { +@@ -1808,7 +1828,7 @@ + if (xtty != NULL) xtty->tail("statistics"); + } + } +-#else // COMPILER2 ++#else // COMPILER2 || SHARK + + + // Stubs for C1 only system. +@@ -1844,4 +1864,4 @@ + return buf; + } + +-#endif // COMPILER2 ++#endif // COMPILER2 || SHARK +--- openjdk/hotspot/src/share/vm/runtime/globals.hpp.orig 2008-12-03 14:22:17.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/runtime/globals.hpp 2008-12-03 14:33:48.000000000 +0000 +@@ -22,7 +22,7 @@ + * + */ + +-#if !defined(COMPILER1) && !defined(COMPILER2) ++#if !defined(COMPILER1) && !defined(COMPILER2) && !defined(SHARK) + define_pd_global(bool, BackgroundCompilation, false); + define_pd_global(bool, UseTLAB, false); + define_pd_global(bool, CICompileOSR, false); +--- openjdk/hotspot/src/share/vm/code/nmethod.hpp.orig 2008-11-22 00:11:18.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/code/nmethod.hpp 2008-12-03 14:33:48.000000000 +0000 +@@ -318,6 +318,7 @@ + + bool is_compiled_by_c1() const; + bool is_compiled_by_c2() const; ++ bool is_compiled_by_shark() const; + + // boundaries for different parts + address code_begin () const { return _entry_point; } +--- openjdk/hotspot/src/share/vm/code/nmethod.cpp.orig 2008-11-22 00:11:18.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/code/nmethod.cpp 2008-12-03 14:33:48.000000000 +0000 +@@ -65,6 +65,11 @@ + assert(compiler() != NULL, "must be"); + return compiler()->is_c2(); + } ++bool nmethod::is_compiled_by_shark() const { ++ if (is_native_method()) return false; ++ assert(compiler() != NULL, "must be"); ++ return compiler()->is_shark(); ++} + + + +@@ -1567,6 +1572,7 @@ + // Method that knows how to preserve outgoing arguments at call. This method must be + // called with a frame corresponding to a Java invoke + void nmethod::preserve_callee_argument_oops(frame fr, const RegisterMap *reg_map, OopClosure* f) { ++#ifndef SHARK + if (!method()->is_native()) { + SimpleScopeDesc ssd(this, fr.pc()); + Bytecode_invoke* call = Bytecode_invoke_at(ssd.method(), ssd.bci()); +@@ -1574,6 +1580,7 @@ + symbolOop signature = call->signature(); + fr.oops_compiled_arguments_do(signature, is_static, reg_map, f); + } ++#endif // !SHARK + } + + +@@ -2003,6 +2010,8 @@ + tty->print("(c1) "); + } else if (is_compiled_by_c2()) { + tty->print("(c2) "); ++ } else if (is_compiled_by_shark()) { ++ tty->print("(shark) "); + } else { + tty->print("(nm) "); + } +--- openjdk/hotspot/src/share/vm/compiler/compileBroker.cpp.orig 2008-11-22 00:11:18.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/compiler/compileBroker.cpp 2008-12-03 14:33:48.000000000 +0000 +@@ -554,6 +554,14 @@ + #endif + #endif // COMPILER2 + ++#ifdef SHARK ++#if defined(COMPILER1) || defined(COMPILER2) ++#error "Can't use COMPILER1 or COMPILER2 with shark" ++#endif ++ _compilers[0] = new SharkCompiler(); ++ _compilers[1] = _compilers[0]; ++#endif ++ + // Initialize the CompileTask free list + _task_free_list = NULL; + +--- openjdk/hotspot/src/share/vm/compiler/abstractCompiler.hpp.orig 2008-11-22 00:11:18.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/compiler/abstractCompiler.hpp 2008-12-03 14:33:48.000000000 +0000 +@@ -45,18 +45,26 @@ + // Missing feature tests + virtual bool supports_native() { return true; } + virtual bool supports_osr () { return true; } +-#if defined(TIERED) || ( !defined(COMPILER1) && !defined(COMPILER2)) ++#if defined(TIERED) || ( !defined(COMPILER1) && !defined(COMPILER2) && !defined(SHARK)) + virtual bool is_c1 () { return false; } + virtual bool is_c2 () { return false; } ++ virtual bool is_shark() { return false; } + #else + #ifdef COMPILER1 + bool is_c1 () { return true; } + bool is_c2 () { return false; } ++ bool is_shark() { return false; } + #endif // COMPILER1 + #ifdef COMPILER2 + bool is_c1 () { return false; } + bool is_c2 () { return true; } ++ bool is_shark() { return false; } + #endif // COMPILER2 ++#ifdef SHARK ++ bool is_c1 () { return false; } ++ bool is_c2 () { return false; } ++ bool is_shark() { return true; } ++#endif // SHARK + #endif // TIERED + + // Customization +--- openjdk/hotspot/src/share/vm/ci/ciMethod.hpp.orig 2008-11-22 00:11:18.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/ci/ciMethod.hpp 2008-12-03 14:33:48.000000000 +0000 +@@ -69,7 +69,7 @@ + + // Optional liveness analyzer. + MethodLiveness* _liveness; +-#ifdef COMPILER2 ++#if defined(COMPILER2) || defined(SHARK) + ciTypeFlow* _flow; + #endif + +--- openjdk/hotspot/src/share/vm/ci/ciMethod.cpp.orig 2008-11-22 00:11:18.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/ci/ciMethod.cpp 2008-12-03 14:33:48.000000000 +0000 @@ -56,9 +56,9 @@ _liveness = NULL; _bcea = NULL; @@ -66,320 +364,3 @@ } // ------------------------------------------------------------------ -diff -ru openjdk/hotspot/src/share/vm/ci/ciMethod.hpp openjdk/hotspot/src/share/vm/ci/ciMethod.hpp ---- openjdk/hotspot/src/share/vm/ci/ciMethod.hpp 2008-06-20 10:22:10.000000000 +0100 -+++ openjdk/hotspot/src/share/vm/ci/ciMethod.hpp 2008-05-19 12:10:30.000000000 +0100 -@@ -69,7 +69,7 @@ - - // Optional liveness analyzer. - MethodLiveness* _liveness; --#ifdef COMPILER2 -+#if defined(COMPILER2) || defined(SHARK) - ciTypeFlow* _flow; - #endif - -diff -ru openjdk/hotspot/src/share/vm/code/nmethod.cpp openjdk/hotspot/src/share/vm/code/nmethod.cpp ---- openjdk/hotspot/src/share/vm/code/nmethod.cpp 2008-06-20 10:22:11.000000000 +0100 -+++ openjdk/hotspot/src/share/vm/code/nmethod.cpp 2008-04-07 11:49:27.000000000 +0100 -@@ -66,6 +66,11 @@ - assert(compiler() != NULL, "must be"); - return compiler()->is_c2(); - } -+bool nmethod::is_compiled_by_shark() const { -+ if (is_native_method()) return false; -+ assert(compiler() != NULL, "must be"); -+ return compiler()->is_shark(); -+} - - - -@@ -1883,6 +1888,8 @@ - tty->print("(c1) "); - } else if (is_compiled_by_c2()) { - tty->print("(c2) "); -+ } else if (is_compiled_by_shark()) { -+ tty->print("(shark) "); - } else { - assert(is_native_method(), "Who else?"); - tty->print("(nm) "); -diff -ru openjdk/hotspot/src/share/vm/code/nmethod.hpp openjdk/hotspot/src/share/vm/code/nmethod.hpp ---- openjdk/hotspot/src/share/vm/code/nmethod.hpp 2008-06-20 10:22:11.000000000 +0100 -+++ openjdk/hotspot/src/share/vm/code/nmethod.hpp 2008-04-07 11:48:22.000000000 +0100 -@@ -290,6 +290,7 @@ - - bool is_compiled_by_c1() const; - bool is_compiled_by_c2() const; -+ bool is_compiled_by_shark() const; - - // boundaries for different parts - address code_begin () const { return _entry_point; } -diff -ru openjdk/hotspot/src/share/vm/compiler/abstractCompiler.hpp openjdk/hotspot/src/share/vm/compiler/abstractCompiler.hpp ---- openjdk/hotspot/src/share/vm/compiler/abstractCompiler.hpp 2008-06-20 10:22:11.000000000 +0100 -+++ openjdk/hotspot/src/share/vm/compiler/abstractCompiler.hpp 2008-04-07 11:50:35.000000000 +0100 -@@ -45,18 +45,26 @@ - // Missing feature tests - virtual bool supports_native() { return true; } - virtual bool supports_osr () { return true; } --#if defined(TIERED) || ( !defined(COMPILER1) && !defined(COMPILER2)) -+#if defined(TIERED) || ( !defined(COMPILER1) && !defined(COMPILER2) && !defined(SHARK)) - virtual bool is_c1 () { return false; } - virtual bool is_c2 () { return false; } -+ virtual bool is_shark() { return false; } - #else - #ifdef COMPILER1 - bool is_c1 () { return true; } - bool is_c2 () { return false; } -+ bool is_shark() { return false; } - #endif // COMPILER1 - #ifdef COMPILER2 - bool is_c1 () { return false; } - bool is_c2 () { return true; } -+ bool is_shark() { return false; } - #endif // COMPILER2 -+#ifdef SHARK -+ bool is_c1 () { return false; } -+ bool is_c2 () { return false; } -+ bool is_shark() { return true; } -+#endif // SHARK - #endif // TIERED - - // Customization -diff -ru openjdk/hotspot/src/share/vm/compiler/compileBroker.cpp openjdk/hotspot/src/share/vm/compiler/compileBroker.cpp ---- openjdk/hotspot/src/share/vm/compiler/compileBroker.cpp 2008-06-20 10:22:11.000000000 +0100 -+++ openjdk/hotspot/src/share/vm/compiler/compileBroker.cpp 2008-04-15 17:16:38.000000000 +0100 -@@ -554,6 +554,14 @@ - #endif - #endif // COMPILER2 - -+#ifdef SHARK -+#if defined(COMPILER1) || defined(COMPILER2) -+#error "Can't use COMPILER1 or COMPILER2 with shark" -+#endif -+ _compilers[0] = new SharkCompiler(); -+ _compilers[1] = _compilers[0]; -+#endif -+ - // Initialize the CompileTask free list - _task_free_list = NULL; - -diff -ru openjdk/hotspot/src/share/vm/memory/cardTableModRefBS.hpp openjdk/hotspot/src/share/vm/memory/cardTableModRefBS.hpp ---- openjdk/hotspot/src/share/vm/memory/cardTableModRefBS.hpp 2008-06-20 10:22:11.000000000 +0100 -+++ openjdk/hotspot/src/share/vm/memory/cardTableModRefBS.hpp 2008-05-06 10:43:55.000000000 +0100 -@@ -44,6 +44,7 @@ - friend class VMStructs; - friend class CardTableRS; - friend class CheckForUnmarkedOops; // Needs access to raw card bytes. -+ friend class SharkBuilder; - #ifndef PRODUCT - // For debugging. - friend class GuaranteeNotModClosure; -diff -ru openjdk/hotspot/src/share/vm/oops/methodOop.cpp openjdk/hotspot/src/share/vm/oops/methodOop.cpp ---- openjdk/hotspot/src/share/vm/oops/methodOop.cpp 2008-06-20 10:22:11.000000000 +0100 -+++ openjdk/hotspot/src/share/vm/oops/methodOop.cpp 2008-04-15 10:52:44.000000000 +0100 -@@ -730,10 +730,14 @@ void methodOopDesc::set_code(methodHandl - } - - OrderAccess::storestore(); -+#ifdef SHARK -+ mh->_from_interpreted_entry = code->instructions_begin(); -+#else - mh->_from_compiled_entry = code->verified_entry_point(); - OrderAccess::storestore(); - // Instantly compiled code can execute. - mh->_from_interpreted_entry = mh->get_i2c_entry(); -+#endif // SHARK - - } - -diff -ru openjdk/hotspot/src/share/vm/runtime/deoptimization.cpp openjdk/hotspot/src/share/vm/runtime/deoptimization.cpp ---- openjdk/hotspot/src/share/vm/runtime/deoptimization.cpp 2008-06-20 10:22:12.000000000 +0100 -+++ openjdk/hotspot/src/share/vm/runtime/deoptimization.cpp 2008-05-19 13:19:54.000000000 +0100 -@@ -999,7 +999,7 @@ - JRT_END - - --#ifdef COMPILER2 -+#if defined(COMPILER2) || defined(SHARK) - void Deoptimization::load_class_by_index(constantPoolHandle constant_pool, int index, TRAPS) { - // in case of an unresolved klass entry, load the class. - if (constant_pool->tag_at(index).is_unresolved_klass()) { -@@ -1750,7 +1750,7 @@ - if (xtty != NULL) xtty->tail("statistics"); - } - } --#else // COMPILER2 -+#else // COMPILER2 || SHARK - - - // Stubs for C1 only system. -@@ -1786,4 +1786,4 @@ - return buf; - } - --#endif // COMPILER2 -+#endif // COMPILER2 || SHARK -diff -ru openjdk/hotspot/src/share/vm/runtime/globals.cpp openjdk/hotspot/src/share/vm/runtime/globals.cpp ---- openjdk/hotspot/src/share/vm/runtime/globals.cpp 2008-06-20 10:22:12.000000000 +0100 -+++ openjdk/hotspot/src/share/vm/runtime/globals.cpp 2008-06-19 14:42:50.000000000 +0100 -@@ -158,6 +158,18 @@ - #define C2_NOTPRODUCT_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, "{C2 notproduct}", DEFAULT }, - #endif - -+#define SHARK_PRODUCT_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, "{Shark product}", DEFAULT }, -+#define SHARK_PD_PRODUCT_FLAG_STRUCT(type, name, doc) { #type, XSTR(name), &name, "{Shark pd product}", DEFAULT }, -+#define SHARK_DIAGNOSTIC_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, "{Shark diagnostic}", DEFAULT }, -+#ifdef PRODUCT -+ #define SHARK_DEVELOP_FLAG_STRUCT(type, name, value, doc) /* flag is constant */ -+ #define SHARK_PD_DEVELOP_FLAG_STRUCT(type, name, doc) /* flag is constant */ -+ #define SHARK_NOTPRODUCT_FLAG_STRUCT(type, name, value, doc) -+#else -+ #define SHARK_DEVELOP_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, "{Shark}", DEFAULT }, -+ #define SHARK_PD_DEVELOP_FLAG_STRUCT(type, name, doc) { #type, XSTR(name), &name, "{Shark pd}", DEFAULT }, -+ #define SHARK_NOTPRODUCT_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, "{Shark notproduct}", DEFAULT }, -+#endif - - static Flag flagTable[] = { - RUNTIME_FLAGS(RUNTIME_DEVELOP_FLAG_STRUCT, RUNTIME_PD_DEVELOP_FLAG_STRUCT, RUNTIME_PRODUCT_FLAG_STRUCT, RUNTIME_PD_PRODUCT_FLAG_STRUCT, RUNTIME_DIAGNOSTIC_FLAG_STRUCT, RUNTIME_NOTPRODUCT_FLAG_STRUCT, RUNTIME_MANAGEABLE_FLAG_STRUCT, RUNTIME_PRODUCT_RW_FLAG_STRUCT) -@@ -168,6 +180,9 @@ - #ifdef COMPILER2 - C2_FLAGS(C2_DEVELOP_FLAG_STRUCT, C2_PD_DEVELOP_FLAG_STRUCT, C2_PRODUCT_FLAG_STRUCT, C2_PD_PRODUCT_FLAG_STRUCT, C2_DIAGNOSTIC_FLAG_STRUCT, C2_NOTPRODUCT_FLAG_STRUCT) - #endif -+#ifdef SHARK -+ SHARK_FLAGS(SHARK_DEVELOP_FLAG_STRUCT, SHARK_PD_DEVELOP_FLAG_STRUCT, SHARK_PRODUCT_FLAG_STRUCT, SHARK_PD_PRODUCT_FLAG_STRUCT, SHARK_DIAGNOSTIC_FLAG_STRUCT, SHARK_NOTPRODUCT_FLAG_STRUCT) -+#endif - {0, NULL, NULL} - }; - -diff -ru openjdk/hotspot/src/share/vm/runtime/globals.hpp openjdk/hotspot/src/share/vm/runtime/globals.hpp ---- openjdk/hotspot/src/share/vm/runtime/globals.hpp 2008-06-20 10:22:23.000000000 +0100 -+++ openjdk/hotspot/src/share/vm/runtime/globals.hpp 2008-03-31 13:32:44.000000000 +0100 -@@ -22,7 +22,7 @@ - * - */ - --#if !defined(COMPILER1) && !defined(COMPILER2) -+#if !defined(COMPILER1) && !defined(COMPILER2) && !defined(SHARK) - define_pd_global(bool, BackgroundCompilation, false); - define_pd_global(bool, UseTLAB, false); - define_pd_global(bool, CICompileOSR, false); -diff -ru openjdk/hotspot/src/share/vm/runtime/vm_version.cpp openjdk/hotspot/src/share/vm/runtime/vm_version.cpp ---- openjdk/hotspot/src/share/vm/runtime/vm_version.cpp 2008-06-20 10:22:21.000000000 +0100 -+++ openjdk/hotspot/src/share/vm/runtime/vm_version.cpp 2008-04-15 11:22:07.000000000 +0100 -@@ -89,12 +89,16 @@ - #ifdef TIERED - #define VMTYPE "Server" - #else -+#ifdef SHARK -+ #define VMTYPE "Shark" -+#else - #if defined(COMPILER1) || defined(COMPILER2) -- #define VMTYPE COMPILER1_PRESENT("Client") \ -- COMPILER2_PRESENT("Server") -+ #define VMTYPE COMPILER1_PRESENT("Client") \ -+ COMPILER2_PRESENT("Server") - #else - #define VMTYPE "Core" - #endif // COMPILER1 || COMPILER2 -+#endif // SHARK - #endif // TIERED - - #ifndef HOTSPOT_VM_DISTRO -diff -r ef3bb05d21d5 openjdk/hotspot/src/share/vm/code/nmethod.cpp ---- openjdk/hotspot/src/share/vm/code/nmethod.cpp Fri Aug 08 11:17:59 2008 +0100 -+++ openjdk/hotspot/src/share/vm/code/nmethod.cpp Fri Aug 08 11:35:04 2008 +0100 -@@ -1453,6 +1453,7 @@ void nmethod::oops_do(OopClosure* f) { - // Method that knows how to preserve outgoing arguments at call. This method must be - // called with a frame corresponding to a Java invoke - void nmethod::preserve_callee_argument_oops(frame fr, const RegisterMap *reg_map, OopClosure* f) { -+#ifndef SHARK - if (!method()->is_native()) { - SimpleScopeDesc ssd(this, fr.pc()); - Bytecode_invoke* call = Bytecode_invoke_at(ssd.method(), ssd.bci()); -@@ -1460,6 +1461,7 @@ void nmethod::preserve_callee_argument_o - symbolOop signature = call->signature(); - fr.oops_compiled_arguments_do(signature, is_static, reg_map, f); - } -+#endif // !SHARK - } - - -diff -r 70711eb56d8e openjdk/hotspot/src/share/vm/runtime/deoptimization.cpp ---- openjdk/hotspot/src/share/vm/runtime/deoptimization.cpp Mon Sep 29 08:47:58 2008 +0100 -+++ openjdk/hotspot/src/share/vm/runtime/deoptimization.cpp Mon Sep 29 08:54:36 2008 +0100 -@@ -217,6 +217,7 @@ Deoptimization::UnrollBlock* Deoptimizat - - } - -+#ifndef SHARK - // Compute the caller frame based on the sender sp of stub_frame and stored frame sizes info. - CodeBlob* cb = stub_frame.cb(); - // Verify we have the right vframeArray -@@ -227,6 +228,10 @@ Deoptimization::UnrollBlock* Deoptimizat - assert(cb->is_deoptimization_stub() || cb->is_uncommon_trap_stub(), "just checking"); - Events::log("fetch unroll sp " INTPTR_FORMAT, unpack_sp); - #endif -+#else -+ intptr_t* unpack_sp = stub_frame.sender(&dummy_map).unextended_sp(); -+#endif // !SHARK -+ - // This is a guarantee instead of an assert because if vframe doesn't match - // we will unpack the wrong deoptimized frame and wind up in strange places - // where it will be very difficult to figure out what went wrong. Better -@@ -337,7 +342,9 @@ Deoptimization::UnrollBlock* Deoptimizat - - frame_pcs[0] = deopt_sender.raw_pc(); - -+#ifndef SHARK - assert(CodeCache::find_blob_unsafe(frame_pcs[0]) != NULL, "bad pc"); -+#endif // SHARK - - UnrollBlock* info = new UnrollBlock(array->frame_size() * BytesPerWord, - caller_adjustment * BytesPerWord, -@@ -832,7 +839,20 @@ vframeArray* Deoptimization::create_vfra - // 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; - -diff -r 70711eb56d8e openjdk/hotspot/src/share/vm/runtime/vframeArray.cpp ---- openjdk/hotspot/src/share/vm/runtime/vframeArray.cpp Mon Sep 29 08:47:58 2008 +0100 -+++ openjdk/hotspot/src/share/vm/runtime/vframeArray.cpp Mon Sep 29 08:56:26 2008 +0100 -@@ -64,6 +64,11 @@ void vframeArrayElement::fill_in(compile - assert(monitor->owner() == NULL || (!monitor->owner()->is_unlocked() && !monitor->owner()->has_bias_pattern()), "object must be null or locked, and unbiased"); - BasicObjectLock* dest = _monitors->at(index); - dest->set_obj(monitor->owner()); -+#ifdef SHARK -+ // XXX This can be removed when Shark knows -+ // which monitors are in use. -+ if (monitor->owner()) -+#endif // SHARK - monitor->lock()->move_to(monitor->owner(), dest->lock()); - } - } -@@ -262,6 +267,11 @@ void vframeArrayElement::unpack_on_stack - top = iframe()->previous_monitor_in_interpreter_frame(top); - BasicObjectLock* src = _monitors->at(index); - top->set_obj(src->obj()); -+#ifdef SHARK -+ // XXX This can be removed when Shark knows -+ // which monitors are in use. -+ if (src->obj()) -+#endif // SHARK - src->lock()->move_to(src->obj(), top->lock()); - } - if (ProfileInterpreter) {
--- a/patches/icedtea-zero.patch Thu Dec 04 12:36:04 2008 +0000 +++ b/patches/icedtea-zero.patch Thu Dec 04 14:09:57 2008 +0000 @@ -1,6 +1,6 @@ ---- openjdk/hotspot/src/os/linux/vm/os_linux.cpp.orig 2008-07-27 08:37:02.000000000 +0000 -+++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp 2008-07-27 08:43:41.000000000 +0000 -@@ -159,7 +159,9 @@ +--- openjdk/hotspot/src/os/linux/vm/os_linux.cpp.orig 2008-12-03 19:33:43.000000000 +0000 ++++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp 2008-12-03 19:44:02.000000000 +0000 +@@ -176,7 +176,9 @@ #endif // Cpu architecture string @@ -11,7 +11,7 @@ static char cpu_arch[] = "ia64"; #elif defined(IA32) static char cpu_arch[] = "i386"; -@@ -1665,7 +1667,14 @@ +@@ -1712,7 +1714,14 @@ {EM_SPARC32PLUS, EM_SPARC, ELFCLASS32, ELFDATA2MSB, (char*)"Sparc 32"}, {EM_SPARCV9, EM_SPARCV9, ELFCLASS64, ELFDATA2MSB, (char*)"Sparc v9 64"}, {EM_PPC, EM_PPC, ELFCLASS32, ELFDATA2MSB, (char*)"Power PC 32"}, @@ -27,10 +27,10 @@ }; #if (defined IA32) -@@ -1682,9 +1691,23 @@ - static Elf32_Half running_arch_code=EM_PPC64; - #elif (defined __powerpc__) - static Elf32_Half running_arch_code=EM_PPC; +@@ -1729,9 +1738,23 @@ + static Elf32_Half running_arch_code=EM_PPC64; + #elif (defined __powerpc__) + static Elf32_Half running_arch_code=EM_PPC; + #elif (defined ARM) + static Elf32_Half running_arch_code=EM_ARM; + #elif (defined S390) @@ -52,20 +52,20 @@ #endif // Identify compatability class for VM's architecture and library's architecture -@@ -1716,10 +1739,12 @@ - return NULL; +@@ -1763,10 +1786,12 @@ + return NULL; } +#ifndef S390 if (lib_arch.elf_class != arch_array[running_arch_index].elf_class) { ::snprintf(diag_msg_buf, diag_msg_max_length-1," (Possible cause: architecture word width mismatch)"); - return NULL; + return NULL; } +#endif // !S390 if (lib_arch.compat_class != arch_array[running_arch_index].compat_class) { if ( lib_arch.name!=NULL ) { -@@ -2354,7 +2379,9 @@ +@@ -2545,7 +2570,9 @@ // format has been changed), we'll use the largest page size supported by // the processor. @@ -75,9 +75,9 @@ FILE *fp = fopen("/proc/meminfo", "r"); if (fp) { ---- openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp.orig 2008-07-27 08:37:03.000000000 +0000 -+++ openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp 2008-07-27 08:38:13.000000000 +0000 -@@ -3030,9 +3030,9 @@ +--- openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp.orig 2008-11-20 08:41:04.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp 2008-12-03 19:40:11.000000000 +0000 +@@ -3031,9 +3031,9 @@ tty->print_cr("&native_fresult: " INTPTR_FORMAT, (uintptr_t) &this->_native_fresult); tty->print_cr("native_lresult: " INTPTR_FORMAT, (uintptr_t) this->_native_lresult); #endif @@ -89,8 +89,28 @@ tty->print_cr("self_link: " INTPTR_FORMAT, (uintptr_t) this->_self_link); } ---- openjdk/hotspot/src/share/vm/runtime/icache.cpp.orig 2008-07-27 08:37:02.000000000 +0000 -+++ openjdk/hotspot/src/share/vm/runtime/icache.cpp 2008-07-27 08:38:13.000000000 +0000 +--- openjdk/hotspot/src/share/vm/runtime/jniHandles.hpp.orig 2008-11-20 08:41:06.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/runtime/jniHandles.hpp 2008-12-03 19:40:11.000000000 +0000 +@@ -126,9 +126,17 @@ + // Fill block with bad_handle values + void zap(); + ++#ifdef ZERO ++ protected: ++ friend class CppInterpreter; ++#endif // ZERO ++ + // No more handles in the both the current and following blocks + void clear() { _top = 0; } + ++#ifdef ZERO ++ private: ++#endif // ZERO + // Free list computation + void rebuild_free_list(); + +--- openjdk/hotspot/src/share/vm/runtime/icache.cpp.orig 2008-11-20 08:41:06.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/runtime/icache.cpp 2008-12-03 19:45:03.000000000 +0000 @@ -78,6 +78,7 @@ } @@ -102,13 +122,13 @@ @@ -97,6 +98,7 @@ } call_flush_stub(start, round_to(nbytes, ICache::line_size) >> - ICache::log2_line_size); + ICache::log2_line_size); +#endif } // For init.cpp ---- openjdk/hotspot/src/share/vm/runtime/mutex.hpp.orig 2008-07-27 08:37:02.000000000 +0000 -+++ openjdk/hotspot/src/share/vm/runtime/mutex.hpp 2008-07-27 08:38:13.000000000 +0000 +--- openjdk/hotspot/src/share/vm/runtime/mutex.hpp.orig 2008-11-20 08:41:06.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/runtime/mutex.hpp 2008-12-03 19:40:11.000000000 +0000 @@ -61,18 +61,10 @@ } ; @@ -129,28 +149,8 @@ #endif class ParkEvent ; ---- openjdk/hotspot/src/share/vm/runtime/jniHandles.hpp.orig 2008-07-27 08:37:02.000000000 +0000 -+++ openjdk/hotspot/src/share/vm/runtime/jniHandles.hpp 2008-07-27 08:38:13.000000000 +0000 -@@ -126,9 +126,17 @@ - // Fill block with bad_handle values - void zap(); - -+#ifdef ZERO -+ protected: -+ friend class CppInterpreter; -+#endif // ZERO -+ - // No more handles in the both the current and following blocks - void clear() { _top = 0; } - -+#ifdef ZERO -+ private: -+#endif // ZERO - // Free list computation - void rebuild_free_list(); - ---- openjdk/hotspot/src/share/vm/utilities/vmError.cpp.orig 2008-07-27 08:37:02.000000000 +0000 -+++ openjdk/hotspot/src/share/vm/utilities/vmError.cpp 2008-07-27 08:38:13.000000000 +0000 +--- openjdk/hotspot/src/share/vm/utilities/vmError.cpp.orig 2008-12-03 19:33:25.000000000 +0000 ++++ openjdk/hotspot/src/share/vm/utilities/vmError.cpp 2008-12-03 19:40:11.000000000 +0000 @@ -25,6 +25,11 @@ # include "incls/_precompiled.incl" # include "incls/_vmError.cpp.incl" @@ -163,7 +163,7 @@ // List of environment variables that should be reported in error log file. const char *env_list[] = { // All platforms -@@ -392,6 +397,7 @@ +@@ -398,6 +403,7 @@ st->cr(); } @@ -171,7 +171,7 @@ STEP(110, "(printing stack bounds)" ) if (_verbose) { -@@ -449,11 +455,16 @@ +@@ -455,11 +461,16 @@ st->cr(); } } @@ -188,7 +188,7 @@ if (jt->has_last_Java_frame()) { st->print_cr("Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)"); for(StackFrameStream sfs(jt); !sfs.is_done(); sfs.next()) { -@@ -461,6 +472,7 @@ +@@ -467,6 +478,7 @@ st->cr(); } } @@ -196,7 +196,7 @@ } STEP(140, "(printing VM operation)" ) -@@ -472,6 +484,14 @@ void VMError::report(outputStream* st) { +@@ -478,6 +490,14 @@ op->print_on_error(st); st->cr(); st->cr();