Top Description Fields Constructors Methods
org.jruby.runtime.scope

public Class DynamicScopeGenerator

extends Object
Class Inheritance
Imports
me.qmx.jitescript.CodeBlock, .JDKVersion, .JiteClass, org.jruby.Ruby, org.jruby.parser.StaticScope, org.jruby.runtime.DynamicScope, org.jruby.runtime.builtin.IRubyObject, org.jruby.util.ClassDefiningClassLoader, .ClassDefiningJRubyClassLoader, .OneShotClassLoader, org.jruby.util.collections.NonBlockingHashMapLong, org.objectweb.asm.Label, org.objectweb.asm.tree.LabelNode, java.io.File, .FileOutputStream, .IOException, java.lang.invoke.MethodHandle, .MethodHandles, .MethodType, java.util.Arrays, .Collections, .HashMap, .List, .Map

A generator for DynamicScope subclasses, using fields for storage and specializing appropriate methods.

Field Summary

Modifier and TypeField and Description
private static final ClassDefiningClassLoader
public static final String
public static final String
public static final List<String>
public static final List<String>
public static final List<String>
private static final NonBlockingHashMapLong<MethodHandle>

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
private static String
private static Class<T>
public static MethodHandle
generate(final int size)

public static Class<T>
private static Class<T>
generateInternal(final ClassDefiningClassLoader cdcl, final int size, final String clsPath, final String clsName)

private static void
genGetSwitch(String clsPath, String[] newFields, CodeBlock block, int offsetVar)

private static void
genPutSwitch(String clsPath, String[] newFields, CodeBlock block, int offsetVar)

private static MethodHandle
getClassFromSize(int size)

private static Class<T>
public static void
main(String[]
args[0] should be the path in which the classes are dumped
args
)

Pregenerate a number of scope shapes to the path given.

private static String[]
varList(int size)

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

CDCLback to summary
private static final ClassDefiningClassLoader CDCL
SCOPES_PACKAGEback to summary
public static final String SCOPES_PACKAGE
SCOPES_PATHback to summary
public static final String SCOPES_PATH
SPECIALIZED_GETSback to summary
public static final List<String> SPECIALIZED_GETS
SPECIALIZED_GETS_OR_NILback to summary
public static final List<String> SPECIALIZED_GETS_OR_NIL
SPECIALIZED_SETSback to summary
public static final List<String> SPECIALIZED_SETS
specializedFactoriesback to summary
private static final NonBlockingHashMapLong<MethodHandle> specializedFactories

Constructor Detail

DynamicScopeGeneratorback to summary
public DynamicScopeGenerator()

Method Detail

classNameFromJiteClassback to summary
private static String classNameFromJiteClass(JiteClass jiteClass)
defineClassback to summary
private static Class<T> defineClass(ClassDefiningClassLoader cdcl, JiteClass jiteClass)
generateback to summary
public static MethodHandle generate(final int size)
generateClassForSizeback to summary
public static Class<T> generateClassForSize(ClassDefiningClassLoader cdcl, int size)
generateInternalback to summary
private static Class<T> generateInternal(final ClassDefiningClassLoader cdcl, final int size, final String clsPath, final String clsName)
genGetSwitchback to summary
private static void genGetSwitch(String clsPath, String[] newFields, CodeBlock block, int offsetVar)
genPutSwitchback to summary
private static void genPutSwitch(String clsPath, String[] newFields, CodeBlock block, int offsetVar)
getClassFromSizeback to summary
private static MethodHandle getClassFromSize(int size)
loadClassForSizeback to summary
private static Class<T> loadClassForSize(ClassDefiningClassLoader cdcl, int size)
mainback to summary
public static void main(String[] args)

Pregenerate a number of scope shapes to the path given.

Parameters
args:String[]

args[0] should be the path in which the classes are dumped

varListback to summary
private static String[] varList(int size)