# HG changeset patch # User Doug Simon # Date 1423651102 -3600 # Node ID 063e8873bd148d49e83e039064e939f5c932ec6f # Parent 8ab925a6f724e6c76c8cee95d806e734e059d1b8 changed type of assumptions field in CompilationResult from Assumptions to Assumption[] diff -r 8ab925a6f724 -r 063e8873bd14 graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/Assumptions.java --- a/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/Assumptions.java Wed Feb 11 10:13:08 2015 +0100 +++ b/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/Assumptions.java Wed Feb 11 11:38:22 2015 +0100 @@ -274,10 +274,6 @@ } } - /** - * Array with the assumptions. This field is directly accessed from C++ code in the - * Graal/HotSpot implementation. - */ private Assumption[] list; private int count; @@ -430,21 +426,11 @@ count++; } - public Collection getAssumptions() { - return Arrays.asList(list).subList(0, count); - } - - private Assumptions(Assumptions other) { - allowOptimisticAssumptions = other.allowOptimisticAssumptions; - list = other.list.clone(); - count = other.count; - } - /** - * Gets a deep copy of this object. + * Gets a copy of the assumptions recorded in this object as an array. */ - public Assumptions copy() { - return new Assumptions(this); + public Assumption[] getAssumptionsCopy() { + return Arrays.copyOf(list, count); } /** diff -r 8ab925a6f724 -r 063e8873bd14 graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/CompilationResult.java --- a/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/CompilationResult.java Wed Feb 11 10:13:08 2015 +0100 +++ b/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/CompilationResult.java Wed Feb 11 11:38:22 2015 +0100 @@ -28,6 +28,7 @@ import java.io.*; import java.util.*; +import com.oracle.graal.api.code.Assumptions.Assumption; import com.oracle.graal.api.code.CodeUtil.RefMapFormatter; import com.oracle.graal.api.meta.*; @@ -528,7 +529,7 @@ private ArrayList annotations; - private Assumptions assumptions; + private Assumption[] assumptions; public CompilationResult() { this(null); @@ -607,11 +608,15 @@ } public void setAssumptions(Assumptions assumptions) { - this.assumptions = assumptions; + this.assumptions = assumptions.getAssumptionsCopy(); } - public Assumptions getAssumptions() { - return assumptions; + /** + * Gets a fixed-size {@linkplain Arrays#asList(Object...) view} of the assumptions recorded in + * this object. + */ + public Collection getAssumptions() { + return assumptions == null ? Collections.emptyList() : Arrays.asList(assumptions); } public DataSection getDataSection() { diff -r 8ab925a6f724 -r 063e8873bd14 graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCompilerImpl.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCompilerImpl.java Wed Feb 11 10:13:08 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCompilerImpl.java Wed Feb 11 11:38:22 2015 +0100 @@ -169,12 +169,12 @@ List validAssumptions = new ArrayList<>(); Assumptions newAssumptions = new Assumptions(true); - for (Assumption assumption : graph.getAssumptions().getAssumptions()) { + for (Assumption assumption : graph.getAssumptions()) { processAssumption(newAssumptions, assumption, validAssumptions); } if (result.getAssumptions() != null) { - for (Assumption assumption : result.getAssumptions().getAssumptions()) { + for (Assumption assumption : result.getAssumptions()) { processAssumption(newAssumptions, assumption, validAssumptions); } } diff -r 8ab925a6f724 -r 063e8873bd14 src/share/vm/classfile/systemDictionary.hpp --- a/src/share/vm/classfile/systemDictionary.hpp Wed Feb 11 10:13:08 2015 +0100 +++ b/src/share/vm/classfile/systemDictionary.hpp Wed Feb 11 11:38:22 2015 +0100 @@ -204,7 +204,6 @@ GRAAL_ONLY(do_klass(HotSpotMetaspaceConstantImpl_klass, com_oracle_graal_hotspot_meta_HotSpotMetaspaceConstantImpl, Graal)) \ GRAAL_ONLY(do_klass(HotSpotStackFrameReference_klass, com_oracle_graal_hotspot_HotSpotStackFrameReference, Graal)) \ GRAAL_ONLY(do_klass(CompilationTask_klass, com_oracle_graal_hotspot_CompilationTask, Graal)) \ - GRAAL_ONLY(do_klass(Assumptions_klass, com_oracle_graal_api_code_Assumptions, Graal)) \ GRAAL_ONLY(do_klass(Assumptions_ConcreteMethod_klass, com_oracle_graal_api_code_Assumptions_ConcreteMethod, Graal)) \ GRAAL_ONLY(do_klass(Assumptions_NoFinalizableSubclass_klass, com_oracle_graal_api_code_Assumptions_NoFinalizableSubclass, Graal))\ GRAAL_ONLY(do_klass(Assumptions_ConcreteSubtype_klass, com_oracle_graal_api_code_Assumptions_ConcreteSubtype, Graal)) \ diff -r 8ab925a6f724 -r 063e8873bd14 src/share/vm/classfile/vmSymbols.hpp --- a/src/share/vm/classfile/vmSymbols.hpp Wed Feb 11 10:13:08 2015 +0100 +++ b/src/share/vm/classfile/vmSymbols.hpp Wed Feb 11 11:38:22 2015 +0100 @@ -321,7 +321,6 @@ GRAAL_ONLY(template(com_oracle_graal_api_meta_Kind, "com/oracle/graal/api/meta/Kind")) \ GRAAL_ONLY(template(com_oracle_graal_api_meta_LIRKind, "com/oracle/graal/api/meta/LIRKind")) \ GRAAL_ONLY(template(com_oracle_graal_api_meta_AbstractValue, "com/oracle/graal/api/meta/AbstractValue")) \ - GRAAL_ONLY(template(com_oracle_graal_api_code_Assumptions, "com/oracle/graal/api/code/Assumptions")) \ GRAAL_ONLY(template(com_oracle_graal_api_code_Assumptions_MethodContents, "com/oracle/graal/api/code/Assumptions$MethodContents")) \ GRAAL_ONLY(template(com_oracle_graal_api_code_Assumptions_ConcreteSubtype, "com/oracle/graal/api/code/Assumptions$ConcreteSubtype")) \ GRAAL_ONLY(template(com_oracle_graal_api_code_Assumptions_NoFinalizableSubclass, "com/oracle/graal/api/code/Assumptions$NoFinalizableSubclass")) \ diff -r 8ab925a6f724 -r 063e8873bd14 src/share/vm/graal/graalCodeInstaller.cpp --- a/src/share/vm/graal/graalCodeInstaller.cpp Wed Feb 11 10:13:08 2015 +0100 +++ b/src/share/vm/graal/graalCodeInstaller.cpp Wed Feb 11 11:38:22 2015 +0100 @@ -389,9 +389,8 @@ CompilerThread* compilerThread = thread->is_Compiler_thread() ? thread->as_CompilerThread() : NULL; _oop_recorder = new OopRecorder(&_arena, true); _dependencies = new Dependencies(&_arena, _oop_recorder, compilerThread != NULL ? compilerThread->log() : NULL); - Handle assumptions_handle = CompilationResult::assumptions(HotSpotCompiledCode::comp(compiled_code)); - if (!assumptions_handle.is_null()) { - objArrayHandle assumptions(Thread::current(), Assumptions::list(assumptions_handle())); + objArrayHandle assumptions = CompilationResult::assumptions(HotSpotCompiledCode::comp(compiled_code)); + if (!assumptions.is_null()) { int length = assumptions->length(); for (int i = 0; i < length; ++i) { Handle assumption = assumptions->obj_at(i); diff -r 8ab925a6f724 -r 063e8873bd14 src/share/vm/graal/graalJavaAccess.hpp --- a/src/share/vm/graal/graalJavaAccess.hpp Wed Feb 11 10:13:08 2015 +0100 +++ b/src/share/vm/graal/graalJavaAccess.hpp Wed Feb 11 11:38:22 2015 +0100 @@ -96,12 +96,9 @@ int_field(CompilationResult, totalFrameSize) \ int_field(CompilationResult, customStackAreaOffset) \ typeArrayOop_field(CompilationResult, targetCode, "[B") \ - oop_field(CompilationResult, assumptions, "Lcom/oracle/graal/api/code/Assumptions;") \ + objArrayOop_field(CompilationResult, assumptions, "[Lcom/oracle/graal/api/code/Assumptions$Assumption;") \ int_field(CompilationResult, targetCodeSize) \ end_class \ - start_class(Assumptions) \ - objArrayOop_field(Assumptions, list, "[Lcom/oracle/graal/api/code/Assumptions$Assumption;") \ - end_class \ start_class(Assumptions_MethodContents) \ oop_field(Assumptions_MethodContents, method, "Lcom/oracle/graal/api/meta/ResolvedJavaMethod;") \ end_class \