private static void defineRealEqualsWithFallback(SkinnyMethodAdapter mv, final String pathName, final String simpleName, final Class[] paramTypes, final Class returnType, final int baseIndex, final int cacheIndex, final Set<String> nameSet) { defineRealBodyWithFallback(mv, pathName, simpleName, paramTypes, returnType, baseIndex, cacheIndex, nameSet); }
private static boolean defineDefaultHashCode(final int line, SkinnyMethodAdapter mv, final Class[] paramTypes, final Class returnType) { if ( paramTypes.length == 0 && returnType == Integer.TYPE ) { objectHashCode(line, mv); return true; } return false; }
private static boolean defineDefaultToString(final int line, SkinnyMethodAdapter mv, final Class[] paramTypes, final Class returnType) { if ( paramTypes.length == 0 && returnType == String.class ) { objectToString(line, mv); return true; } return false; }
public static Class createOldStyleImplClass(Class[] superTypes, RubyClass rubyClass, Ruby ruby, String name, ClassDefiningClassLoader classLoader) { String[] superTypeNames = new String[superTypes.length]; Map<String, List<Method>> simpleToAll = buildSimpleToAllMap(superTypes, superTypeNames); Class newClass = defineOldStyleImplClass(ruby, name, superTypeNames, simpleToAll, classLoader); return newClass; }
public static Class createRealImplClass(Class superClass, Class[] interfaces, RubyClass rubyClass, Ruby ruby, String name) { String[] superTypeNames = new String[interfaces.length]; Map<String, List<Method>> simpleToAll = buildSimpleToAllMap(interfaces, superTypeNames); Class newClass = defineRealImplClass(ruby, name, superClass, superTypeNames, simpleToAll); return newClass; }
private static boolean defineDefaultEquals(final int line, SkinnyMethodAdapter mv, final Class[] paramTypes, final Class returnType) { if ( paramTypes.length == 1 && paramTypes[0] == Object.class && returnType == Boolean.TYPE ) { objectEquals(line, mv); return true; } return false; }
public static Class createOldStyleImplClass(Class[] superTypes, RubyClass rubyClass, Ruby ruby, String name, ClassDefiningClassLoader classLoader) { String[] superTypeNames = new String[superTypes.length]; // interfaces now do have a convention that they only override an interface default method // if a Ruby method (stub) is present in the implementing Ruby class : Map<String, List<Method>> simpleToAll = buildSimpleToAllMap(superTypes, superTypeNames, rubyClass); Class newClass = defineOldStyleImplClass(ruby, name, superTypeNames, simpleToAll, classLoader); return newClass; }
public static Class createRealImplClass(Class superClass, Class[] interfaces, RubyClass rubyClass, Ruby ruby, String name) { String[] superTypeNames = new String[interfaces.length]; Map<String, List<Method>> simpleToAll = buildSimpleToAllMap(interfaces, superTypeNames); Class newClass = defineRealImplClass(ruby, name, superClass, superTypeNames, simpleToAll); return newClass; }
private static void defineRealToStringWithFallback(SkinnyMethodAdapter mv, final String pathName, final String simpleName, final Class[] paramTypes, final Class returnType, final int baseIndex, final int cacheIndex, final Set<String> nameSet) { defineRealBodyWithFallback(mv, pathName, simpleName, paramTypes, returnType, baseIndex, cacheIndex, nameSet); }
private static boolean defineDefaultHashCode(final int line, SkinnyMethodAdapter mv, final Class[] paramTypes, final Class returnType) { if ( paramTypes.length == 0 && returnType == Integer.TYPE ) { objectHashCode(line, mv); return true; } return false; }
private static boolean defineDefaultToString(final int line, SkinnyMethodAdapter mv, final Class[] paramTypes, final Class returnType) { if ( paramTypes.length == 0 && returnType == String.class ) { objectToString(line, mv); return true; } return false; }
private static boolean defineDefaultEquals(final int line, SkinnyMethodAdapter mv, final Class[] paramTypes, final Class returnType) { if ( paramTypes.length == 1 && paramTypes[0] == Object.class && returnType == Boolean.TYPE ) { objectEquals(line, mv); return true; } return false; }
public static Class createOldStyleImplClass(Class[] superTypes, RubyClass rubyClass, Ruby ruby, String name, ClassDefiningClassLoader classLoader) { String[] superTypeNames = new String[superTypes.length]; Map<String, List<Method>> simpleToAll = buildSimpleToAllMap(superTypes, superTypeNames); Class newClass = defineOldStyleImplClass(ruby, name, superTypeNames, simpleToAll, classLoader); return newClass; }
public static Class createRealImplClass(Class superClass, Class[] interfaces, RubyClass rubyClass, Ruby ruby, String name) { String[] superTypeNames = new String[interfaces.length]; // interfaces now do have a convention that they only override an interface default method // if a Ruby method (stub) is present in the implementing Ruby class : Map<String, List<Method>> simpleToAll = buildSimpleToAllMap(interfaces, superTypeNames, rubyClass); Class newClass = defineRealImplClass(ruby, name, superClass, superTypeNames, simpleToAll); // Confirm all interfaces got implemented for (Class ifc : interfaces) { assert ifc.isAssignableFrom(newClass); } return newClass; }
private static void defineRealHashCodeWithFallback(SkinnyMethodAdapter mv, final String pathName, final String simpleName, final Class[] paramTypes, final Class returnType, final int baseIndex, final int cacheIndex, final Set<String> nameSet) { defineRealBodyWithFallback(mv, pathName, simpleName, paramTypes, returnType, baseIndex, cacheIndex, nameSet); }
public static Class createOldStyleImplClass(Class[] superTypes, RubyClass rubyClass, Ruby ruby, String name, ClassDefiningClassLoader classLoader) { String[] superTypeNames = new String[superTypes.length]; // interfaces now do have a convention that they only override an interface default method // if a Ruby method (stub) is present in the implementing Ruby class : Map<String, List<Method>> simpleToAll = buildSimpleToAllMap(superTypes, superTypeNames, rubyClass); Class newClass = defineOldStyleImplClass(ruby, name, superTypeNames, simpleToAll, classLoader); return newClass; }
public static Class createRealImplClass(Class superClass, Class[] interfaces, RubyClass rubyClass, Ruby ruby, String name) { String[] superTypeNames = new String[interfaces.length]; // interfaces now do have a convention that they only override an interface default method // if a Ruby method (stub) is present in the implementing Ruby class : Map<String, List<Method>> simpleToAll = buildSimpleToAllMap(interfaces, superTypeNames, rubyClass); Class newClass = defineRealImplClass(ruby, name, superClass, superTypeNames, simpleToAll); // Confirm all interfaces got implemented for (Class ifc : interfaces) { assert ifc.isAssignableFrom(newClass); } return newClass; }
private static void defineRealEqualsWithFallback(SkinnyMethodAdapter mv, final String pathName, final String simpleName, final Class[] paramTypes, final Class returnType, final int baseIndex, final int cacheIndex, final Set<String> nameSet) { defineRealBodyWithFallback(mv, pathName, simpleName, paramTypes, returnType, baseIndex, cacheIndex, nameSet); }
private static void defineRealHashCodeWithFallback(SkinnyMethodAdapter mv, final String pathName, final String simpleName, final Class[] paramTypes, final Class returnType, final int baseIndex, final int cacheIndex, final Set<String> nameSet) { defineRealBodyWithFallback(mv, pathName, simpleName, paramTypes, returnType, baseIndex, cacheIndex, nameSet); }
private static void defineRealToStringWithFallback(SkinnyMethodAdapter mv, final String pathName, final String simpleName, final Class[] paramTypes, final Class returnType, final int baseIndex, final int cacheIndex, final Set<String> nameSet) { defineRealBodyWithFallback(mv, pathName, simpleName, paramTypes, returnType, baseIndex, cacheIndex, nameSet); }