Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Showing
with
902 additions
and 324 deletions.
- +1 −0 .hgtags
- +1 −0 src/hotspot/share/aot/aotCodeHeap.cpp
- +1 −0 src/hotspot/share/jvmci/jvmciCompilerToVM.hpp
- +2 −0 src/hotspot/share/jvmci/jvmciCompilerToVMInit.cpp
- +12 −3 src/hotspot/share/jvmci/jvmciRuntime.cpp
- +3 −3 src/hotspot/share/jvmci/jvmciRuntime.hpp
- +1 −0 src/hotspot/share/jvmci/vmStructs_jvmci.cpp
- +6 −4 ...dk.aot/share/classes/jdk.tools.jaotc.binformat/src/jdk/tools/jaotc/binformat/BinaryContainer.java
- +7 −0 ...are/classes/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/SubprocessTest.java
- +17 −4 ...r/share/classes/org.graalvm.compiler.core/src/org/graalvm/compiler/core/gen/DebugInfoBuilder.java
- +9 −8 ...ler/share/classes/org.graalvm.compiler.core/src/org/graalvm/compiler/core/gen/NodeLIRBuilder.java
- +1 −1 ...alvm.compiler.hotspot.aarch64/src/org/graalvm/compiler/hotspot/aarch64/AArch64HotSpotBackend.java
- +2 −2 ...er.hotspot.aarch64/src/org/graalvm/compiler/hotspot/aarch64/AArch64HotSpotDeoptimizeCallerOp.java
- +2 −2 ...compiler.hotspot.aarch64/src/org/graalvm/compiler/hotspot/aarch64/AArch64HotSpotDeoptimizeOp.java
- +68 −0 ...rch64/src/org/graalvm/compiler/hotspot/aarch64/AArch64HotSpotDeoptimizeWithExceptionCallerOp.java
- +2 −2 ...m.compiler.hotspot.aarch64/src/org/graalvm/compiler/hotspot/aarch64/AArch64HotSpotEpilogueOp.java
- +6 −0 ...compiler.hotspot.aarch64/src/org/graalvm/compiler/hotspot/aarch64/AArch64HotSpotLIRGenerator.java
- +2 −2 .../org.graalvm.compiler.hotspot.amd64/src/org/graalvm/compiler/hotspot/amd64/AMD64DeoptimizeOp.java
- +1 −1 ...rg.graalvm.compiler.hotspot.amd64/src/org/graalvm/compiler/hotspot/amd64/AMD64HotSpotBackend.java
- +2 −2 ...compiler.hotspot.amd64/src/org/graalvm/compiler/hotspot/amd64/AMD64HotSpotDeoptimizeCallerOp.java
- +75 −0 ...pot.amd64/src/org/graalvm/compiler/hotspot/amd64/AMD64HotSpotDeoptimizeWithExceptionCallerOp.java
- +5 −0 ...aalvm.compiler.hotspot.amd64/src/org/graalvm/compiler/hotspot/amd64/AMD64HotSpotLIRGenerator.java
- +2 −2 .../org.graalvm.compiler.hotspot.sparc/src/org/graalvm/compiler/hotspot/sparc/SPARCDeoptimizeOp.java
- +1 −1 ...rg.graalvm.compiler.hotspot.sparc/src/org/graalvm/compiler/hotspot/sparc/SPARCHotSpotBackend.java
- +2 −2 ...compiler.hotspot.sparc/src/org/graalvm/compiler/hotspot/sparc/SPARCHotSpotDeoptimizeCallerOp.java
- +77 −0 ...pot.sparc/src/org/graalvm/compiler/hotspot/sparc/SPARCHotSpotDeoptimizeWithExceptionCallerOp.java
- +6 −0 ...aalvm.compiler.hotspot.sparc/src/org/graalvm/compiler/hotspot/sparc/SPARCHotSpotLIRGenerator.java
- +82 −0 ...m.compiler.hotspot.test/src/org/graalvm/compiler/hotspot/test/HotSpotDeoptExplicitExceptions.java
- +72 −0 ...aalvm.compiler.hotspot.test/src/org/graalvm/compiler/hotspot/test/HotSpotDeoptPostExceptions.java
- +3 −2 ...e/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/GraalHotSpotVMConfig.java
- +39 −2 ...lasses/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/HotSpotDebugInfoBuilder.java
- +7 −2 ...are/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/HotSpotHostBackend.java
- +12 −0 ...re/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/HotSpotLIRGenerator.java
- +7 −1 ...raalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/meta/DefaultHotSpotLoweringProvider.java
- +8 −4 ...aalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/meta/HotSpotHostForeignCallsProvider.java
- +38 −22 ...classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/meta/HotSpotNodePlugin.java
- +63 −0 ....compiler.hotspot/src/org/graalvm/compiler/hotspot/nodes/DeoptimizeWithExceptionInCallerNode.java
- +2 −1 ...es/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/FastNotifyNode.java
- +41 −12 ...sses/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/stubs/CreateExceptionStub.java
- +2 −2 ...piler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/stubs/Stub.java
- +17 −5 ...ompiler/share/classes/org.graalvm.compiler.java/src/org/graalvm/compiler/java/BytecodeParser.java
- +4 −0 ....compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/FrameState.java
- +12 −1 ...ses/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/BytecodeExceptionNode.java
- +1 −1 ...e/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/ForeignCallNode.java
- +5 −1 ...lasses/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/graphbuilderconf/NodePlugin.java
- +3 −31 ...replacements.test/src/org/graalvm/compiler/replacements/test/ArrayStoreBytecodeExceptionTest.java
- +17 −8 ....compiler.replacements.test/src/org/graalvm/compiler/replacements/test/BytecodeExceptionTest.java
- +77 −59 ....replacements.test/src/org/graalvm/compiler/replacements/test/ClassCastBytecodeExceptionTest.java
- +6 −33 ...r.replacements.test/src/org/graalvm/compiler/replacements/test/IndexOobBytecodeExceptionTest.java
- +3 −29 ...piler.replacements.test/src/org/graalvm/compiler/replacements/test/NullBytecodeExceptionTest.java
- +2 −2 test/jdk/java/nio/file/FileStore/Basic.java
- +65 −67 test/lib/jdk/test/lib/util/FileUtils.java
@@ -0,0 +1,68 @@ | ||
/* | ||
* Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved. | ||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | ||
* | ||
* This code is free software; you can redistribute it and/or modify it | ||
* under the terms of the GNU General Public License version 2 only, as | ||
* published by the Free Software Foundation. Oracle designates this | ||
* particular file as subject to the "Classpath" exception as provided | ||
* by Oracle in the LICENSE file that accompanied this code. | ||
* | ||
* This code is distributed in the hope that it will be useful, but WITHOUT | ||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | ||
* version 2 for more details (a copy is included in the LICENSE file that | ||
* accompanied this code). | ||
* | ||
* You should have received a copy of the GNU General Public License version | ||
* 2 along with this work; if not, write to the Free Software Foundation, | ||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. | ||
* | ||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA | ||
* or visit www.oracle.com if you need additional information or have any | ||
* questions. | ||
*/ | ||
package org.graalvm.compiler.hotspot.aarch64; | ||
|
||
import static jdk.vm.ci.aarch64.AArch64.lr; | ||
import static jdk.vm.ci.code.ValueUtil.asRegister; | ||
import static org.graalvm.compiler.hotspot.HotSpotHostBackend.DEOPT_BLOB_UNPACK_WITH_EXCEPTION_IN_TLS; | ||
|
||
import org.graalvm.compiler.asm.aarch64.AArch64MacroAssembler; | ||
import org.graalvm.compiler.hotspot.GraalHotSpotVMConfig; | ||
import org.graalvm.compiler.lir.LIRInstructionClass; | ||
import org.graalvm.compiler.lir.Opcode; | ||
import org.graalvm.compiler.lir.aarch64.AArch64Call; | ||
import org.graalvm.compiler.lir.asm.CompilationResultBuilder; | ||
|
||
import jdk.vm.ci.code.Register; | ||
import jdk.vm.ci.meta.Value; | ||
|
||
/** | ||
* Removes the current frame and tail calls the uncommon trap routine. | ||
*/ | ||
@Opcode("DEOPT_WITH_EXCEPTION_IN_CALLER") | ||
public class AArch64HotSpotDeoptimizeWithExceptionCallerOp extends AArch64HotSpotEpilogueOp { | ||
public static final LIRInstructionClass<AArch64HotSpotDeoptimizeWithExceptionCallerOp> TYPE = LIRInstructionClass.create(AArch64HotSpotDeoptimizeWithExceptionCallerOp.class); | ||
|
||
@Use(OperandFlag.REG) private Value exception; | ||
|
||
public AArch64HotSpotDeoptimizeWithExceptionCallerOp(GraalHotSpotVMConfig config, Value exception, Register thread) { | ||
super(TYPE, config, thread); | ||
this.exception = exception; | ||
} | ||
|
||
@Override | ||
public void emitCode(CompilationResultBuilder crb, AArch64MacroAssembler masm) { | ||
Register exc = asRegister(exception); | ||
|
||
leaveFrame(crb, masm, /* emitSafepoint */false, false); | ||
|
||
// Save exception oop in TLS | ||
masm.str(64, exc, masm.makeAddress(thread, config.threadExceptionOopOffset, 8)); | ||
// Store original return address in TLS | ||
masm.str(64, lr, masm.makeAddress(thread, config.threadExceptionPcOffset, 8)); | ||
|
||
AArch64Call.directJmp(crb, masm, crb.foreignCalls.lookupForeignCall(DEOPT_BLOB_UNPACK_WITH_EXCEPTION_IN_TLS)); | ||
} | ||
} |
Oops, something went wrong.