# HG changeset patch # User rschatz # Date 1454498204 -3600 # Node ID 59a847ec6ee3f79e6353658a07d1104338276551 # Parent d04be2a635f243eb4452bd77c6845cec4633dae0 8146608: [JVMCI] DebugInfo Tests on DeoptimizeALot runs fails in assert(_pc == *pc_addr || pc == *pc_addr) frame::patch_pc() /frame_x86.cpp:285 Reviewed-by: twisti diff -r d04be2a635f2 -r 59a847ec6ee3 hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotCompiledCode.java --- a/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotCompiledCode.java Thu Feb 04 12:33:31 2016 +0100 +++ b/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotCompiledCode.java Wed Feb 03 12:16:44 2016 +0100 @@ -24,6 +24,7 @@ import jdk.vm.ci.code.BytecodeFrame; import jdk.vm.ci.code.CompiledCode; +import jdk.vm.ci.code.StackSlot; import jdk.vm.ci.code.site.DataPatch; import jdk.vm.ci.code.site.Infopoint; import jdk.vm.ci.code.site.Site; @@ -99,9 +100,9 @@ protected final int totalFrameSize; /** - * Offset in bytes for the custom stack area (relative to sp). + * The deopt rescue slot. Must be non-null if there is a safepoint in the method. */ - protected final int customStackAreaOffset; + protected final StackSlot deoptRescueSlot; public static class Comment { @@ -115,7 +116,7 @@ } public HotSpotCompiledCode(String name, byte[] targetCode, int targetCodeSize, Site[] sites, Assumption[] assumptions, ResolvedJavaMethod[] methods, Comment[] comments, byte[] dataSection, - int dataSectionAlignment, DataPatch[] dataSectionPatches, boolean isImmutablePIC, int totalFrameSize, int customStackAreaOffset) { + int dataSectionAlignment, DataPatch[] dataSectionPatches, boolean isImmutablePIC, int totalFrameSize, StackSlot deoptRescueSlot) { this.name = name; this.targetCode = targetCode; this.targetCodeSize = targetCodeSize; @@ -129,7 +130,7 @@ this.dataSectionPatches = dataSectionPatches; this.isImmutablePIC = isImmutablePIC; this.totalFrameSize = totalFrameSize; - this.customStackAreaOffset = customStackAreaOffset; + this.deoptRescueSlot = deoptRescueSlot; assert validateFrames(); } diff -r d04be2a635f2 -r 59a847ec6ee3 hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotCompiledNmethod.java --- a/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotCompiledNmethod.java Thu Feb 04 12:33:31 2016 +0100 +++ b/hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotCompiledNmethod.java Wed Feb 03 12:16:44 2016 +0100 @@ -22,6 +22,7 @@ */ package jdk.vm.ci.hotspot; +import jdk.vm.ci.code.StackSlot; import jdk.vm.ci.code.site.DataPatch; import jdk.vm.ci.code.site.Site; import jdk.vm.ci.inittimer.SuppressFBWarnings; @@ -55,9 +56,9 @@ @SuppressFBWarnings(value = "UWF_UNWRITTEN_FIELD", justification = "set by the VM") private String installationFailureMessage; public HotSpotCompiledNmethod(String name, byte[] targetCode, int targetCodeSize, Site[] sites, Assumption[] assumptions, ResolvedJavaMethod[] methods, Comment[] comments, byte[] dataSection, - int dataSectionAlignment, DataPatch[] dataSectionPatches, boolean isImmutablePIC, int totalFrameSize, int customStackAreaOffset, HotSpotResolvedJavaMethod method, int entryBCI, + int dataSectionAlignment, DataPatch[] dataSectionPatches, boolean isImmutablePIC, int totalFrameSize, StackSlot deoptRescueSlot, HotSpotResolvedJavaMethod method, int entryBCI, int id, long jvmciEnv, boolean hasUnsafeAccess) { - super(name, targetCode, targetCodeSize, sites, assumptions, methods, comments, dataSection, dataSectionAlignment, dataSectionPatches, isImmutablePIC, totalFrameSize, customStackAreaOffset); + super(name, targetCode, targetCodeSize, sites, assumptions, methods, comments, dataSection, dataSectionAlignment, dataSectionPatches, isImmutablePIC, totalFrameSize, deoptRescueSlot); this.method = method; this.entryBCI = entryBCI; this.id = id; diff -r d04be2a635f2 -r 59a847ec6ee3 hotspot/src/share/vm/jvmci/jvmciCodeInstaller.cpp --- a/hotspot/src/share/vm/jvmci/jvmciCodeInstaller.cpp Thu Feb 04 12:33:31 2016 +0100 +++ b/hotspot/src/share/vm/jvmci/jvmciCodeInstaller.cpp Wed Feb 03 12:16:44 2016 +0100 @@ -546,7 +546,7 @@ // Make sure a valid compile_id is associated with every compile id = CompileBroker::assign_compile_id_unlocked(Thread::current(), method, entry_bci); } - result = JVMCIEnv::register_method(method, nm, entry_bci, &_offsets, _custom_stack_area_offset, &buffer, + result = JVMCIEnv::register_method(method, nm, entry_bci, &_offsets, _orig_pc_offset, &buffer, stack_slots, _debug_recorder->_oopmaps, &_exception_handler_table, compiler, _debug_recorder, _dependencies, env, id, has_unsafe_access, _has_wide_vector, installed_code, compiled_code, speculation_log); @@ -576,7 +576,19 @@ _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); + + oop deoptRescueSlot = HotSpotCompiledCode::deoptRescueSlot(compiled_code); + if (deoptRescueSlot == NULL) { + _orig_pc_offset = -1; + } else { + _orig_pc_offset = StackSlot::offset(deoptRescueSlot); + if (StackSlot::addFrameSize(deoptRescueSlot)) { + _orig_pc_offset += _total_frame_size; + } + if (_orig_pc_offset < 0) { + JVMCI_ERROR("invalid deopt rescue slot: %d", _orig_pc_offset); + } + } // Pre-calculate the constants section size. This is required for PC-relative addressing. _data_section_handle = JNIHandles::make_local(HotSpotCompiledCode::dataSection(compiled_code)); @@ -724,6 +736,9 @@ if (site_InfopointReason::SAFEPOINT() == reason || site_InfopointReason::CALL() == reason || site_InfopointReason::IMPLICIT_EXCEPTION() == reason) { TRACE_jvmci_4("safepoint at %i", pc_offset); site_Safepoint(buffer, pc_offset, site, CHECK_OK); + if (_orig_pc_offset < 0) { + JVMCI_ERROR_OK("method contains safepoint, but has not deopt rescue slot"); + } } else { TRACE_jvmci_4("infopoint at %i", pc_offset); site_Infopoint(buffer, pc_offset, site, CHECK_OK); diff -r d04be2a635f2 -r 59a847ec6ee3 hotspot/src/share/vm/jvmci/jvmciCodeInstaller.hpp --- a/hotspot/src/share/vm/jvmci/jvmciCodeInstaller.hpp Thu Feb 04 12:33:31 2016 +0100 +++ b/hotspot/src/share/vm/jvmci/jvmciCodeInstaller.hpp Wed Feb 03 12:16:44 2016 +0100 @@ -125,7 +125,7 @@ jobject _code_handle; jint _code_size; jint _total_frame_size; - jint _custom_stack_area_offset; + jint _orig_pc_offset; jint _parameter_count; jint _constants_size; #ifndef PRODUCT diff -r d04be2a635f2 -r 59a847ec6ee3 hotspot/src/share/vm/jvmci/jvmciJavaClasses.hpp --- a/hotspot/src/share/vm/jvmci/jvmciJavaClasses.hpp Thu Feb 04 12:33:31 2016 +0100 +++ b/hotspot/src/share/vm/jvmci/jvmciJavaClasses.hpp Wed Feb 03 12:16:44 2016 +0100 @@ -91,7 +91,7 @@ objArrayOop_field(HotSpotCompiledCode, dataSectionPatches, "[Ljdk/vm/ci/code/site/DataPatch;") \ boolean_field(HotSpotCompiledCode, isImmutablePIC) \ int_field(HotSpotCompiledCode, totalFrameSize) \ - int_field(HotSpotCompiledCode, customStackAreaOffset) \ + oop_field(HotSpotCompiledCode, deoptRescueSlot, "Ljdk/vm/ci/code/StackSlot;") \ end_class \ start_class(HotSpotCompiledCode_Comment) \ oop_field(HotSpotCompiledCode_Comment, text, "Ljava/lang/String;") \ diff -r d04be2a635f2 -r 59a847ec6ee3 hotspot/test/compiler/jvmci/code/TestAssembler.java --- a/hotspot/test/compiler/jvmci/code/TestAssembler.java Thu Feb 04 12:33:31 2016 +0100 +++ b/hotspot/test/compiler/jvmci/code/TestAssembler.java Wed Feb 03 12:16:44 2016 +0100 @@ -181,6 +181,8 @@ private int stackAlignment; private int curStackSlot; + private StackSlot deoptRescue; + protected TestAssembler(CodeCacheProvider codeCache, int initialFrameSize, int stackAlignment, PlatformKind narrowOopKind, Register... registers) { this.narrowOopKind = LIRKind.reference(narrowOopKind); @@ -216,6 +218,10 @@ return StackSlot.get(kind, -curStackSlot, true); } + protected void setDeoptRescueSlot(StackSlot deoptRescue) { + this.deoptRescue = deoptRescue; + } + protected void recordImplicitException(DebugInfo info) { sites.add(new Infopoint(code.position(), info, InfopointReason.IMPLICIT_EXCEPTION)); } @@ -249,7 +255,7 @@ byte[] finishedData = data.finish(); DataPatch[] finishedDataPatches = dataPatches.toArray(new DataPatch[0]); return new HotSpotCompiledNmethod(method.getName(), finishedCode, finishedCode.length, finishedSites, new Assumption[0], new ResolvedJavaMethod[]{method}, new Comment[0], finishedData, 16, - finishedDataPatches, false, frameSize, 0, method, 0, id, 0L, false); + finishedDataPatches, false, frameSize, deoptRescue, method, 0, id, 0L, false); } protected static class Buffer { diff -r d04be2a635f2 -r 59a847ec6ee3 hotspot/test/compiler/jvmci/code/amd64/AMD64TestAssembler.java --- a/hotspot/test/compiler/jvmci/code/amd64/AMD64TestAssembler.java Thu Feb 04 12:33:31 2016 +0100 +++ b/hotspot/test/compiler/jvmci/code/amd64/AMD64TestAssembler.java Wed Feb 03 12:16:44 2016 +0100 @@ -63,6 +63,7 @@ emitFatNop(); code.emitByte(0x50 | AMD64.rbp.encoding); // PUSH rbp emitMove(true, AMD64.rbp, AMD64.rsp); // MOV rbp, rsp + setDeoptRescueSlot(newStackSlot(LIRKind.value(AMD64Kind.QWORD))); } @Override diff -r d04be2a635f2 -r 59a847ec6ee3 hotspot/test/compiler/jvmci/code/sparc/SPARCTestAssembler.java --- a/hotspot/test/compiler/jvmci/code/sparc/SPARCTestAssembler.java Thu Feb 04 12:33:31 2016 +0100 +++ b/hotspot/test/compiler/jvmci/code/sparc/SPARCTestAssembler.java Wed Feb 03 12:16:44 2016 +0100 @@ -68,6 +68,7 @@ @Override public void emitPrologue() { emitOp3(0b10, SPARC.sp, 0b111100, SPARC.sp, -SPARC.REGISTER_SAFE_AREA_SIZE); // SAVE sp, -128, sp + setDeoptRescueSlot(newStackSlot(LIRKind.value(SPARCKind.XWORD))); } @Override diff -r d04be2a635f2 -r 59a847ec6ee3 hotspot/test/compiler/jvmci/errors/CodeInstallerTest.java --- a/hotspot/test/compiler/jvmci/errors/CodeInstallerTest.java Thu Feb 04 12:33:31 2016 +0100 +++ b/hotspot/test/compiler/jvmci/errors/CodeInstallerTest.java Wed Feb 03 12:16:44 2016 +0100 @@ -28,6 +28,7 @@ import jdk.vm.ci.code.Architecture; import jdk.vm.ci.code.CodeCacheProvider; import jdk.vm.ci.code.Register; +import jdk.vm.ci.code.StackSlot; import jdk.vm.ci.code.site.DataPatch; import jdk.vm.ci.code.site.Site; import jdk.vm.ci.hotspot.HotSpotCompiledCode; @@ -71,9 +72,9 @@ dummyMethod = metaAccess.lookupJavaMethod(method); } - protected void installEmptyCode(Site[] sites, Assumption[] assumptions, Comment[] comments, int dataSectionAlignment, DataPatch[] dataSectionPatches) { + protected void installEmptyCode(Site[] sites, Assumption[] assumptions, Comment[] comments, int dataSectionAlignment, DataPatch[] dataSectionPatches, StackSlot deoptRescueSlot) { HotSpotCompiledCode code = new HotSpotCompiledCode("dummyMethod", new byte[0], 0, sites, assumptions, new ResolvedJavaMethod[]{dummyMethod}, comments, new byte[8], dataSectionAlignment, - dataSectionPatches, false, 0, 0); + dataSectionPatches, false, 0, deoptRescueSlot); codeCache.addCode(dummyMethod, code, null, null); } diff -r d04be2a635f2 -r 59a847ec6ee3 hotspot/test/compiler/jvmci/errors/TestInvalidCompilationResult.java --- a/hotspot/test/compiler/jvmci/errors/TestInvalidCompilationResult.java Thu Feb 04 12:33:31 2016 +0100 +++ b/hotspot/test/compiler/jvmci/errors/TestInvalidCompilationResult.java Wed Feb 03 12:16:44 2016 +0100 @@ -30,6 +30,7 @@ package compiler.jvmci.errors; +import jdk.vm.ci.code.StackSlot; import jdk.vm.ci.code.site.ConstantReference; import jdk.vm.ci.code.site.DataPatch; import jdk.vm.ci.code.site.DataSectionReference; @@ -80,104 +81,111 @@ @Test(expected = JVMCIError.class) public void testInvalidAssumption() { - installEmptyCode(new Site[0], new Assumption[]{new InvalidAssumption()}, new Comment[0], 16, new DataPatch[0]); + installEmptyCode(new Site[0], new Assumption[]{new InvalidAssumption()}, new Comment[0], 16, new DataPatch[0], null); } @Test(expected = JVMCIError.class) public void testInvalidAlignment() { - installEmptyCode(new Site[0], new Assumption[0], new Comment[0], 7, new DataPatch[0]); + installEmptyCode(new Site[0], new Assumption[0], new Comment[0], 7, new DataPatch[0], null); } @Test(expected = NullPointerException.class) public void testNullDataPatchInDataSection() { - installEmptyCode(new Site[0], new Assumption[0], new Comment[0], 16, new DataPatch[]{null}); + installEmptyCode(new Site[0], new Assumption[0], new Comment[0], 16, new DataPatch[]{null}, null); } @Test(expected = NullPointerException.class) public void testNullReferenceInDataSection() { - installEmptyCode(new Site[0], new Assumption[0], new Comment[0], 16, new DataPatch[]{new DataPatch(0, null)}); + installEmptyCode(new Site[0], new Assumption[0], new Comment[0], 16, new DataPatch[]{new DataPatch(0, null)}, null); } @Test(expected = JVMCIError.class) public void testInvalidDataSectionReference() { DataSectionReference ref = new DataSectionReference(); ref.setOffset(0); - installEmptyCode(new Site[0], new Assumption[0], new Comment[0], 16, new DataPatch[]{new DataPatch(0, ref)}); + installEmptyCode(new Site[0], new Assumption[0], new Comment[0], 16, new DataPatch[]{new DataPatch(0, ref)}, null); } @Test(expected = JVMCIError.class) public void testInvalidNarrowMethodInDataSection() { HotSpotConstant c = (HotSpotConstant) dummyMethod.getEncoding(); ConstantReference ref = new ConstantReference((VMConstant) c.compress()); - installEmptyCode(new Site[0], new Assumption[0], new Comment[0], 16, new DataPatch[]{new DataPatch(0, ref)}); + installEmptyCode(new Site[0], new Assumption[0], new Comment[0], 16, new DataPatch[]{new DataPatch(0, ref)}, null); } @Test(expected = NullPointerException.class) public void testNullConstantInDataSection() { ConstantReference ref = new ConstantReference(null); - installEmptyCode(new Site[0], new Assumption[0], new Comment[0], 16, new DataPatch[]{new DataPatch(0, ref)}); + installEmptyCode(new Site[0], new Assumption[0], new Comment[0], 16, new DataPatch[]{new DataPatch(0, ref)}, null); } @Test(expected = JVMCIError.class) public void testInvalidConstantInDataSection() { ConstantReference ref = new ConstantReference(new InvalidVMConstant()); - installEmptyCode(new Site[0], new Assumption[0], new Comment[0], 16, new DataPatch[]{new DataPatch(0, ref)}); + installEmptyCode(new Site[0], new Assumption[0], new Comment[0], 16, new DataPatch[]{new DataPatch(0, ref)}, null); } @Test(expected = NullPointerException.class) public void testNullReferenceInCode() { - installEmptyCode(new Site[]{new DataPatch(0, null)}, new Assumption[0], new Comment[0], 16, new DataPatch[0]); + installEmptyCode(new Site[]{new DataPatch(0, null)}, new Assumption[0], new Comment[0], 16, new DataPatch[0], null); } @Test(expected = NullPointerException.class) public void testNullConstantInCode() { ConstantReference ref = new ConstantReference(null); - installEmptyCode(new Site[]{new DataPatch(0, ref)}, new Assumption[0], new Comment[0], 16, new DataPatch[0]); + installEmptyCode(new Site[]{new DataPatch(0, ref)}, new Assumption[0], new Comment[0], 16, new DataPatch[0], null); } @Test(expected = JVMCIError.class) public void testInvalidConstantInCode() { ConstantReference ref = new ConstantReference(new InvalidVMConstant()); - installEmptyCode(new Site[]{new DataPatch(0, ref)}, new Assumption[0], new Comment[0], 16, new DataPatch[0]); + installEmptyCode(new Site[]{new DataPatch(0, ref)}, new Assumption[0], new Comment[0], 16, new DataPatch[0], null); } @Test(expected = JVMCIError.class) public void testInvalidReference() { InvalidReference ref = new InvalidReference(); - installEmptyCode(new Site[]{new DataPatch(0, ref)}, new Assumption[0], new Comment[0], 16, new DataPatch[0]); + installEmptyCode(new Site[]{new DataPatch(0, ref)}, new Assumption[0], new Comment[0], 16, new DataPatch[0], null); } @Test(expected = JVMCIError.class) public void testOutOfBoundsDataSectionReference() { DataSectionReference ref = new DataSectionReference(); ref.setOffset(0x1000); - installEmptyCode(new Site[]{new DataPatch(0, ref)}, new Assumption[0], new Comment[0], 16, new DataPatch[0]); + installEmptyCode(new Site[]{new DataPatch(0, ref)}, new Assumption[0], new Comment[0], 16, new DataPatch[0], null); } @Test(expected = JVMCIError.class) public void testInvalidMark() { - installEmptyCode(new Site[]{new Mark(0, new Object())}, new Assumption[0], new Comment[0], 16, new DataPatch[0]); + installEmptyCode(new Site[]{new Mark(0, new Object())}, new Assumption[0], new Comment[0], 16, new DataPatch[0], null); } @Test(expected = JVMCIError.class) public void testInvalidMarkInt() { - installEmptyCode(new Site[]{new Mark(0, -1)}, new Assumption[0], new Comment[0], 16, new DataPatch[0]); + installEmptyCode(new Site[]{new Mark(0, -1)}, new Assumption[0], new Comment[0], 16, new DataPatch[0], null); } @Test(expected = NullPointerException.class) public void testNullSite() { - installEmptyCode(new Site[]{null}, new Assumption[0], new Comment[0], 16, new DataPatch[0]); + installEmptyCode(new Site[]{null}, new Assumption[0], new Comment[0], 16, new DataPatch[0], null); } @Test(expected = JVMCIError.class) public void testInfopointMissingDebugInfo() { Infopoint info = new Infopoint(0, null, InfopointReason.METHOD_START); - installEmptyCode(new Site[]{info}, new Assumption[0], new Comment[0], 16, new DataPatch[0]); + installEmptyCode(new Site[]{info}, new Assumption[0], new Comment[0], 16, new DataPatch[0], null); } @Test(expected = JVMCIError.class) public void testSafepointMissingDebugInfo() { Infopoint info = new Infopoint(0, null, InfopointReason.SAFEPOINT); - installEmptyCode(new Site[]{info}, new Assumption[0], new Comment[0], 16, new DataPatch[0]); + StackSlot deoptRescueSlot = StackSlot.get(null, 0, true); + installEmptyCode(new Site[]{info}, new Assumption[0], new Comment[0], 16, new DataPatch[0], deoptRescueSlot); + } + + @Test(expected = JVMCIError.class) + public void testInvalidDeoptRescueSlot() { + StackSlot deoptRescueSlot = StackSlot.get(null, -1, false); + installEmptyCode(new Site[]{}, new Assumption[0], new Comment[0], 16, new DataPatch[0], deoptRescueSlot); } } diff -r d04be2a635f2 -r 59a847ec6ee3 hotspot/test/compiler/jvmci/errors/TestInvalidDebugInfo.java --- a/hotspot/test/compiler/jvmci/errors/TestInvalidDebugInfo.java Thu Feb 04 12:33:31 2016 +0100 +++ b/hotspot/test/compiler/jvmci/errors/TestInvalidDebugInfo.java Wed Feb 03 12:16:44 2016 +0100 @@ -66,10 +66,14 @@ } private void test(VirtualObject[] vobj, JavaValue[] values, JavaKind[] slotKinds, int locals, int stack, int locks) { + test(vobj, values, slotKinds, locals, stack, locks, StackSlot.get(null, 0, true)); + } + + private void test(VirtualObject[] vobj, JavaValue[] values, JavaKind[] slotKinds, int locals, int stack, int locks, StackSlot deoptRescueSlot) { BytecodeFrame frame = new BytecodeFrame(null, dummyMethod, 0, false, false, values, slotKinds, locals, stack, locks); DebugInfo info = new DebugInfo(frame, vobj); info.setReferenceMap(new HotSpotReferenceMap(new Location[0], new Location[0], new int[0], 8)); - installEmptyCode(new Site[]{new Infopoint(0, info, InfopointReason.SAFEPOINT)}, new Assumption[0], new Comment[0], 16, new DataPatch[0]); + installEmptyCode(new Site[]{new Infopoint(0, info, InfopointReason.SAFEPOINT)}, new Assumption[0], new Comment[0], 16, new DataPatch[0], deoptRescueSlot); } @Test(expected = NullPointerException.class) @@ -83,6 +87,11 @@ } @Test(expected = JVMCIError.class) + public void testMissingDeoptRescueSlot() { + test(null, new JavaValue[0], new JavaKind[0], 0, 0, 0, null); + } + + @Test(expected = JVMCIError.class) public void testUnexpectedScopeValuesLength() { test(new JavaValue[]{JavaConstant.FALSE}, new JavaKind[0], 0, 0, 0); } diff -r d04be2a635f2 -r 59a847ec6ee3 hotspot/test/compiler/jvmci/errors/TestInvalidOopMap.java --- a/hotspot/test/compiler/jvmci/errors/TestInvalidOopMap.java Thu Feb 04 12:33:31 2016 +0100 +++ b/hotspot/test/compiler/jvmci/errors/TestInvalidOopMap.java Wed Feb 03 12:16:44 2016 +0100 @@ -35,6 +35,7 @@ import jdk.vm.ci.code.Location; import jdk.vm.ci.code.ReferenceMap; import jdk.vm.ci.code.Register; +import jdk.vm.ci.code.StackSlot; import jdk.vm.ci.code.site.DataPatch; import jdk.vm.ci.code.site.Infopoint; import jdk.vm.ci.code.site.InfopointReason; @@ -61,7 +62,7 @@ BytecodePosition pos = new BytecodePosition(null, dummyMethod, 0); DebugInfo info = new DebugInfo(pos); info.setReferenceMap(refMap); - installEmptyCode(new Site[]{new Infopoint(0, info, InfopointReason.SAFEPOINT)}, new Assumption[0], new Comment[0], 16, new DataPatch[0]); + installEmptyCode(new Site[]{new Infopoint(0, info, InfopointReason.SAFEPOINT)}, new Assumption[0], new Comment[0], 16, new DataPatch[0], StackSlot.get(null, 0, true)); } @Test(expected = NullPointerException.class) diff -r d04be2a635f2 -r 59a847ec6ee3 hotspot/test/compiler/jvmci/events/JvmciNotifyInstallEventTest.java --- a/hotspot/test/compiler/jvmci/events/JvmciNotifyInstallEventTest.java Thu Feb 04 12:33:31 2016 +0100 +++ b/hotspot/test/compiler/jvmci/events/JvmciNotifyInstallEventTest.java Wed Feb 03 12:16:44 2016 +0100 @@ -109,7 +109,7 @@ .getResolvedMethod(SimpleClass.class, testMethod); HotSpotCompiledCode compiledCode = new HotSpotCompiledCode(METHOD_NAME, new byte[0], 0, new Site[0], new Assumption[0], new ResolvedJavaMethod[]{method}, new Comment[0], new byte[0], 16, - new DataPatch[0], false, 0, 0); + new DataPatch[0], false, 0, null); codeCache.installCode(method, compiledCode, /* installedCode = */ null, /* speculationLog = */ null, /* isDefault = */ false); Asserts.assertEQ(gotInstallNotification, 1,