Review Request: 6896043: Zero fixes

Vladimir Kozlov Vladimir.Kozlov at Sun.COM
Fri Nov 20 14:51:52 PST 2009


Gary,

 >   hotspot/src/cpu/zero/vm/entry_zero.hpp:

To be clear. You did it to inline methods in debug VM version, right?
They will be optimized for optimized builds anyway.

 >   hotspot/src/cpu/zero/vm/frame_zero.hpp,
 >   hotspot/src/cpu/zero/vm/frame_zero.cpp:

Can you add at least an assert into sender_for_nonentry_frame() to
verify expected frame types?

 >
 >   hotspot/src/share/vm/runtime/os.hpp:

Can you explain why your changes is not the same as the comment says?:
((_mem_serialize_page ^ addr) & -pagesize) == 0

Thanks,
Vladimir

Gary Benson wrote:
> Hi all,
> 
> This last week I've spent some time going through all the patches
> in IcedTea and picking out the ones that affect Zero.  This webrev
> contains those, along with a fix for a build failure and a little
> bit of new code that's required for the latest Shark.
> 
>   http://cr.openjdk.java.net/~gbenson/zero-update-01-hs/
> 
> I've bundled them into one webrev, since each change is small, but
> if separate webrevs would be easier or better for you then let me
> know and I'll split it accordingly.
> 
> The changes are as follows:
> 
>   hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp:
>     Add code to update the invocation counter for non-synchronized
>     native methods.  This causes Shark to generate wrappers for
>     hot methods, instead of using the interpreter entry.
> 
>   hotspot/src/cpu/zero/vm/entry_zero.hpp:
>     Inline a couple of methods.  This saves a frame every time the
>     interpreter calls a new Java method, and makes stack traces look
>     nicer in gdb.
> 
>   hotspot/src/cpu/zero/vm/frame_zero.hpp,
>   hotspot/src/cpu/zero/vm/frame_zero.cpp:
>     Zero has the same various frame::sender_for_${type}_frame methods
>     as the architecture-specific ports, but in Zero all frames are
>     handled identically except for entry frames.  This change replaces
>     most of the sender_for_${type}_frame with sender_for_entry_frame
>     and sender_for_nonentry_frame, simplifying the marshalling.  Adding
>     compiled native methods in Shark was going to introduce another
>     type of frame and so yet another sender_for_${type}_frame method
>     and I decided enough was enough :)
> 
>   hotspot/src/cpu/zero/vm/globals_zero.hpp:
>     Fix a build breakage introduced by 6887571.
> 
>   hotspot/src/cpu/zero/vm/sharedRuntime_zero.cpp:
>     Implemented SharedRuntime::generate_native_wrapper using Shark.
> 
>   hotspot/src/cpu/zero/vm/sharkFrame_zero.hpp:
>     Updated a friend declaration to match the latest version of Shark.
> 
>   hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp:
>     Fixed a bug where the invocation counter would be incremented
>     twice for backedges when not using Shark.  Fixed a bug where
>     SharedRuntime::OSR_migration_begin was incorrectly invoked
>     using CALL_VM.  Removed an old workaround that was causing
>     build failures on IA64.
> 
>   hotspot/src/share/vm/prims/jni.cpp:
>     Added an assertion to ensure Atomic::xchg and Atomic::xchg_ptr
>     are working correctly.  On most Zero platforms these are
>     implemented using a GCC intrinsic which *should* work as we
>     expect, but is allowed to only work for the values of 0 and 1
>     if that's all the platform can manage.
> 
>   hotspot/src/share/vm/prims/jvmtiManageCapabilities.cpp:
>     The C++ interpreter doesn't currently support JVMTI pop frame
>     or force early return messages.  This changes the capabilities
>     the VM reports to reflect that.
> 
>   hotspot/src/share/vm/runtime/os.hpp:
>     S390 rounds the addresses of segmentation faults to the nearest
>     page.  This changes os::is_memory_serialize_page to cope with
>     that.
> 
> Cheers,
> Gary
> 


More information about the hotspot-compiler-dev mailing list