changeset 20876:9ea32f3fc8ce

Merge.
author Doug Simon <doug.simon@oracle.com>
date Thu, 09 Apr 2015 19:17:51 +0200
parents c9a8c62c60fc (current diff) b7ec3020800e (diff)
children 5d9bad7192f8
files graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/phases/ReplaceIntrinsicsPhase.java
diffstat 2 files changed, 6 insertions(+), 64 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleConstantReflectionProvider.java	Thu Apr 09 18:56:06 2015 +0200
+++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleConstantReflectionProvider.java	Thu Apr 09 19:17:51 2015 +0200
@@ -58,14 +58,15 @@
             JavaType fieldType = field.getType();
             if (field.isFinal() || field.getAnnotation(CompilationFinal.class) != null ||
                             (fieldType.getKind() == Kind.Object && (field.getAnnotation(Child.class) != null || field.getAnnotation(Children.class) != null))) {
-                JavaConstant constant = graalConstantReflection.readFieldValue(field, receiver);
-                assert verifyFieldValue(field, constant);
-                if (constant.isNonNull() && fieldType.getKind() == Kind.Object && fieldType instanceof ResolvedJavaType && ((ResolvedJavaType) fieldType).isArray() &&
+                final JavaConstant constant;
+                if (fieldType.getKind() == Kind.Object && fieldType instanceof ResolvedJavaType && ((ResolvedJavaType) fieldType).isArray() &&
                                 (field.getAnnotation(CompilationFinal.class) != null || field.getAnnotation(Children.class) != null)) {
-                    return graalConstantReflection.readStableFieldValue(field, receiver, true);
+                    constant = graalConstantReflection.readStableFieldValue(field, receiver, true);
                 } else {
-                    return graalConstantReflection.readFieldValue(field, receiver);
+                    constant = graalConstantReflection.readFieldValue(field, receiver);
                 }
+                assert verifyFieldValue(field, constant);
+                return constant;
             }
         } else if (field.isStatic()) {
             if (field.getAnnotation(CompilationFinal.class) != null) {
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/phases/ReplaceIntrinsicsPhase.java	Thu Apr 09 18:56:06 2015 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-/*
- * Copyright (c) 2013, 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.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package com.oracle.graal.truffle.phases;
-
-import com.oracle.graal.debug.*;
-import com.oracle.graal.nodes.CallTargetNode.InvokeKind;
-import com.oracle.graal.nodes.*;
-import com.oracle.graal.nodes.java.*;
-import com.oracle.graal.nodes.spi.*;
-import com.oracle.graal.phases.*;
-import com.oracle.graal.phases.common.inlining.*;
-
-/**
- * Compiler phase for intrinsifying the access to the Truffle virtual frame.
- */
-public class ReplaceIntrinsicsPhase extends Phase {
-
-    private final Replacements replacements;
-
-    public ReplaceIntrinsicsPhase(Replacements replacements) {
-        this.replacements = replacements;
-    }
-
-    @Override
-    protected void run(StructuredGraph graph) {
-        for (MethodCallTargetNode methodCallTarget : graph.getNodes(MethodCallTargetNode.TYPE)) {
-            if (methodCallTarget.isAlive()) {
-                InvokeKind invokeKind = methodCallTarget.invokeKind();
-                if (invokeKind.isDirect()) {
-                    StructuredGraph inlineGraph = replacements.getSubstitution(methodCallTarget.targetMethod());
-                    if (inlineGraph != null) {
-                        InliningUtil.inline(methodCallTarget.invoke(), inlineGraph, true, null);
-                        Debug.dump(graph, "After inlining %s", methodCallTarget.targetMethod().toString());
-                    }
-                }
-            }
-        }
-    }
-}