Package org.jruby.java.codegen
Class RealClassGenerator
java.lang.Object
org.jruby.java.codegen.RealClassGenerator
On fly .class generator (used for Ruby interface impls).
- Author:
- headius
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic intcalcBaseIndex(Class[] params, int baseIndex) static voidcoerceArgumentsToRuby(SkinnyMethodAdapter mv, Class[] paramTypes, int rubyIndex) static voidcoerceResult(SkinnyMethodAdapter mv, Class returnType, boolean doReturn) static voidcoerceResultAndReturn(SkinnyMethodAdapter mv, Class returnType) static ClasscreateOldStyleImplClass(Class[] superTypes, RubyClass rubyClass, Ruby ruby, String name, ClassDefiningClassLoader classLoader) static ClasscreateRealImplClass(Class superClass, Class<?>[] interfaces, RubyClass rubyClass, Ruby ruby, String name) static ClassdefineOldStyleImplClass(Ruby ruby, String name, String[] superTypeNames, Map<String, List<Method>> simpleToAll, ClassDefiningClassLoader loader) This variation on defineImplClass uses all the classic type coercion logic for passing args and returning results.static ClassdefineRealImplClass(Ruby runtime, String name, Class superClass, String[] superTypeNames, Map<String, List<Method>> simpleToAll) This variation on defineImplClass uses all the classic type coercion logic for passing args and returning results.static voidmakeConcreteConstructorIROProxy(org.objectweb.asm.ClassWriter cw, PositionAware initPosition, RubyClass.ConcreteJavaReifier cjr) Public access for IRubyObject constructorstatic StringmakeConcreteConstructorProxy(org.objectweb.asm.ClassWriter cw, PositionAware initPosition, boolean hasRuby, RubyClass.ConcreteJavaReifier cjr, Class[] ctorTypes, boolean nested) Defines a constructor that delegates to the main switch constructorstatic voidmakeConcreteConstructorSwitch(org.objectweb.asm.ClassWriter cw, PositionAware initPosition, int superpos, boolean hasParent, RubyClass.ConcreteJavaReifier cjr, JavaConstructor[] constructors) Main switch constructor.static org.objectweb.asm.commons.GeneratorAdapter
-
Constructor Details
-
RealClassGenerator
public RealClassGenerator()
-
-
Method Details
-
createOldStyleImplClass
-
createRealImplClass
-
defineOldStyleImplClass
public static Class defineOldStyleImplClass(Ruby ruby, String name, String[] superTypeNames, Map<String, List<Method>> simpleToAll, ClassDefiningClassLoader loader) This variation on defineImplClass uses all the classic type coercion logic for passing args and returning results.- Parameters:
ruby-name-superTypeNames-simpleToAll-- Returns:
-
defineRealImplClass
public static Class defineRealImplClass(Ruby runtime, String name, Class superClass, String[] superTypeNames, Map<String, List<Method>> simpleToAll) This variation on defineImplClass uses all the classic type coercion logic for passing args and returning results.- Parameters:
runtime-name-superTypeNames-simpleToAll-- Returns:
-
coerceArgumentsToRuby
-
coerceResultAndReturn
-
coerceResult
-
calcBaseIndex
-
makeConcreteConstructorSwitch
public static void makeConcreteConstructorSwitch(org.objectweb.asm.ClassWriter cw, PositionAware initPosition, int superpos, boolean hasParent, RubyClass.ConcreteJavaReifier cjr, JavaConstructor[] constructors) Main switch constructor. Required for concrete reification -
makeConcreteConstructorIROProxy
public static void makeConcreteConstructorIROProxy(org.objectweb.asm.ClassWriter cw, PositionAware initPosition, RubyClass.ConcreteJavaReifier cjr) Public access for IRubyObject constructor -
makeConcreteConstructorProxy
public static String makeConcreteConstructorProxy(org.objectweb.asm.ClassWriter cw, PositionAware initPosition, boolean hasRuby, RubyClass.ConcreteJavaReifier cjr, Class[] ctorTypes, boolean nested) Defines a constructor that delegates to the main switch constructor- Parameters:
cw- class builderinitPosition- source code position of initializehasRuby- If this method accepts ruby & rubyclass on the end (auto-added)ctorTypes- signature, minus any ruby argumentsnested- If this is a nested/secondary ruby class ([ruby <]+ ruby < java )
-
makeGenerator
-