boolean needsFrameGuard(int opcode, String owner, String name, String desc) { if (owner.startsWith("java/") || owner.startsWith("javax/")) { //System.out.println("SKIP:: " + owner + "." + name + desc); return false; } // Always create save-point before Continuation methods (like suspend) if (CONTINUATION_CLASS_INTERNAL_NAME.equals(owner)) { return CONTINUATION_CLASS_CONTINUABLE_METHODS.contains(name); } // No need to create save-point before constructors -- it's forbidden to suspend in constructors anyway if (opcode == Opcodes.INVOKESPECIAL && "<init>".equals(name)) { return false; } if (opcode == Opcodes.INVOKEINTERFACE || opcode == Opcodes.INVOKESPECIAL || opcode == Opcodes.INVOKESTATIC || opcode == Opcodes.INVOKEVIRTUAL) { ContinuableClassInfo classInfo; try { classInfo = cciResolver.resolve(owner); } catch (IOException ex) { throw new RuntimeException(ex); } return null != classInfo && classInfo.isContinuableMethod(opcode, name, desc, desc); } return false; }
public void visit(int version, int access, String name, String signature, String superName, String[] interfaces) { isInterface = (access & Opcodes.ACC_INTERFACE) != 0; className = name; classInfo = cciResolver.resolve(name, originalBytes); if (null == classInfo || classInfo.isClassProcessed() || StopException.__dirtyCheckSkipContinuationsOnClass(version, access, name, signature, superName, interfaces)) { skipEnchancing = true; // Must exit by throwing exception, otherwise NPE is possible in nested visitor throw StopException.INSTANCE; } cv.visit(version, access, name, signature, superName, interfaces); }
public void visit(int version, int access, String name, String signature, String superName, String[] interfaces) { isInterface = (access & Opcodes.ACC_INTERFACE) != 0; className = name; classInfo = cciResolver.resolve(name, originalBytes); if (null == classInfo || classInfo.isClassProcessed() || StopException.__dirtyCheckSkipContinuationsOnClass(version, access, name, signature, superName, interfaces)) { skipEnchancing = true; // Must exit by throwing exception, otherwise NPE is possible in nested visitor throw StopException.INSTANCE; } cv.visit(version, access, name, signature, superName, interfaces); }
public void visit(int version, int access, String name, String signature, String superName, String[] interfaces) { isInterface = (access & Opcodes.ACC_INTERFACE) != 0; className = name; classInfo = cciResolver.resolve(name, originalBytes); if (null == classInfo || classInfo.isClassProcessed() || StopException.__dirtyCheckSkipContinuationsOnClass(version, access, name, signature, superName, interfaces)) { skipEnchancing = true; // Must exit by throwing exception, otherwise NPE is possible in nested visitor throw StopException.INSTANCE; } cv.visit(version, access, name, signature, superName, interfaces); }
public void visit(int version, int access, String name, String signature, String superName, String[] interfaces) { isInterface = (access & Opcodes.ACC_INTERFACE) != 0; className = name; classInfo = cciResolver.resolve(name, originalBytes); if (null == classInfo || classInfo.isClassProcessed() || StopException.__dirtyCheckSkipContinuationsOnClass(version, access, name, signature, superName, interfaces)) { skipEnchancing = true; // Must exit by throwing exception, otherwise NPE is possible in nested visitor throw StopException.INSTANCE; } cv.visit(version, access, name, signature, superName, interfaces); }
ContinuableClassInfo classInfo; try { classInfo = cciResolver.resolve(owner); } catch (IOException ex) { throw new RuntimeException(ex);
ContinuableClassInfo classInfo; try { classInfo = cciResolver.resolve(owner); } catch (IOException ex) { throw new RuntimeException(ex);
ContinuableClassInfo classInfo; try { classInfo = cciResolver.resolve(owner); } catch (IOException ex) { throw new RuntimeException(ex);
ContinuableClassInfo classInfo; try { classInfo = cciResolver.resolve(owner); } catch (IOException ex) { throw new RuntimeException(ex);
@Override public void visit(int version, int access, String name, String signature, String superName, String[] interfaces) { className = name; classInfo = cciResolver.resolve(name, originalBytes); if (null == classInfo || classInfo.isClassProcessed() || cciResolver.veto().matches(name, signature, superName, interfaces)) { skipEnchancing = true; // Must exit by throwing exception, otherwise NPE is possible in nested visitor throw StopException.INSTANCE; } cv.visit(version, access, name, signature, superName, interfaces); }
classInfo = cciResolver.resolve(superName); if (null == classInfo) { throw StopException.INSTANCE;