Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Commits on Dec 21, 2010
  1. @dicej

    fix race condition leading to deadlock on exit

    dicej authored
    There is a delay between when we tell the OS to start a thread and
    when it actually starts, and during that time a thread might
    mistakenly think it was the last to exit, try to shut down the VM, and
    then block in joinAll when it finds it wasn't the last one after all.
    The solution is to increment Machine::liveCount and add the new thread
    to the process tree before starting it -- all while holding
    Machine::stateLock for atomicity.  This helps guarantee that when
    liveCount is one, we can be sure there's really only one thread
    running or staged to run.
  2. @dicej
Commits on Dec 20, 2010
  1. @dicej

    set Thread::exception to null before creating ExceptionInInitializerE…

    dicej authored
    If we don't do this, the VM will crash when it tries to create a stack
    trace for the error because makeObjectArray will return null
    immediately when it sees there is a pending exception.
  2. @dicej

    use "no-underscore" naming convention for 64-bit Windows

    dicej authored
    GCC 4.5.1 and later use a naming convention where functions are not
    prefixed with an underscore, whereas previous versions added the
    underscore.  This change was made to ensure compatibility with
    Microsoft's compiler.  Since GCC 4.5.0 has a serious code generation
    bug, we now only support later versions, so it makes sense to assume
    the newer convention.
Commits on Dec 16, 2010
  1. @dicej

    fix race condition in monitorRelease

    dicej authored
    There was an unlikely but dangerous race condition in monitorRelease
    such that when a thread released a monitor and then tried to notify
    the next thread in line, the latter thread might exit before it can be
    notified.  This potentially led to a crash as the former thread tried
    to acquire and notify the latter thread's private lock after it had
    been disposed.
    The solution is to do as we do in the interrupt and join cases: call
    acquireSystem first and thereby either block the target thread from
    exiting until we're done or find that it has already exited, in which
    case nothing needs to be done.
    I also looked at monitorNotify to see if we have a similar bug there,
    but in that case the target thread can't exit without first acquiring
    and releasing the monitor, and since we ensure that no thread can
    execute monitorNotify without holding the monitor, there's no
    potential for a race.
Commits on Dec 15, 2010
  1. @dicej
Commits on Dec 10, 2010
  1. @dicej

    update gprIndex when switching to stack-based argument passing

    dicej authored
    This is necessary when passing a 64-bit value on 32-bit ARM since
    otherwise we risk using a register for the following argument instead
    of the stack.
  2. @dicej
  3. @dicej

    fix GC safety bugs

    dicej authored
  4. @dicej

    fix assertion abort when generating boot image

    dicej authored
    In makeCodeImage, we were passing zero to Promise::Listener::resolve,
    which would lead to an assertion error if the address of the code
    image was further from the base of the address space (i.e. zero) than
    could be spanned by a jump on the target architecture.  Since, in this
    context, we immediately overwrite the value stored, we may pass
    whatever we want to this function (we're only calling it so we can
    retrieve the location of the value in the image), and the code image
    pointer is a better choice for the above reason.
  5. @dicej

    avoid inifinite recursion if java.lang.Object is missing; refactoring

    dicej authored
    When trying to create an array class, we try to resolve
    java.lang.Object so we can use its vtable in the array class.
    However, if Object is missing, we'll try to create and throw a
    ClassNotFoundException, which requires creating an array to store the
    stack trace, which requires creating an array class, which requires
    resolving Object, etc..  This commit short-circuits this process by
    telling resolveClass not to create and throw an exception if it can't
    find Object.
    While doing the above work, I noticed that the implementations of
    Classpath::makeThrowable in classpath-avian.cpp and
    classpath-openjdk.cpp were identical, so I made makeThrowable a
    top-level function.
    Finally, I discovered that Thread.setDaemon can only be called before
    the target thread has been started, which allowed me to simplify the
    code to track daemon threads in the VM.
Commits on Dec 9, 2010
  1. @dicej
  2. @dicej
  3. @dicej
Commits on Dec 8, 2010
  1. @dicej
  2. @dicej
Commits on Dec 7, 2010
  1. @dicej

    fix return address code offset calculation on ARM

    dicej authored
    We have to be careful about how we calculate return addresses on ARM
    due to padding introduced by constant pools interspersed with code.
    When calculating the offset of code where we're inserting a constant
    pool, we want the offset of the end of the pool for jump targets, but
    we want the offset just prior to the beginning of the pool (i.e. the
    offset of the instruction responsible for jumping past the pool) when
    calculating a return address.
  2. @dicej
Commits on Dec 6, 2010
  1. @dicej
  2. @dicej

    update copyright years

    dicej authored
  3. @dicej

    increment version number to 0.4

    dicej authored
  4. @dicej
  5. @dicej

    add boot-javahome.cpp

    dicej authored
    This should have been included in an earlier commit.
  6. @dicej

    fix misspelling in

    dicej authored
  7. @dicej
  8. @dicej
  9. @dicej
  10. @dicej
Commits on Dec 4, 2010
  1. @dicej
Commits on Dec 3, 2010
  1. @dicej

    fix PowerPC build

    dicej authored
Commits on Dec 2, 2010
  1. @dicej

    fix posix openjdk-src build

    dicej authored
  2. @dicej

    revert part of earlier comment involving setDaemon and runJavaThread

    dicej authored
    The code added to runJavaThread was unecessary and harmful since it
    allowed the global daemon thread count to become permanently
    out-of-sync with the actual number of daemon threads.
  3. @dicej

    fix windows cross openjdk-src build

    dicej authored
    This mainly involves some makefile ugliness to work around bugs in the
    native Windows OpenJDK code involving conflicting static and
    not-static declarations which GCC 4.0 and later justifiably reject but
    MSVC tolerates.
Commits on Dec 1, 2010
  1. @dicej

    fix windows cross build

    dicej authored
  2. @dicej
Something went wrong with that request. Please try again.