comparison src/share/vm/graal/graalVMToCompiler.hpp @ 9126:bc26f978b0ce

HotSpotResolvedObjectType: implement hasFinalizeSubclass() correctly don't use the (wrong) cached value, but ask the runtime on each request. Fixes regression on xml.* benchmarks @ specjvm2008. The problem was: After the constructor of Object was deoptimized due to an assumption violation, it was recompiled again after some time. However, on recompilation, the value of hasFinalizeSubclass for the class was not updated and it was compiled again with a, now wrong, assumption, which then triggers deoptimization again. This was repeated until it hit the recompilation limit (defined by PerMethodRecompilationCutoff), and therefore only executed by the interpreter from now on, causing the performance regression.
author Bernhard Urban <bernhard.urban@jku.at>
date Mon, 15 Apr 2013 19:54:58 +0200
parents 8bbbde9d0a52
children 2dc020b33a6e
comparison
equal deleted inserted replaced
9125:5b25562f8bd7 9126:bc26f978b0ce
75 static oop createResolvedJavaMethod(Handle holder, Method* method, TRAPS); 75 static oop createResolvedJavaMethod(Handle holder, Method* method, TRAPS);
76 76
77 // public abstract JavaType createUnresolvedJavaType(String name); 77 // public abstract JavaType createUnresolvedJavaType(String name);
78 static oop createUnresolvedJavaType(Handle name, TRAPS); 78 static oop createUnresolvedJavaType(Handle name, TRAPS);
79 79
80 // public abstract ResolvedJavaType createResolvedJavaType(long metaspaceKlass, String name, String simpleName, Class javaMirror, boolean hasFinalizableSubclass, int sizeOrSpecies); 80 // public abstract ResolvedJavaType createResolvedJavaType(long metaspaceKlass, String name, String simpleName, Class javaMirror, int sizeOrSpecies);
81 static oop createResolvedJavaType(Klass* klass, Handle name, Handle simpleName, Handle java_mirror, jboolean hasFinalizableSubclass, jint sizeOrSpecies, TRAPS); 81 static oop createResolvedJavaType(Klass* klass, Handle name, Handle simpleName, Handle java_mirror, jint sizeOrSpecies, TRAPS);
82 82
83 // public abstract JavaType createPrimitiveJavaType(int basicType); 83 // public abstract JavaType createPrimitiveJavaType(int basicType);
84 static oop createPrimitiveJavaType(int basicType, TRAPS); 84 static oop createPrimitiveJavaType(int basicType, TRAPS);
85 85
86 // public abstract Constant createConstant(Kind kind, long value); 86 // public abstract Constant createConstant(Kind kind, long value);