src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot.amd64/src/org/graalvm/compiler/hotspot/amd64/AMD64HotSpotStrategySwitchOp.java
equal
deleted
inserted
replaced
1 /* |
1 /* |
2 * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * |
4 * |
5 * This code is free software; you can redistribute it and/or modify it |
5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as |
6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. |
7 * published by the Free Software Foundation. |
32 import org.graalvm.compiler.lir.amd64.AMD64ControlFlow; |
32 import org.graalvm.compiler.lir.amd64.AMD64ControlFlow; |
33 import org.graalvm.compiler.lir.asm.CompilationResultBuilder; |
33 import org.graalvm.compiler.lir.asm.CompilationResultBuilder; |
34 |
34 |
35 import jdk.vm.ci.code.Register; |
35 import jdk.vm.ci.code.Register; |
36 import jdk.vm.ci.code.ValueUtil; |
36 import jdk.vm.ci.code.ValueUtil; |
37 import jdk.vm.ci.hotspot.HotSpotMetaspaceConstant; |
37 import jdk.vm.ci.hotspot.HotSpotConstant; |
38 import jdk.vm.ci.meta.Constant; |
38 import jdk.vm.ci.meta.Constant; |
39 import jdk.vm.ci.meta.Value; |
39 import jdk.vm.ci.meta.Value; |
40 |
40 |
41 final class AMD64HotSpotStrategySwitchOp extends AMD64ControlFlow.StrategySwitchOp { |
41 final class AMD64HotSpotStrategySwitchOp extends AMD64ControlFlow.StrategySwitchOp { |
42 public static final LIRInstructionClass<AMD64HotSpotStrategySwitchOp> TYPE = LIRInstructionClass.create(AMD64HotSpotStrategySwitchOp.class); |
42 public static final LIRInstructionClass<AMD64HotSpotStrategySwitchOp> TYPE = LIRInstructionClass.create(AMD64HotSpotStrategySwitchOp.class); |
56 super(keyRegister, crb, masm); |
56 super(keyRegister, crb, masm); |
57 } |
57 } |
58 |
58 |
59 @Override |
59 @Override |
60 protected void emitComparison(Constant c) { |
60 protected void emitComparison(Constant c) { |
61 if (c instanceof HotSpotMetaspaceConstant) { |
61 if (c instanceof HotSpotConstant) { |
62 HotSpotMetaspaceConstant meta = (HotSpotMetaspaceConstant) c; |
62 HotSpotConstant meta = (HotSpotConstant) c; |
63 if (meta.isCompressed()) { |
63 if (meta.isCompressed()) { |
64 crb.recordInlineDataInCode(meta); |
64 crb.recordInlineDataInCode(meta); |
65 masm.cmpl(keyRegister, 0xDEADDEAD); |
65 masm.cmpl(keyRegister, 0xDEADDEAD); |
66 } else { |
66 } else { |
67 AMD64Address addr = (AMD64Address) crb.recordDataReferenceInCode(meta, 8); |
67 AMD64Address addr = (AMD64Address) crb.recordDataReferenceInCode(meta, 8); |