comparison graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/typesystem/TypeCastParser.java @ 8595:8a1115c92271

Implemented codegen guard definitions can now omit unused parameters.
author Christian Humer <christian.humer@gmail.com>
date Mon, 01 Apr 2013 21:43:20 +0200
parents 54e227b2e199
children 61ba6fc21ba4
comparison
equal deleted inserted replaced
8594:ce6e8672f798 8595:8a1115c92271
21 * questions. 21 * questions.
22 */ 22 */
23 package com.oracle.truffle.codegen.processor.typesystem; 23 package com.oracle.truffle.codegen.processor.typesystem;
24 24
25 import java.lang.annotation.*; 25 import java.lang.annotation.*;
26 import java.util.*;
27 26
28 import javax.lang.model.element.*; 27 import javax.lang.model.element.*;
29 import javax.lang.model.type.*;
30 28
31 import com.oracle.truffle.api.codegen.*; 29 import com.oracle.truffle.api.codegen.*;
32 import com.oracle.truffle.codegen.processor.*; 30 import com.oracle.truffle.codegen.processor.*;
33 import com.oracle.truffle.codegen.processor.template.*; 31 import com.oracle.truffle.codegen.processor.template.*;
34 32
42 public MethodSpec createSpecification(ExecutableElement method, AnnotationMirror mirror) { 40 public MethodSpec createSpecification(ExecutableElement method, AnnotationMirror mirror) {
43 TypeData targetType = findTypeByMethodName(method.getSimpleName().toString(), "as"); 41 TypeData targetType = findTypeByMethodName(method.getSimpleName().toString(), "as");
44 if (targetType == null) { 42 if (targetType == null) {
45 return null; 43 return null;
46 } 44 }
47 List<ParameterSpec> specs = new ArrayList<>(); 45 MethodSpec spec = new MethodSpec(new ParameterSpec("returnType", targetType.getPrimitiveType()));
48 ParameterSpec valueSpec = new ParameterSpec("value", getTypeSystem().getPrimitiveTypeMirrors()); 46 spec.addRequired(new ParameterSpec("value", getTypeSystem().getPrimitiveTypeMirrors()));
49 valueSpec.setSignature(true);
50 specs.add(valueSpec);
51
52 ParameterSpec returnTypeSpec = new ParameterSpec("returnType", targetType.getPrimitiveType());
53 returnTypeSpec.setSignature(true);
54 MethodSpec spec = new MethodSpec(Collections.<TypeMirror> emptyList(), returnTypeSpec, specs);
55 return spec; 47 return spec;
56 } 48 }
57 49
58 @Override 50 @Override
59 public TypeCastData create(TemplateMethod method) { 51 public TypeCastData create(TemplateMethod method) {