private static void _init() { setMVELClassLoader(classLoader = new DynamicClassLoader(currentThread().getContextClassLoader(), maximumTenure)); }
public static void enforceTenureLimit() { if (classLoader.isOverloaded()) { classLoader.deoptimizeAll(); totalRecycled = +classLoader.getTotalClasses(); _init(); } }
public Accessor optimizeObjectCreation(ParserContext pCtx, char[] property, int start, int offset, Object ctx, Object thisRef, VariableResolverFactory factory) { readLock.lock(); try{ return classLoader.registerDynamicAccessor(new DynamicGetAccessor(pCtx, property, start, offset, 3, firstStage.optimizeObjectCreation(pCtx, property, start, offset, ctx, thisRef, factory))); } finally{ readLock.unlock(); } }
public static boolean isOverloaded() { return classLoader.isOverloaded(); }
public Accessor optimizeSetAccessor(ParserContext pCtx, char[] property, int start, int offset, Object ctx, Object thisRef, VariableResolverFactory factory, boolean rootThisRef, Object value, Class valueType) { readLock.lock(); try{ return classLoader.registerDynamicAccessor(new DynamicSetAccessor(pCtx, property, start, offset, firstStage.optimizeSetAccessor(pCtx, property, start, offset, ctx, thisRef, factory, rootThisRef, value, valueType))); } finally{ readLock.unlock(); } }
public static boolean isOverloaded() { return classLoader.isOverloaded(); }
public static void enforceTenureLimit() { writeLock.lock(); try{ if (classLoader.isOverloaded()) { classLoader.deoptimizeAll(); totalRecycled = +classLoader.getTotalClasses(); _init(); } } finally{ writeLock.unlock(); } }
public Accessor optimizeSetAccessor(ParserContext pCtx, char[] property, int start, int offset, Object ctx, Object thisRef, VariableResolverFactory factory, boolean rootThisRef, Object value, Class valueType) { readLock.lock(); try{ return classLoader.registerDynamicAccessor(new DynamicSetAccessor(pCtx, property, start, offset, firstStage.optimizeSetAccessor(pCtx, property, start, offset, ctx, thisRef, factory, rootThisRef, value, valueType))); } finally{ readLock.unlock(); } }
private Object optimize(Object ctx, Object elCtx, VariableResolverFactory variableResolverFactory, Object value) { if (DynamicOptimizer.classLoader.isOverloaded()) { DynamicOptimizer.enforceTenureLimit(); } AccessorOptimizer ao = OptimizerFactory.getAccessorCompiler("ASM"); _accessor = ao.optimizeSetAccessor(context, property, ctx, elCtx, variableResolverFactory, false, value, value != null ? value.getClass() : Object.class); assert _accessor != null; return value; }
private static void _init() { setMVELClassLoader(classLoader = new DynamicClassLoader(currentThread().getContextClassLoader(), maximumTenure)); }
public static void enforceTenureLimit() { writeLock.lock(); try{ if (classLoader.isOverloaded()) { classLoader.deoptimizeAll(); totalRecycled = +classLoader.getTotalClasses(); _init(); } } finally{ writeLock.unlock(); } }
public Accessor optimizeCollection(ParserContext pCtx, Object rootObject, Class type, char[] property, int start, int offset, Object ctx, Object thisRef, VariableResolverFactory factory) { readLock.lock(); try{ return classLoader.registerDynamicAccessor(new DynamicCollectionAccessor(pCtx, rootObject, type, property, start, offset, 2, firstStage.optimizeCollection(pCtx, rootObject, type, property, start, offset, ctx, thisRef, factory))); } finally{ readLock.unlock(); } }
private Object optimize(ParserContext pCtx, Object ctx, Object elCtx, VariableResolverFactory variableResolverFactory) { if (DynamicOptimizer.classLoader.isOverloaded()) { DynamicOptimizer.enforceTenureLimit(); } _accessor = OptimizerFactory.getAccessorCompiler("ASM").optimizeCollection(pCtx, rootObject, colType, property, ctx, elCtx, variableResolverFactory); return _accessor.getValue(ctx, elCtx, variableResolverFactory); }
private static void _init() { setMVELClassLoader(classLoader = new DynamicClassLoader(currentThread().getContextClassLoader(), maximumTenure)); }
public Accessor optimizeCollection(ParserContext pCtx, Object rootObject, Class type, char[] property, int start, int offset, Object ctx, Object thisRef, VariableResolverFactory factory) { readLock.lock(); try{ return classLoader.registerDynamicAccessor(new DynamicCollectionAccessor(pCtx, rootObject, type, property, start, offset, 2, firstStage.optimizeCollection(pCtx, rootObject, type, property, start, offset, ctx, thisRef, factory))); } finally{ readLock.unlock(); } }
private Object optimize(Object ctx, Object elCtx, VariableResolverFactory variableResolverFactory) { if (DynamicOptimizer.classLoader.isOverloaded()) { DynamicOptimizer.enforceTenureLimit(); } AccessorOptimizer ao = OptimizerFactory.getAccessorCompiler("ASM"); switch (type) { case DynamicOptimizer.REGULAR_ACCESSOR: _accessor = ao.optimizeAccessor(context, property, ctx, elCtx, variableResolverFactory, false, null); return ao.getResultOptPass(); case DynamicOptimizer.OBJ_CREATION: _accessor = ao.optimizeObjectCreation(context, property, ctx, elCtx, variableResolverFactory); return _accessor.getValue(ctx, elCtx, variableResolverFactory); case DynamicOptimizer.COLLECTION: _accessor = ao.optimizeCollection(AbstractParser.getCurrentThreadParserContext(), ctx, null, property, ctx, elCtx, variableResolverFactory); return _accessor.getValue(ctx, elCtx, variableResolverFactory); } return null; }
public Accessor optimizeObjectCreation(ParserContext pCtx, char[] property, int start, int offset, Object ctx, Object thisRef, VariableResolverFactory factory) { readLock.lock(); try{ return classLoader.registerDynamicAccessor(new DynamicGetAccessor(pCtx, property, start, offset, 3, firstStage.optimizeObjectCreation(pCtx, property, start, offset, ctx, thisRef, factory))); } finally{ readLock.unlock(); } }
public Accessor optimizeAccessor(ParserContext pCtx, char[] property, int start, int offset, Object ctx, Object thisRef, VariableResolverFactory factory, boolean rootThisRef, Class ingressType) { readLock.lock(); try{ pCtx.optimizationNotify(); return classLoader.registerDynamicAccessor(new DynamicGetAccessor(pCtx, property, start, offset, 0, firstStage.optimizeAccessor(pCtx, property, start, offset, ctx, thisRef, factory, rootThisRef, ingressType))); } finally{ readLock.unlock(); } }
public Accessor optimizeAccessor(ParserContext pCtx, char[] property, int start, int offset, Object ctx, Object thisRef, VariableResolverFactory factory, boolean rootThisRef, Class ingressType) { readLock.lock(); try{ pCtx.optimizationNotify(); return classLoader.registerDynamicAccessor(new DynamicGetAccessor(pCtx, property, start, offset, 0, firstStage.optimizeAccessor(pCtx, property, start, offset, ctx, thisRef, factory, rootThisRef, ingressType))); } finally{ readLock.unlock(); } }
public Accessor optimizeAccessor(ParserContext pCtx, char[] property, Object ctx, Object thisRef, VariableResolverFactory factory, boolean rootThisRef, Class ingressType) { return classLoader.registerDynamicAccessor(new DynamicGetAccessor(pCtx, property, 0, firstStage.optimizeAccessor(pCtx, property, ctx, thisRef, factory, rootThisRef, ingressType))); }