1 | |
|
2 | |
|
3 | |
|
4 | |
|
5 | |
|
6 | |
|
7 | |
|
8 | |
|
9 | |
|
10 | |
|
11 | |
|
12 | |
|
13 | |
|
14 | |
|
15 | |
|
16 | |
|
17 | |
|
18 | |
|
19 | |
|
20 | |
|
21 | |
|
22 | |
|
23 | |
|
24 | |
|
25 | |
|
26 | |
package com.sun.tools.javafx.comp; |
27 | |
|
28 | |
import com.sun.javafx.runtime.Entry; |
29 | |
import com.sun.tools.javac.code.Type; |
30 | |
import com.sun.tools.javac.util.Context; |
31 | |
import com.sun.tools.javac.util.Name; |
32 | |
import com.sun.tools.javafx.code.JavafxSymtab; |
33 | |
import com.sun.tools.javafx.code.JavafxVarSymbol; |
34 | |
import static com.sun.tools.javafx.code.JavafxVarSymbol.*; |
35 | |
|
36 | |
|
37 | |
|
38 | |
|
39 | |
|
40 | |
|
41 | |
public class JavafxDefs { |
42 | |
|
43 | |
|
44 | |
|
45 | |
|
46 | |
public static final String boundFunctionDollarSuffix = "$$bound$"; |
47 | |
public static final String implFunctionSuffix = "$impl"; |
48 | |
public static final String attributeGetMethodNamePrefix = "get$"; |
49 | |
public static final String attributeApplyDefaultsMethodNamePrefix = "applyDefaults$"; |
50 | |
public static final String interfaceSuffix = "$Intf"; |
51 | |
public static final String equalsMethodString = "com.sun.javafx.runtime.Checks.equals"; |
52 | |
public static final String isNullMethodString = "com.sun.javafx.runtime.Checks.isNull"; |
53 | |
public static final String startMethodString = "com.sun.javafx.runtime.Entry.start"; |
54 | |
|
55 | |
public static final String fxObjectString = "com.sun.javafx.runtime.FXObject"; |
56 | 12 | public static final String runMethodString = Entry.entryMethodName(); |
57 | |
public static final String receiverNameString = "receiver$"; |
58 | |
public static final String initializeNameString ="initialize$"; |
59 | |
public static final String getMethodNameString = "get"; |
60 | |
public static final String setMethodNameString ="set"; |
61 | |
public static final String sizeMethodNameString ="size"; |
62 | |
public static final String addStaticDependentNameString = "addStaticDependent"; |
63 | |
public static final String addDynamicDependentNameString = "addDynamicDependent"; |
64 | |
public static final String clearDynamicDependenciesNameString = "clearDynamicDependencies"; |
65 | |
public static final String trySetFromLiteralMethodNameString = "needDefault"; |
66 | |
public static final String makeAttributeMethodNameString = "makeAttribute"; |
67 | |
public static final String makeMethodNameString = "make"; |
68 | |
public static final String makeBijectiveMethodNameString = "makeBijective"; |
69 | |
public static final String invokeNameString = "invoke"; |
70 | |
public static final String lambdaNameString = "lambda"; |
71 | |
|
72 | |
public static final String javaLangPackageNameString = "java.lang"; |
73 | |
public static final String runtimePackageNameString = "com.sun.javafx.runtime"; |
74 | |
public static final String locationPackageNameString = "com.sun.javafx.runtime.location"; |
75 | |
public static final String sequencePackageNameString = "com.sun.javafx.runtime.sequence"; |
76 | |
public static final String functionsPackageNameString = "com.sun.javafx.functions"; |
77 | |
|
78 | 12 | static final String[] milieuNames = { "", "FromLiteral" }; |
79 | 0 | public static String getMilieuName(int index) { return milieuNames[index]; } |
80 | |
|
81 | |
static final int VANILLA_MILIEU = 0; |
82 | |
static final int FROM_DEFAULT_MILIEU = 0; |
83 | |
static final int FROM_LITERAL_MILIEU = 1; |
84 | |
static final int MILIEU_COUNT = 2; |
85 | |
|
86 | 399 | public char typeCharToEscape = '.'; |
87 | 399 | public char escapeTypeChar = '_'; |
88 | |
|
89 | |
|
90 | |
|
91 | |
|
92 | |
public final Name fxObjectName; |
93 | |
public final Name interfaceSuffixName; |
94 | |
final Name runMethodName; |
95 | |
final Name receiverName; |
96 | |
final Name initializeName; |
97 | |
final Name getMethodName; |
98 | |
final Name getSliceMethodName; |
99 | |
final Name replaceSliceMethodName; |
100 | |
final Name setMethodName; |
101 | |
final Name sizeMethodName; |
102 | |
final Name addStaticDependentName; |
103 | |
final Name addDynamicDependentName; |
104 | |
final Name clearDynamicDependenciesName; |
105 | |
final Name needDefaultsMethodName; |
106 | |
final Name makeAttributeMethodName; |
107 | |
final Name makeMethodName; |
108 | |
final Name makeBijectiveMethodName; |
109 | |
final Name invokeName; |
110 | |
final Name lambdaName; |
111 | |
final Name computeValueName; |
112 | |
final Name computeElementName; |
113 | |
final Name initDefName; |
114 | |
final Name postInitDefName; |
115 | |
final Name valueName; |
116 | |
final Name targetName; |
117 | |
final Name interpolateName; |
118 | |
final Name[] locationGetMethodName; |
119 | |
final Name[] locationSetMethodName; |
120 | |
final Name[][] locationSetMilieuMethodName; |
121 | |
final Name[] locationBindMilieuMethodName; |
122 | |
final Name[] locationBijectiveBindMilieuMethodName; |
123 | |
|
124 | |
public final Name runtimePackageName; |
125 | |
public final Name locationPackageName; |
126 | |
public final Name sequencePackageName; |
127 | |
public final Name functionsPackageName; |
128 | |
public final Name javaLangPackageName; |
129 | |
public final Name[] locationVariableName; |
130 | |
public final Name[] locationInterfaceName; |
131 | |
|
132 | |
public Type delocationize(Name flatname) { |
133 | 411155 | for (int kind = 0; kind < TYPE_KIND_COUNT; ++kind) { |
134 | 347334 | if (flatname == locationVariableName[kind] || flatname == locationInterfaceName[kind]) { |
135 | 18249 | return realTypeByKind[kind]; |
136 | |
} |
137 | |
} |
138 | 63821 | return null; |
139 | |
} |
140 | |
|
141 | |
|
142 | |
|
143 | |
|
144 | 12 | protected static final Context.Key<JavafxDefs> jfxDefsKey = new Context.Key<JavafxDefs>(); |
145 | |
|
146 | |
private final Type[] realTypeByKind; |
147 | |
|
148 | |
public static JavafxDefs instance(Context context) { |
149 | 3192 | JavafxDefs instance = context.get(jfxDefsKey); |
150 | 3192 | if (instance == null) { |
151 | 399 | instance = new JavafxDefs(context); |
152 | |
} |
153 | 3192 | return instance; |
154 | |
} |
155 | |
|
156 | 399 | protected JavafxDefs(Context context) { |
157 | 399 | context.put(jfxDefsKey, this); |
158 | 399 | final Name.Table names = Name.Table.instance(context); |
159 | 399 | final JavafxSymtab syms = (JavafxSymtab)(JavafxSymtab.instance(context)); |
160 | |
|
161 | 399 | fxObjectName = names.fromString(fxObjectString); |
162 | 399 | interfaceSuffixName = names.fromString(interfaceSuffix); |
163 | 399 | runMethodName = names.fromString(runMethodString); |
164 | 399 | receiverName = names.fromString(receiverNameString); |
165 | 399 | initializeName = names.fromString(initializeNameString); |
166 | 399 | getMethodName = Name.fromString(names, getMethodNameString); |
167 | 399 | getSliceMethodName = names.fromString("getSlice"); |
168 | 399 | replaceSliceMethodName = names.fromString("replaceSlice"); |
169 | 399 | setMethodName = Name.fromString(names, setMethodNameString); |
170 | 399 | sizeMethodName = Name.fromString(names, sizeMethodNameString); |
171 | 399 | addStaticDependentName = names.fromString(addStaticDependentNameString); |
172 | 399 | addDynamicDependentName = names.fromString(addDynamicDependentNameString); |
173 | 399 | clearDynamicDependenciesName = names.fromString(clearDynamicDependenciesNameString); |
174 | 399 | needDefaultsMethodName = names.fromString(trySetFromLiteralMethodNameString); |
175 | 399 | makeAttributeMethodName = Name.fromString(names, makeAttributeMethodNameString); |
176 | 399 | makeMethodName = Name.fromString(names, makeMethodNameString); |
177 | 399 | makeBijectiveMethodName = Name.fromString(names, makeBijectiveMethodNameString); |
178 | 399 | invokeName = names.fromString(invokeNameString); |
179 | 399 | lambdaName = names.fromString(lambdaNameString); |
180 | 399 | computeValueName = names.fromString("computeValue"); |
181 | 399 | computeElementName = names.fromString("computeElement$"); |
182 | 399 | initDefName = names.fromString("$init$def$name"); |
183 | 399 | postInitDefName = names.fromString("$postinit$def$name"); |
184 | 399 | targetName = names.fromString("target"); |
185 | 399 | valueName = names.fromString("value"); |
186 | 399 | interpolateName = names.fromString("interpolate"); |
187 | 399 | runtimePackageName = names.fromString(runtimePackageNameString); |
188 | 399 | javaLangPackageName = names.fromString(javaLangPackageNameString); |
189 | 399 | locationPackageName = names.fromString(locationPackageNameString); |
190 | 399 | sequencePackageName = names.fromString(sequencePackageNameString); |
191 | 399 | functionsPackageName = names.fromString(functionsPackageNameString); |
192 | 399 | locationGetMethodName = new Name[TYPE_KIND_COUNT]; |
193 | 399 | locationSetMethodName = new Name[TYPE_KIND_COUNT]; |
194 | 399 | locationSetMilieuMethodName = new Name[TYPE_KIND_COUNT][MILIEU_COUNT]; |
195 | 399 | locationVariableName = new Name[TYPE_KIND_COUNT]; |
196 | 399 | locationInterfaceName = new Name[TYPE_KIND_COUNT]; |
197 | 2394 | for (int kind = 0; kind < TYPE_KIND_COUNT; kind++) { |
198 | 5985 | for (int m = 0; m < MILIEU_COUNT; ++m) { |
199 | 3990 | locationSetMilieuMethodName[kind][m] = names.fromString("set" + JavafxVarSymbol.getAccessorSuffix(kind) + milieuNames[m]); |
200 | |
} |
201 | 1995 | locationGetMethodName[kind] = names.fromString("get" + JavafxVarSymbol.getAccessorSuffix(kind)); |
202 | 1995 | locationSetMethodName[kind] = locationSetMilieuMethodName[kind][VANILLA_MILIEU]; |
203 | |
|
204 | 1995 | String typePrefix = locationPackageNameString + "." + JavafxVarSymbol.getTypePrefix(kind); |
205 | 1995 | locationVariableName[kind] = names.fromString(typePrefix + "Variable"); |
206 | 1995 | locationInterfaceName[kind] = names.fromString(typePrefix + "Location"); |
207 | |
} |
208 | 399 | locationBindMilieuMethodName = new Name[MILIEU_COUNT]; |
209 | 399 | locationBijectiveBindMilieuMethodName = new Name[MILIEU_COUNT]; |
210 | 1197 | for (int m = 0; m < MILIEU_COUNT; ++m) { |
211 | 798 | locationBindMilieuMethodName[m] = names.fromString("bind" + milieuNames[m]); |
212 | 798 | locationBijectiveBindMilieuMethodName[m] = names.fromString("bijectiveBind" + milieuNames[m]); |
213 | |
} |
214 | 399 | realTypeByKind = new Type[TYPE_KIND_COUNT]; |
215 | 399 | realTypeByKind[TYPE_KIND_OBJECT] = syms.objectType; |
216 | 399 | realTypeByKind[TYPE_KIND_DOUBLE] = syms.doubleType; |
217 | 399 | realTypeByKind[TYPE_KIND_BOOLEAN] = syms.booleanType; |
218 | 399 | realTypeByKind[TYPE_KIND_INT] = syms.intType; |
219 | 399 | realTypeByKind[TYPE_KIND_SEQUENCE] = syms.javafx_SequenceType; |
220 | |
|
221 | 399 | } |
222 | |
} |