graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ReplacementsImpl.java
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
*** old/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ReplacementsImpl.java Thu Nov 20 14:38:48 2014
--- new/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ReplacementsImpl.java Thu Nov 20 14:38:48 2014
*** 301,317 ****
--- 301,331 ----
public Assumptions getAssumptions() {
return assumptions;
}
- private static SubstitutionGuard getGuard(Class<? extends SubstitutionGuard> guardClass) {
if (guardClass != SubstitutionGuard.class) {
+ Constructor<?>[] constructors = guardClass.getConstructors();
+ if (constructors.length != 1) {
+ throw new GraalInternalError("Substitution guard " + guardClass.getSimpleName() + " must have a single public constructor");
+ }
+ Constructor<?> constructor = constructors[0];
+ Class<?>[] paramTypes = constructor.getParameterTypes();
+ // Check for supported constructor signatures
try {
return guardClass.newInstance();
+ if (constructor.getParameterCount() == 1 && paramTypes[0] == Architecture.class) {
+ // Guard(Architecture)
+ return (SubstitutionGuard) constructor.newInstance(target.arch);
+ } else if (constructor.getParameterCount() == 0) {
+ // Guard()
+ return (SubstitutionGuard) constructor.newInstance();
+ }
} catch (Exception e) {
throw new GraalInternalError(e);
}
+ throw new GraalInternalError("Unsupported constructor signature in substitution guard: " + constructor);
}
return null;
}
private static String getOriginalInternalName(Class<?> substitutions) {
graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ReplacementsImpl.java
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File