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