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 int
calcBaseIndex
(Class[] params, int baseIndex) static void
coerceArgumentsToRuby
(SkinnyMethodAdapter mv, Class[] paramTypes, int rubyIndex) static void
coerceResult
(SkinnyMethodAdapter mv, Class returnType, boolean doReturn) static void
coerceResultAndReturn
(SkinnyMethodAdapter mv, Class returnType) static Class
createOldStyleImplClass
(Class[] superTypes, RubyClass rubyClass, Ruby ruby, String name, ClassDefiningClassLoader classLoader) static Class
createRealImplClass
(Class superClass, Class<?>[] interfaces, RubyClass rubyClass, Ruby ruby, String name) 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.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.static void
makeConcreteConstructorIROProxy
(org.objectweb.asm.ClassWriter cw, PositionAware initPosition, RubyClass.ConcreteJavaReifier cjr) Public access for IRubyObject constructorstatic 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 constructorstatic void
makeConcreteConstructorSwitch
(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
-