@@ -21,8 +21,8 @@ import java.io.{ByteArrayInputStream, ByteArrayOutputStream}
2121
2222import scala .collection .mutable .{Map , Set }
2323
24- import com . esotericsoftware . reflectasm . shaded . org .objectweb . asm .{ClassReader , ClassVisitor , MethodVisitor , Type }
25- import com . esotericsoftware . reflectasm . shaded . org .objectweb . asm .Opcodes ._
24+ import org .apache . xbean . asm5 .{ClassReader , ClassVisitor , MethodVisitor , Type }
25+ import org .apache . xbean . asm5 .Opcodes ._
2626
2727import org .apache .spark .{Logging , SparkEnv , SparkException }
2828
@@ -325,19 +325,19 @@ private[spark] object ClosureCleaner extends Logging {
325325private [spark] class ReturnStatementInClosureException
326326 extends SparkException (" Return statements aren't allowed in Spark closures" )
327327
328- private class ReturnStatementFinder extends ClassVisitor (ASM4 ) {
328+ private class ReturnStatementFinder extends ClassVisitor (ASM5 ) {
329329 override def visitMethod (access : Int , name : String , desc : String ,
330330 sig : String , exceptions : Array [String ]): MethodVisitor = {
331331 if (name.contains(" apply" )) {
332- new MethodVisitor (ASM4 ) {
332+ new MethodVisitor (ASM5 ) {
333333 override def visitTypeInsn (op : Int , tp : String ) {
334334 if (op == NEW && tp.contains(" scala/runtime/NonLocalReturnControl" )) {
335335 throw new ReturnStatementInClosureException
336336 }
337337 }
338338 }
339339 } else {
340- new MethodVisitor (ASM4 ) {}
340+ new MethodVisitor (ASM5 ) {}
341341 }
342342 }
343343}
@@ -361,7 +361,7 @@ private[util] class FieldAccessFinder(
361361 findTransitively : Boolean ,
362362 specificMethod : Option [MethodIdentifier [_]] = None ,
363363 visitedMethods : Set [MethodIdentifier [_]] = Set .empty)
364- extends ClassVisitor (ASM4 ) {
364+ extends ClassVisitor (ASM5 ) {
365365
366366 override def visitMethod (
367367 access : Int ,
@@ -376,7 +376,7 @@ private[util] class FieldAccessFinder(
376376 return null
377377 }
378378
379- new MethodVisitor (ASM4 ) {
379+ new MethodVisitor (ASM5 ) {
380380 override def visitFieldInsn (op : Int , owner : String , name : String , desc : String ) {
381381 if (op == GETFIELD ) {
382382 for (cl <- fields.keys if cl.getName == owner.replace('/' , '.' )) {
@@ -385,7 +385,8 @@ private[util] class FieldAccessFinder(
385385 }
386386 }
387387
388- override def visitMethodInsn (op : Int , owner : String , name : String , desc : String ) {
388+ override def visitMethodInsn (
389+ op : Int , owner : String , name : String , desc : String , itf : Boolean ) {
389390 for (cl <- fields.keys if cl.getName == owner.replace('/' , '.' )) {
390391 // Check for calls a getter method for a variable in an interpreter wrapper object.
391392 // This means that the corresponding field will be accessed, so we should save it.
@@ -408,7 +409,7 @@ private[util] class FieldAccessFinder(
408409 }
409410}
410411
411- private class InnerClosureFinder (output : Set [Class [_]]) extends ClassVisitor (ASM4 ) {
412+ private class InnerClosureFinder (output : Set [Class [_]]) extends ClassVisitor (ASM5 ) {
412413 var myName : String = null
413414
414415 // TODO: Recursively find inner closures that we indirectly reference, e.g.
@@ -423,9 +424,9 @@ private class InnerClosureFinder(output: Set[Class[_]]) extends ClassVisitor(ASM
423424
424425 override def visitMethod (access : Int , name : String , desc : String ,
425426 sig : String , exceptions : Array [String ]): MethodVisitor = {
426- new MethodVisitor (ASM4 ) {
427- override def visitMethodInsn (op : Int , owner : String , name : String ,
428- desc : String ) {
427+ new MethodVisitor (ASM5 ) {
428+ override def visitMethodInsn (
429+ op : Int , owner : String , name : String , desc : String , itf : Boolean ) {
429430 val argTypes = Type .getArgumentTypes(desc)
430431 if (op == INVOKESPECIAL && name == " <init>" && argTypes.length > 0
431432 && argTypes(0 ).toString.startsWith(" L" ) // is it an object?
0 commit comments