RFR (M): 7157365: jruby/bench.bench_timeout crashes with JVM internal error
Christian Thalinger
christian.thalinger at oracle.com
Thu Jun 14 14:38:49 PDT 2012
http://cr.openjdk.java.net/~twisti/7157365
7157365: jruby/bench.bench_timeout crashes with JVM internal error
Reviewed-by:
The problem manifests itself as an assert in escape analysis code:
assert((ptnode_adr(adr->_idx) == NULL || ptnode_adr(adr->_idx)->as_Field()->is_oop())) failed: sanity
The out-of-line code for invokedynamic instructions loads the CallSite object
from the constant pool cache. Since the constant pool cache contains data
other than oops we return the type as byte[] and load the oop as raw pointer.
Escape analysis notices this misbehavior and bails out.
The best possible fix for now is to define the constant pool cache base
pointer as an oop array and load a raw pointer from there.
Note that this is more of a temporary fix since the perm-gen removal will fix
this problem in a more correct fashion.
src/share/vm/memory/universe.hpp
src/share/vm/opto/callGenerator.cpp
src/share/vm/opto/chaitin.cpp
src/share/vm/opto/type.cpp
More information about the hotspot-compiler-dev
mailing list