Bug 481150 - [otdre] skip classes that are known to contain a JSR
instruction
diff --git a/plugins/org.eclipse.objectteams.otequinox/src/org/eclipse/objectteams/internal/osgi/weaving/OTWeavingHook.java b/plugins/org.eclipse.objectteams.otequinox/src/org/eclipse/objectteams/internal/osgi/weaving/OTWeavingHook.java
index 46436cf..25e836d 100644
--- a/plugins/org.eclipse.objectteams.otequinox/src/org/eclipse/objectteams/internal/osgi/weaving/OTWeavingHook.java
+++ b/plugins/org.eclipse.objectteams.otequinox/src/org/eclipse/objectteams/internal/osgi/weaving/OTWeavingHook.java
@@ -228,6 +228,8 @@
 
 			if (isEclipseLoggingClass(bundleName, className))
 				return;
+			if (isClassWithJSR(className))
+				return;
 
 			if (BCELPatcher.BCEL_PLUGIN_ID.equals(bundleName)) {
 				BCELPatcher.fixBCEL(wovenClass);
@@ -275,6 +277,19 @@
 		}
 	}
 
+	private boolean isClassWithJSR(String className) {
+		// ASM cannot handle JSR instruction:
+		//		java.lang.RuntimeException: JSR/RET are not supported with computeFrames option
+		//        at org.objectweb.asm.Frame.execute(Frame.java:1178)
+		//        at org.objectweb.asm.MethodWriter.visitJumpInsn(MethodWriter.java:984)
+		//        at org.objectweb.asm.commons.AdviceAdapter.visitJumpInsn(AdviceAdapter.java:503)
+		//        at org.objectweb.asm.ClassReader.readCode(ClassReader.java:1335)
+		//        at org.objectweb.asm.ClassReader.readMethod(ClassReader.java:1017)
+		//        at org.objectweb.asm.ClassReader.accept(ClassReader.java:693)
+		// Hence any class known to contain that instruction is excluded:
+		return "org.apache.felix.gogo.runtime.Pipe".equals(className);
+	}
+
 	private boolean isEclipseLoggingClass(String bundleName, String className) {
 		if (bundleName.equals("org.eclipse.ui.workbench")) {
 			if (className.equals("org.eclipse.ui.statushandlers.StatusAdapter"))