diff graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/node/SpecializationData.java @ 9279:2a4b57f02fb4

Implemented basic support for assumptions for sourcecode generation.
author Christian Humer <christian.humer@gmail.com>
date Wed, 24 Apr 2013 17:44:15 +0200
parents 97ad6d3e7557
children 8e3a1635cc9e
line wrap: on
line diff
--- a/graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/node/SpecializationData.java	Tue Apr 23 21:03:47 2013 +0200
+++ b/graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/node/SpecializationData.java	Wed Apr 24 17:44:15 2013 +0200
@@ -36,8 +36,9 @@
     private final boolean uninitialized;
     private final List<SpecializationThrowsData> exceptions;
     private List<String> guardDefinitions = Collections.emptyList();
-    private List<GuardData> guards;
+    private List<GuardData> guards = Collections.emptyList();
     private List<ShortCircuitData> shortCircuits;
+    private List<String> assumptions = Collections.emptyList();
     private boolean useSpecializationsForGeneric = true;
     private NodeData node;
 
@@ -59,7 +60,6 @@
         this.generic = generic;
         this.uninitialized = uninitialized;
         this.exceptions = Collections.emptyList();
-        this.guards = new ArrayList<>();
     }
 
     @Override
@@ -81,6 +81,9 @@
         if (!getGuards().isEmpty()) {
             return true;
         }
+        if (!getAssumptions().isEmpty()) {
+            return true;
+        }
         for (ActualParameter parameter : getParameters()) {
             NodeChildData field = getNode().findChild(parameter.getSpecification().getName());
             if (field == null) {
@@ -175,6 +178,14 @@
         return useSpecializationsForGeneric;
     }
 
+    public List<String> getAssumptions() {
+        return assumptions;
+    }
+
+    void setAssumptions(List<String> assumptions) {
+        this.assumptions = assumptions;
+    }
+
     public SpecializationData findNextSpecialization() {
         List<SpecializationData> specializations = node.getSpecializations();
         for (int i = 0; i < specializations.size() - 1; i++) {