Mercurial > hg > truffle
changeset 14601:e845cd0b033f
Merge.
author | Christian Humer <christian.humer@gmail.com> |
---|---|
date | Tue, 18 Mar 2014 20:36:53 +0100 |
parents | d5cae5698316 (diff) ff2095ec7bdb (current diff) |
children | 591f4a575ebf 7573ba6dfba2 affd2b3b0cbb |
files | |
diffstat | 4 files changed, 28 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.options/src/com/oracle/graal/options/OptionProcessor.java Tue Mar 18 11:51:37 2014 -0700 +++ b/graal/com.oracle.graal.options/src/com/oracle/graal/options/OptionProcessor.java Tue Mar 18 20:36:53 2014 +0100 @@ -172,7 +172,7 @@ String declaringClass = option.declaringClass; Name fieldName = option.field.getSimpleName(); String comma = i == info.options.size() - 1 ? "" : ","; - out.printf(" new %s(\"%s\", %s.class, \"%s\", %s.class, \"%s\", %s)%s%n", desc, name, type, help, declaringClass, fieldName, optionValue, comma); + out.printf(" new %s(\"%s\", %s.class, \"%s\", %s.class, \"%s\", %s)%s\n", desc, name, type, help, declaringClass, fieldName, optionValue, comma); i++; } out.println(" );");
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/OptimizedCallNode.java Tue Mar 18 11:51:37 2014 -0700 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/OptimizedCallNode.java Tue Mar 18 20:36:53 2014 +0100 @@ -22,6 +22,7 @@ */ package com.oracle.graal.truffle; +import java.util.*; import java.util.concurrent.atomic.*; import com.oracle.truffle.api.*; @@ -136,6 +137,16 @@ // return false; // } + // disable recursive splitting for now + OptimizedCallTarget splitTarget = getCallTarget(); + List<OptimizedCallTarget> compilationRoots = OptimizedCallNodeProfile.findCompilationRoots(this); + for (OptimizedCallTarget compilationRoot : compilationRoots) { + if (compilationRoot == splitTarget || compilationRoot.getSplitSource() == splitTarget) { + // recursive call found + return false; + } + } + // max one child call and callCount > 2 and kind of small number of nodes if (isMaxSingleCall()) { return true; @@ -166,7 +177,8 @@ return NodeUtil.countNodes(getCallTarget().getRootNode(), new NodeCountFilter() { public boolean isCounted(Node node) { NodeCost cost = node.getCost(); - return cost == NodeCost.POLYMORPHIC || cost == NodeCost.MEGAMORPHIC; + boolean polymorphic = cost == NodeCost.POLYMORPHIC || cost == NodeCost.MEGAMORPHIC; + return polymorphic; } }); }
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/OptimizedCallNodeProfile.java Tue Mar 18 11:51:37 2014 -0700 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/OptimizedCallNodeProfile.java Tue Mar 18 20:36:53 2014 +0100 @@ -191,7 +191,7 @@ return callNode.getCallCount() / (double) callTarget.getCompilationProfile().getCallCount(); } - private static List<OptimizedCallTarget> findCompilationRoots(Node call) { + static List<OptimizedCallTarget> findCompilationRoots(Node call) { RootNode root = call.getRootNode(); if (root == null) { return Collections.emptyList();
--- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/node/NodeCodeGenerator.java Tue Mar 18 11:51:37 2014 -0700 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/node/NodeCodeGenerator.java Tue Mar 18 20:36:53 2014 +0100 @@ -214,19 +214,23 @@ if (method.getModifiers().contains(STATIC)) { builder.type(targetClass.asType()); } else { - ActualParameter parameter = null; + ActualParameter firstParameter = null; for (ActualParameter searchParameter : targetMethod.getParameters()) { if (searchParameter.getSpecification().isSignature()) { - parameter = searchParameter; + firstParameter = searchParameter; break; } } - ActualParameter sourceParameter = sourceMethod.findParameter(parameter.getLocalName()); + if (firstParameter == null) { + throw new AssertionError(); + } + + ActualParameter sourceParameter = sourceMethod.findParameter(firstParameter.getLocalName()); if (castedValues && sourceParameter != null) { - builder.string(valueName(sourceParameter, parameter)); + builder.string(valueName(sourceParameter, firstParameter)); } else { - builder.string(valueName(parameter)); + builder.string(valueName(firstParameter)); } } } @@ -967,7 +971,7 @@ CodeTreeBuilder builder = method.createBuilder(); if (node.isPolymorphic() && specialization == null) { // assume next0 exists - builder.startIf().string("next0 != null && next0.getCost() == ").staticReference(nodeInfoKind, "MONOMORPHIC").end(); + builder.startIf().string("next0 != null && next0.getCost() != ").staticReference(nodeInfoKind, "UNINITIALIZED").end(); builder.startBlock(); builder.startReturn().staticReference(nodeInfoKind, "POLYMORPHIC").end(); builder.end(); @@ -2631,6 +2635,9 @@ } CodeExecutableElement superConstructor = createSuperConstructor(clazz, constructor); + if (superConstructor == null) { + continue; + } CodeTree body = superConstructor.getBodyTree(); CodeTreeBuilder builder = superConstructor.createBuilder(); builder.tree(body);