# HG changeset patch # User Roland Schatz # Date 1432803574 -7200 # Node ID 5cbaf1e9ff2ec17a1f348dbaa142c383183e4385 # Parent f73ffccf4240dc75418f13c89cfcc393182d9561 Remove reference to CompilationResult from HotSpotCompiledCode. diff -r f73ffccf4240 -r 5cbaf1e9ff2e 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 May 27 12:23:22 2015 +0200 +++ b/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/CompilationResult.java Thu May 28 10:59:34 2015 +0200 @@ -602,11 +602,10 @@ } /** - * Gets a fixed-size {@linkplain Arrays#asList(Object...) view} of the assumptions made during - * compilation. + * Gets the assumptions made during compilation. */ - public Collection getAssumptions() { - return assumptions == null ? Collections.emptyList() : Arrays.asList(assumptions); + public Assumption[] getAssumptions() { + return assumptions; } /** @@ -641,15 +640,14 @@ } /** - * Gets a fixed-size {@linkplain Arrays#asList(Object...) view} of the methods whose bytecodes - * were used as input to the compilation. + * Gets the methods whose bytecodes were used as input to the compilation. * * @return {@code null} if the compilation did not record method dependencies otherwise the * methods whose bytecodes were used as input to the compilation with the first element * being the root method of the compilation */ - public Collection getMethods() { - return methods == null ? null : Arrays.asList(methods); + public ResolvedJavaMethod[] getMethods() { + return methods; } public DataSection getDataSection() { diff -r f73ffccf4240 -r 5cbaf1e9ff2e graal/com.oracle.graal.asm.test/src/com/oracle/graal/asm/test/AssemblerTest.java --- a/graal/com.oracle.graal.asm.test/src/com/oracle/graal/asm/test/AssemblerTest.java Wed May 27 12:23:22 2015 +0200 +++ b/graal/com.oracle.graal.asm.test/src/com/oracle/graal/asm/test/AssemblerTest.java Thu May 28 10:59:34 2015 +0200 @@ -63,6 +63,7 @@ CompilationResult compResult = new CompilationResult(); byte[] targetCode = test.generateCode(compResult, codeCache.getTarget(), registerConfig, cc); compResult.setTargetCode(targetCode, targetCode.length); + compResult.setTotalFrameSize(0); InstalledCode code = codeCache.addMethod(method, compResult, null, null); diff -r f73ffccf4240 -r 5cbaf1e9ff2e graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotCompiledCode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotCompiledCode.java Wed May 27 12:23:22 2015 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotCompiledCode.java Thu May 28 10:59:34 2015 +0200 @@ -36,6 +36,8 @@ import com.oracle.graal.api.code.CompilationResult.JumpTable; import com.oracle.graal.api.code.CompilationResult.Mark; import com.oracle.graal.api.code.CompilationResult.Site; +import com.oracle.graal.api.meta.Assumptions.Assumption; +import com.oracle.graal.api.meta.*; /** * A {@link CompilationResult} with additional HotSpot-specific information required for installing @@ -43,16 +45,28 @@ */ public abstract class HotSpotCompiledCode { - public final CompilationResult comp; - public final Site[] sites; public final ExceptionHandler[] exceptionHandlers; public final Comment[] comments; + public final Assumption[] assumptions; + + public final byte[] targetCode; + public final int targetCodeSize; public final byte[] dataSection; public final int dataSectionAlignment; public final DataPatch[] dataSectionPatches; + public final int totalFrameSize; + public final int customStackAreaOffset; + + /** + * The list of the methods whose bytecodes were used as input to the compilation. If + * {@code null}, then the compilation did not record method dependencies. Otherwise, the first + * element of this array is the root method of the compilation. + */ + public final ResolvedJavaMethod[] methods; + public static class Comment { public final String text; @@ -65,7 +79,6 @@ } public HotSpotCompiledCode(CompilationResult compResult) { - this.comp = compResult; sites = getSortedSites(compResult); if (compResult.getExceptionHandlers().isEmpty()) { exceptionHandlers = null; @@ -90,8 +103,12 @@ comments[i] = new Comment(annotation.position, text); } } + assumptions = compResult.getAssumptions(); assert validateFrames(); + targetCode = compResult.getTargetCode(); + targetCodeSize = compResult.getTargetCodeSize(); + DataSection data = compResult.getDataSection(); data.finalizeLayout(); dataSection = new byte[data.getSectionSize()]; @@ -102,6 +119,11 @@ dataSectionAlignment = data.getSectionAlignment(); dataSectionPatches = patchBuilder.build().toArray(len -> new DataPatch[len]); + + totalFrameSize = compResult.getTotalFrameSize(); + customStackAreaOffset = compResult.getCustomStackAreaOffset(); + + methods = compResult.getMethods(); } /** diff -r f73ffccf4240 -r 5cbaf1e9ff2e graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotCompiledRuntimeStub.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotCompiledRuntimeStub.java Wed May 27 12:23:22 2015 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotCompiledRuntimeStub.java Thu May 28 10:59:34 2015 +0200 @@ -53,7 +53,7 @@ // Stubs cannot be recompiled so they cannot be compiled with // assumptions and there is no point in recording evol_method dependencies - assert compResult.getAssumptions().isEmpty() : "stubs should not use assumptions: " + this; + assert compResult.getAssumptions() == null : "stubs should not use assumptions: " + this; assert compResult.getMethods() == null : "stubs should not record evol_method dependencies: " + this; for (DataPatch data : compResult.getDataPatches()) { diff -r f73ffccf4240 -r 5cbaf1e9ff2e src/share/vm/classfile/systemDictionary.hpp --- a/src/share/vm/classfile/systemDictionary.hpp Wed May 27 12:23:22 2015 +0200 +++ b/src/share/vm/classfile/systemDictionary.hpp Thu May 28 10:59:34 2015 +0200 @@ -225,7 +225,6 @@ GRAAL_ONLY(do_klass(DebugInfo_klass, com_oracle_graal_api_code_DebugInfo, Graal)) \ GRAAL_ONLY(do_klass(RegisterSaveLayout_klass, com_oracle_graal_api_code_RegisterSaveLayout, Graal)) \ GRAAL_ONLY(do_klass(BytecodeFrame_klass, com_oracle_graal_api_code_BytecodeFrame, Graal)) \ - GRAAL_ONLY(do_klass(CompilationResult_klass, com_oracle_graal_api_code_CompilationResult, Graal)) \ GRAAL_ONLY(do_klass(CompilationResult_Call_klass, com_oracle_graal_api_code_CompilationResult_Call, Graal)) \ GRAAL_ONLY(do_klass(CompilationResult_ConstantReference_klass, com_oracle_graal_api_code_CompilationResult_ConstantReference, Graal)) \ GRAAL_ONLY(do_klass(CompilationResult_DataPatch_klass, com_oracle_graal_api_code_CompilationResult_DataPatch, Graal)) \ diff -r f73ffccf4240 -r 5cbaf1e9ff2e src/share/vm/classfile/vmSymbols.hpp --- a/src/share/vm/classfile/vmSymbols.hpp Wed May 27 12:23:22 2015 +0200 +++ b/src/share/vm/classfile/vmSymbols.hpp Thu May 28 10:59:34 2015 +0200 @@ -334,7 +334,6 @@ GRAAL_ONLY(template(com_oracle_graal_api_meta_Assumptions_NoFinalizableSubclass, "com/oracle/graal/api/meta/Assumptions$NoFinalizableSubclass")) \ GRAAL_ONLY(template(com_oracle_graal_api_meta_Assumptions_ConcreteMethod, "com/oracle/graal/api/meta/Assumptions$ConcreteMethod")) \ GRAAL_ONLY(template(com_oracle_graal_api_meta_Assumptions_CallSiteTargetValue,"com/oracle/graal/api/meta/Assumptions$CallSiteTargetValue")) \ - GRAAL_ONLY(template(com_oracle_graal_api_code_CompilationResult, "com/oracle/graal/api/code/CompilationResult")) \ GRAAL_ONLY(template(com_oracle_graal_api_code_CompilationResult_Call, "com/oracle/graal/api/code/CompilationResult$Call")) \ GRAAL_ONLY(template(com_oracle_graal_api_code_CompilationResult_ConstantReference, "com/oracle/graal/api/code/CompilationResult$ConstantReference")) \ GRAAL_ONLY(template(com_oracle_graal_api_code_CompilationResult_DataPatch, "com/oracle/graal/api/code/CompilationResult$DataPatch")) \ diff -r f73ffccf4240 -r 5cbaf1e9ff2e src/share/vm/graal/graalCodeInstaller.cpp --- a/src/share/vm/graal/graalCodeInstaller.cpp Wed May 27 12:23:22 2015 +0200 +++ b/src/share/vm/graal/graalCodeInstaller.cpp Thu May 28 10:59:34 2015 +0200 @@ -390,7 +390,7 @@ 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); - objArrayHandle assumptions = CompilationResult::assumptions(HotSpotCompiledCode::comp(compiled_code)); + objArrayHandle assumptions = HotSpotCompiledCode::assumptions(compiled_code); if (!assumptions.is_null()) { int length = assumptions->length(); for (int i = 0; i < length; ++i) { @@ -413,7 +413,7 @@ } } } - objArrayHandle methods = CompilationResult::methods(HotSpotCompiledCode::comp(compiled_code)); + objArrayHandle methods = HotSpotCompiledCode::methods(compiled_code); if (!methods.is_null()) { int length = methods->length(); for (int i = 0; i < length; ++i) { @@ -483,7 +483,6 @@ } void CodeInstaller::initialize_fields(oop compiled_code) { - Handle comp_result = HotSpotCompiledCode::comp(compiled_code); if (compiled_code->is_a(HotSpotCompiledNmethod::klass())) { Handle hotspotJavaMethod = HotSpotCompiledNmethod::method(compiled_code); methodHandle method = getMethodFromHotSpotMethod(hotspotJavaMethod()); @@ -497,10 +496,10 @@ _sites_handle = JNIHandles::make_local(HotSpotCompiledCode::sites(compiled_code)); _exception_handlers_handle = JNIHandles::make_local(HotSpotCompiledCode::exceptionHandlers(compiled_code)); - _code_handle = JNIHandles::make_local(CompilationResult::targetCode(comp_result)); - _code_size = CompilationResult::targetCodeSize(comp_result); - _total_frame_size = CompilationResult::totalFrameSize(comp_result); - _custom_stack_area_offset = CompilationResult::customStackAreaOffset(comp_result); + _code_handle = JNIHandles::make_local(HotSpotCompiledCode::targetCode(compiled_code)); + _code_size = HotSpotCompiledCode::targetCodeSize(compiled_code); + _total_frame_size = HotSpotCompiledCode::totalFrameSize(compiled_code); + _custom_stack_area_offset = HotSpotCompiledCode::customStackAreaOffset(compiled_code); // Pre-calculate the constants section size. This is required for PC-relative addressing. _data_section_handle = JNIHandles::make_local(HotSpotCompiledCode::dataSection(compiled_code)); diff -r f73ffccf4240 -r 5cbaf1e9ff2e src/share/vm/graal/graalCompilerToVM.cpp --- a/src/share/vm/graal/graalCompilerToVM.cpp Wed May 27 12:23:22 2015 +0200 +++ b/src/share/vm/graal/graalCompilerToVM.cpp Thu May 28 10:59:34 2015 +0200 @@ -502,7 +502,6 @@ assert(installed_code_handle->is_a(InstalledCode::klass()), "wrong type"); InstalledCode::set_address(installed_code_handle, (jlong) cb); InstalledCode::set_version(installed_code_handle, InstalledCode::version(installed_code_handle) + 1); - oop comp_result = HotSpotCompiledCode::comp(compiled_code_handle); if (installed_code_handle->is_a(HotSpotInstalledCode::klass())) { HotSpotInstalledCode::set_size(installed_code_handle, cb->size()); HotSpotInstalledCode::set_codeStart(installed_code_handle, (jlong) cb->code_begin()); diff -r f73ffccf4240 -r 5cbaf1e9ff2e src/share/vm/graal/graalJavaAccess.hpp --- a/src/share/vm/graal/graalJavaAccess.hpp Wed May 27 12:23:22 2015 +0200 +++ b/src/share/vm/graal/graalJavaAccess.hpp Thu May 28 10:59:34 2015 +0200 @@ -68,13 +68,18 @@ boolean_field(HotSpotNmethod, isDefault) \ end_class \ start_class(HotSpotCompiledCode) \ - oop_field(HotSpotCompiledCode, comp, "Lcom/oracle/graal/api/code/CompilationResult;") \ objArrayOop_field(HotSpotCompiledCode, sites, "[Lcom/oracle/graal/api/code/CompilationResult$Site;") \ objArrayOop_field(HotSpotCompiledCode, exceptionHandlers, "[Lcom/oracle/graal/api/code/CompilationResult$ExceptionHandler;") \ objArrayOop_field(HotSpotCompiledCode, comments, "[Lcom/oracle/graal/hotspot/HotSpotCompiledCode$Comment;") \ + objArrayOop_field(HotSpotCompiledCode, assumptions, "[Lcom/oracle/graal/api/meta/Assumptions$Assumption;") \ + typeArrayOop_field(HotSpotCompiledCode, targetCode, "[B") \ + int_field(HotSpotCompiledCode, targetCodeSize) \ typeArrayOop_field(HotSpotCompiledCode, dataSection, "[B") \ int_field(HotSpotCompiledCode, dataSectionAlignment) \ objArrayOop_field(HotSpotCompiledCode, dataSectionPatches, "[Lcom/oracle/graal/api/code/CompilationResult$DataPatch;") \ + int_field(HotSpotCompiledCode, totalFrameSize) \ + int_field(HotSpotCompiledCode, customStackAreaOffset) \ + objArrayOop_field(HotSpotCompiledCode, methods, "[Lcom/oracle/graal/api/meta/ResolvedJavaMethod;") \ end_class \ start_class(HotSpotCompiledCode_Comment) \ oop_field(HotSpotCompiledCode_Comment, text, "Ljava/lang/String;") \ @@ -93,14 +98,6 @@ start_class(HotSpotForeignCallLinkageImpl) \ long_field(HotSpotForeignCallLinkageImpl, address) \ end_class \ - start_class(CompilationResult) \ - int_field(CompilationResult, totalFrameSize) \ - int_field(CompilationResult, customStackAreaOffset) \ - typeArrayOop_field(CompilationResult, targetCode, "[B") \ - objArrayOop_field(CompilationResult, assumptions, "[Lcom/oracle/graal/api/meta/Assumptions$Assumption;") \ - objArrayOop_field(CompilationResult, methods, "[Lcom/oracle/graal/api/meta/ResolvedJavaMethod;") \ - int_field(CompilationResult, targetCodeSize) \ - end_class \ start_class(Assumptions_NoFinalizableSubclass) \ oop_field(Assumptions_NoFinalizableSubclass, receiverType, "Lcom/oracle/graal/api/meta/ResolvedJavaType;") \ end_class \