< prev index next >
src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot.sparc/src/org/graalvm/compiler/hotspot/sparc/SPARCHotSpotReturnOp.java
Print this page
rev 47958 : [GR-7049] Support Thread-Local Handshake in jdk10.
@@ -1,7 +1,7 @@
/*
- * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2017, 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.
@@ -22,19 +22,19 @@
*/
package org.graalvm.compiler.hotspot.sparc;
import static org.graalvm.compiler.lir.LIRInstruction.OperandFlag.ILLEGAL;
import static org.graalvm.compiler.lir.LIRInstruction.OperandFlag.REG;
-import static jdk.vm.ci.code.ValueUtil.asRegister;
import org.graalvm.compiler.asm.sparc.SPARCMacroAssembler;
import org.graalvm.compiler.hotspot.GraalHotSpotVMConfig;
import org.graalvm.compiler.lir.LIRInstructionClass;
import org.graalvm.compiler.lir.Opcode;
import org.graalvm.compiler.lir.asm.CompilationResultBuilder;
import org.graalvm.compiler.lir.sparc.SPARCControlFlow.ReturnOp;
+import jdk.vm.ci.code.Register;
import jdk.vm.ci.meta.Value;
/**
* Returns from a function.
*/
@@ -42,26 +42,28 @@
final class SPARCHotSpotReturnOp extends SPARCHotSpotEpilogueOp {
public static final LIRInstructionClass<SPARCHotSpotReturnOp> TYPE = LIRInstructionClass.create(SPARCHotSpotReturnOp.class);
public static final SizeEstimate SIZE = SizeEstimate.create(2);
@Use({REG, ILLEGAL}) protected Value value;
- @Use({REG}) protected Value safepointPollAddress;
+ @Use({REG, ILLEGAL}) protected Value safepointPollAddress;
private final boolean isStub;
private final GraalHotSpotVMConfig config;
+ private final Register thread;
- SPARCHotSpotReturnOp(Value value, boolean isStub, GraalHotSpotVMConfig config, Value safepointPoll) {
+ SPARCHotSpotReturnOp(Value value, boolean isStub, GraalHotSpotVMConfig config, Register thread, Value safepointPoll) {
super(TYPE, SIZE);
this.value = value;
this.isStub = isStub;
this.config = config;
+ this.thread = thread;
this.safepointPollAddress = safepointPoll;
}
@Override
public void emitCode(CompilationResultBuilder crb, SPARCMacroAssembler masm) {
if (!isStub) {
// Every non-stub compile method must have a poll before the return.
- SPARCHotSpotSafepointOp.emitCode(crb, masm, config, true, null, asRegister(safepointPollAddress));
+ SPARCHotSpotSafepointOp.emitCode(crb, masm, config, true, null, thread, safepointPollAddress);
}
ReturnOp.emitCodeHelper(crb, masm);
}
}
< prev index next >