src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.amd64/src/org/graalvm/compiler/core/amd64/AMD64MoveFactory.java
--- a/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.amd64/src/org/graalvm/compiler/core/amd64/AMD64MoveFactory.java Thu Jul 25 11:44:37 2019 -0700
+++ b/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.amd64/src/org/graalvm/compiler/core/amd64/AMD64MoveFactory.java Thu Jul 25 17:35:58 2019 -0400
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2019, 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
@@ -50,6 +50,7 @@
import jdk.vm.ci.meta.AllocatableValue;
import jdk.vm.ci.meta.Constant;
import jdk.vm.ci.meta.JavaConstant;
+import jdk.vm.ci.meta.PrimitiveConstant;
import jdk.vm.ci.meta.Value;
public abstract class AMD64MoveFactory extends AMD64MoveFactoryBase {
@@ -65,6 +66,9 @@
switch (c.getJavaKind()) {
case Long:
return NumUtil.isInt(c.asLong());
+ case Float:
+ case Double:
+ return false;
case Object:
return c.isNull();
default:
@@ -75,6 +79,12 @@
}
@Override
+ public boolean mayEmbedConstantLoad(Constant constant) {
+ // Only consider not inlineable constants here.
+ return constant instanceof PrimitiveConstant && ((PrimitiveConstant) constant).getJavaKind().isNumericFloat();
+ }
+
+ @Override
public boolean allowConstantToStackMove(Constant constant) {
if (constant instanceof DataPointerConstant) {
return false;