@Override public void endDocument() throws SAXException { try { os.write(cw.toByteArray()); } catch (IOException e) { throw new SAXException(e); } } };
private Accessor _initializeAccessor() throws Exception { if (deferFinish) return null; /** * Hot load the class we just generated. */ Class cls = loadClass(className, cw.toByteArray()); assert debug("[MVEL JIT Completed Optimization <<" + (expr != null ? new String(expr) : "") + ">>]::" + cls + " (time: " + (System.currentTimeMillis() - time) + "ms)"); Object o; try { if (compiledInputs.size() == 0) { o = cls.newInstance(); } else { Class[] parms = new Class[compiledInputs.size()]; for (int i = 0; i < compiledInputs.size(); i++) { parms[i] = ExecutableStatement.class; } o = cls.getConstructor(parms).newInstance(compiledInputs.toArray(new ExecutableStatement[compiledInputs.size()])); } if (propNull) cls.getField("nullPropertyHandler").set(o, getNullPropertyHandler()); if (methNull) cls.getField("nullMethodHandler").set(o, getNullMethodHandler()); } catch (VerifyError e) { System.out.println("**** COMPILER BUG! REPORT THIS IMMEDIATELY AT http://jira.codehaus.org/browse/mvel2"); System.out.println("Expression: " + (expr == null ? null : new String(expr))); throw e; } return (Accessor) o; }
Class cls = loadClass(className, cw.toByteArray());
Class cls = loadClass(className, cw.toByteArray());
attributes, (hasFrames ? ClassReader.EXPAND_FRAMES : 0) | ClassReader.EXPAND_ASM_INSNS); return toByteArray();
public byte[] generateBytecode() { if (bytecode == null) { ClassWriter cw = new InternalClassWriter(classLoader, ClassWriter.COMPUTE_MAXS); cw.visit(version, access, getClassDescriptor(), signature, getSuperClassDescriptor(), toInteralNames(interfaces)); for (int i = 0; i < classParts.size(); i++) { // don't use iterator to allow method visits to add more class fields and methods classParts.get(i).write(this, cw); } if (staticInitializer != null) { staticInitializer.write(this, cw); } cw.visitEnd(); bytecode = cw.toByteArray(); if (DUMP_GENERATED_CLASSES) { dumpGeneratedClass(bytecode); } } return bytecode; }
private byte[] dumpWriter(final Class< ? > originalClass, final String className, final Method getterMethod, final Class< ? > fieldType, final boolean isInterface) throws Exception { final ClassWriter cw = new ClassWriter( ClassWriter.COMPUTE_MAXS ); final Class< ? > superClass = getWriterSuperClassFor( fieldType ); buildClassHeader( superClass, className, cw ); build3ArgConstructor( superClass, className, cw ); buildSetMethod( originalClass, className, superClass, getterMethod, fieldType, cw ); cw.visitEnd(); return cw.toByteArray(); }
private byte[] dumpReader(final Class< ? > originalClass, final String className, final Method getterMethod, final Class< ? > fieldType, final boolean isInterface) throws Exception { final ClassWriter cw = new ClassWriter( ClassWriter.COMPUTE_MAXS ); final Class< ? > superClass = getReaderSuperClassFor( fieldType ); buildClassHeader( superClass, className, cw ); // buildConstructor( superClass, // className, // cw ); build3ArgConstructor( superClass, className, cw ); buildGetMethod( originalClass, className, superClass, getterMethod, cw ); cw.visitEnd(); return cw.toByteArray(); }
byte[] serializedClass = cw.toByteArray();
(hasFrames ? ClassReader.EXPAND_FRAMES : 0) | ClassReader.EXPAND_ASM_INSNS); return toByteArray();
ClassWriter cw = new ClassWriter(COMPUTE_FRAMES); new ClassReader(out.data).accept(cw, ClassReader.SKIP_FRAMES); return cw.toByteArray();