Hi Archie,

On Tue, 2006-05-23 at 04:57 -0500, Archie Cobbs wrote:
> After upgradeing JCVM to 0.91, I'm seeing an exception due to broken
> static initializer ordering in java.lang.VMClassLoader. The "bootjars"
> static field is initialized on line 173, but this is after its use
> (indirectly) in the static initializer that starts on line 83.
> [...]
> I'm very curious though.. why is nobody else seeing these problems??
> It doesn't seem VM-specific but maybe I'm missing something.

Kaffe was seeing the same as you in VMClassLoader. And they fixed it in
the same way you did. Sorry for not catching that earlier.
JamVM and Cacao use a completely different VMClassLoader implementation.

It seems all other runtimes have their own VMString.intern()
implementation (since they keep a class string constants pool already)
so they aren't hit by the second issue you are seeing.

The problem comes from the following "workaround" for another bootstrap
issue in Math:

  // FIXME - This is here because we need to load the "javalang" system
  // library somewhere late in the bootstrap cycle. We cannot do this
  // from VMSystem or VMRuntime since those are used to actually load
  // the library. This is mainly here because historically Math was
  // late enough in the bootstrap cycle to start using System after it
  // was initialized (called from the java.util classes).
  static
  {
    if (Configuration.INIT_LOAD_LIBRARY)
      {
        System.loadLibrary("javalang");
      }
  }

I don't know yet what a clean solution is here.

Cheers,

Mark

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to