@ -42,8 +42,25 @@ public class OpaquePredicateTransformer : Transformer() {
private fun findFlowObstructors ( library : Library , method : MethodNode ) {
private fun findFlowObstructors ( library : Library , method : MethodNode ) {
for ( match in FLOW _OBSTRUCTOR _INITIALIZER _MATCHER . match ( method ) ) {
for ( match in FLOW _OBSTRUCTOR _INITIALIZER _MATCHER . match ( method ) ) {
// add flow obstructor to set
val putstatic = match . last ( ) as FieldInsnNode
val putstatic = match . last ( ) as FieldInsnNode
/ *
* if the initializer reads a local variable , check the local
* variable is populated with a static field
* /
val first = match . first ( )
if ( first is VarInsnNode ) {
val storeFound = STORE _MATCHER . match ( method ) . any {
val istore = it [ 1 ] as VarInsnNode
return @any first . `var` == istore . `var`
}
if ( ! storeFound ) {
continue
}
}
// add flow obstructor to set
flowObstructors . add ( MemberRef ( putstatic ) )
flowObstructors . add ( MemberRef ( putstatic ) )
/ *
/ *