src/jdk.vm.compiler/share/classes/org.graalvm.compiler.hotspot.amd64/src/org/graalvm/compiler/hotspot/amd64/AMD64HotSpotLoadConfigValueOp.java
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
*** old/src/jdk.vm.compiler/share/classes/org.graalvm.compiler.hotspot.amd64/src/org/graalvm/compiler/hotspot/amd64/AMD64HotSpotLoadConfigValueOp.java Mon Feb 6 12:01:21 2017
--- new/src/jdk.vm.compiler/share/classes/org.graalvm.compiler.hotspot.amd64/src/org/graalvm/compiler/hotspot/amd64/AMD64HotSpotLoadConfigValueOp.java Mon Feb 6 12:01:21 2017
*** 1,7 ****
--- 1,7 ----
/*
! * Copyright (c) 2015, 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,33 ****
--- 22,37 ----
*/
package org.graalvm.compiler.hotspot.amd64;
import static org.graalvm.compiler.core.common.GraalOptions.GeneratePIC;
import static jdk.vm.ci.code.ValueUtil.asRegister;
+
+ import jdk.vm.ci.amd64.AMD64Kind;
+ import jdk.vm.ci.code.Register;
import jdk.vm.ci.meta.AllocatableValue;
+ import org.graalvm.compiler.asm.amd64.AMD64Address;
import org.graalvm.compiler.asm.amd64.AMD64MacroAssembler;
import org.graalvm.compiler.debug.GraalError;
import org.graalvm.compiler.lir.LIRInstructionClass;
import org.graalvm.compiler.lir.amd64.AMD64LIRInstruction;
import org.graalvm.compiler.lir.asm.CompilationResultBuilder;
*** 46,56 ****
--- 50,78 ----
}
@Override
public void emitCode(CompilationResultBuilder crb, AMD64MacroAssembler masm) {
if (GeneratePIC.getValue()) {
! masm.movq(asRegister(result), masm.getPlaceholder(-1));
! AMD64Kind kind = (AMD64Kind) result.getPlatformKind();
+ Register reg = asRegister(result);
+ AMD64Address placeholder = masm.getPlaceholder(-1);
+ switch (kind) {
+ case BYTE:
+ masm.movsbl(reg, placeholder);
+ break;
+ case WORD:
+ masm.movswl(reg, placeholder);
+ break;
+ case DWORD:
+ masm.movl(reg, placeholder);
+ break;
+ case QWORD:
+ masm.movq(reg, placeholder);
+ break;
+ default:
+ throw GraalError.unimplemented();
+ }
} else {
throw GraalError.unimplemented();
}
crb.recordMark(markId);
}
src/jdk.vm.compiler/share/classes/org.graalvm.compiler.hotspot.amd64/src/org/graalvm/compiler/hotspot/amd64/AMD64HotSpotLoadConfigValueOp.java
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File