Review Request: 6896043: Zero fixes

Gary Benson gbenson at redhat.com
Thu Nov 19 05:15:16 PST 2009


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

-- 
http://gbenson.net/


More information about the hotspot-compiler-dev mailing list