comparison graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/NodeCodeGenerator.java @ 16819:84f1c44b5e9b

Truffle-DSL: fixed resolve of executeWith.
author Christian Humer <christian.humer@gmail.com>
date Wed, 13 Aug 2014 18:06:26 +0200
parents 224a89858453
children 2db61eddcb97
comparison
equal deleted inserted replaced
16818:224a89858453 16819:84f1c44b5e9b
320 } 320 }
321 321
322 /** 322 /**
323 * <pre> 323 * <pre>
324 * variant1 $condition != null 324 * variant1 $condition != null
325 * 325 *
326 * $type $name = defaultValue($type); 326 * $type $name = defaultValue($type);
327 * if ($condition) { 327 * if ($condition) {
328 * $name = $value; 328 * $name = $value;
329 * } 329 * }
330 * 330 *
331 * variant2 $condition != null 331 * variant2 $condition != null
332 * $type $name = $value; 332 * $type $name = $value;
333 * </pre> 333 * </pre>
334 * 334 *
335 * . 335 * .
2627 if (execType.getEvaluatedCount() != lastEvaluatedCount) { 2627 if (execType.getEvaluatedCount() != lastEvaluatedCount) {
2628 lastEvaluatedCount = execType.getEvaluatedCount(); 2628 lastEvaluatedCount = execType.getEvaluatedCount();
2629 primaryExecutes = findFunctionalExecutableType(specialization, lastEvaluatedCount); 2629 primaryExecutes = findFunctionalExecutableType(specialization, lastEvaluatedCount);
2630 } 2630 }
2631 2631
2632 CodeTreeBuilder builder = new CodeTreeBuilder(null); 2632 CodeExecutableElement executeMethod = createExecutableTypeOverride(execType, true);
2633 builder.getTree().setEnclosingElement(execType.getMessageElement()); 2633 clazz.add(executeMethod);
2634 2634 CodeTreeBuilder builder = executeMethod.getBuilder();
2635 CodeTree result = createExecuteBody(builder, specialization, execType, primaryExecutes); 2635 CodeTree result = createExecuteBody(builder, specialization, execType, primaryExecutes);
2636 if (result != null) { 2636 if (result != null) {
2637 CodeExecutableElement method = createExecutableTypeOverride(execType, true); 2637 builder.tree(result);
2638 method.createBuilder().tree(result); 2638 } else {
2639 clazz.add(method); 2639 clazz.remove(executeMethod);
2640 } 2640 }
2641 } 2641 }
2642 } 2642 }
2643 2643
2644 protected void createCachedExecuteMethods(SpecializationData specialization) { 2644 protected void createCachedExecuteMethods(SpecializationData specialization) {