Class RealClassGenerator

java.lang.Object
org.jruby.java.codegen.RealClassGenerator

public abstract class RealClassGenerator extends Object
On fly .class generator (used for Ruby interface impls).
Author:
headius
  • Constructor Details

    • RealClassGenerator

      public RealClassGenerator()
  • Method Details

    • createOldStyleImplClass

      public static Class createOldStyleImplClass(Class[] superTypes, RubyClass rubyClass, Ruby ruby, String name, ClassDefiningClassLoader classLoader)
    • createRealImplClass

      public static Class createRealImplClass(Class superClass, Class<?>[] interfaces, RubyClass rubyClass, Ruby ruby, String name)
    • 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

      public static void coerceArgumentsToRuby(SkinnyMethodAdapter mv, Class[] paramTypes, int rubyIndex)
    • coerceResultAndReturn

      public static void coerceResultAndReturn(SkinnyMethodAdapter mv, Class returnType)
    • coerceResult

      public static void coerceResult(SkinnyMethodAdapter mv, Class returnType, boolean doReturn)
    • calcBaseIndex

      public static int calcBaseIndex(Class[] params, int baseIndex)
    • 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 builder
      initPosition - source code position of initialize
      hasRuby - If this method accepts ruby & rubyclass on the end (auto-added)
      ctorTypes - signature, minus any ruby arguments
      nested - If this is a nested/secondary ruby class ([ruby <]+ ruby < java )
    • makeGenerator

      public static org.objectweb.asm.commons.GeneratorAdapter makeGenerator(SkinnyMethodAdapter m)