Joel Dice b5308c4866 synchronize on Java class rather than VM class in static synchronized methods
Previously, the following code would throw an IllegalMonitorStateException:

public class Test {
  public static synchronized void main(String[] args) {
    Test.class.notify();
  }
}

The problem stems from the fact that for a long time Avian has had two
representations of a given class: avian.VMClass and java.lang.Class.
It used to be that there was only one, java.lang.Class, but that
didn't play nicely with OpenJDK's class library, so we split it into
two.  Unfortunately, we forgot to update the JIT and interpreter
accordingly, so a static synchronized method would acquire the
avian.VMClass instance, whereas Foo.class.notify() would be invoked on
the java.lang.Class instance.

This commit fixes it.
2016-01-16 08:34:30 -07:00
..
2014-03-24 10:47:37 -06:00
2015-10-19 15:10:53 -06:00
2013-11-04 12:08:22 -06:00
2015-06-04 23:01:19 +09:00
2015-06-04 16:02:29 +09:00
2013-12-06 19:30:04 -07:00
2014-01-20 10:17:22 -07:00
2011-11-03 12:30:51 -06:00
2008-11-02 15:25:51 -07:00