Introduced parametrised markers' set
This commit is contained in:
committed by
Andrey Breslav
parent
46f22b5422
commit
79c6f2b91b
@@ -33,6 +33,7 @@ import java.util.ArrayList
|
|||||||
import org.jetbrains.org.objectweb.asm.signature.SignatureReader
|
import org.jetbrains.org.objectweb.asm.signature.SignatureReader
|
||||||
import org.jetbrains.org.objectweb.asm.signature.SignatureWriter
|
import org.jetbrains.org.objectweb.asm.signature.SignatureWriter
|
||||||
import org.jetbrains.org.objectweb.asm.MethodVisitor
|
import org.jetbrains.org.objectweb.asm.MethodVisitor
|
||||||
|
import com.google.common.collect.ImmutableSet
|
||||||
|
|
||||||
public class ReifiedTypeInliner(private val parametersMapping: ReifiedTypeParameterMappings?) {
|
public class ReifiedTypeInliner(private val parametersMapping: ReifiedTypeParameterMappings?) {
|
||||||
|
|
||||||
@@ -43,8 +44,13 @@ public class ReifiedTypeInliner(private val parametersMapping: ReifiedTypeParame
|
|||||||
public val JAVA_CLASS_MARKER_METHOD_NAME: String = "reifyJavaClass"
|
public val JAVA_CLASS_MARKER_METHOD_NAME: String = "reifyJavaClass"
|
||||||
public val NEED_CLASS_REIFICATION_MARKER_METHOD_NAME: String = "needClassReification"
|
public val NEED_CLASS_REIFICATION_MARKER_METHOD_NAME: String = "needClassReification"
|
||||||
|
|
||||||
|
private val PARAMETRISED_MARKERS = ImmutableSet.of(
|
||||||
|
NEW_ARRAY_MARKER_METHOD_NAME, CHECKCAST_MARKER_METHOD_NAME,
|
||||||
|
INSTANCEOF_MARKER_METHOD_NAME, JAVA_CLASS_MARKER_METHOD_NAME
|
||||||
|
)
|
||||||
|
|
||||||
private fun isParametrisedReifiedMarker(insn: AbstractInsnNode) =
|
private fun isParametrisedReifiedMarker(insn: AbstractInsnNode) =
|
||||||
isReifiedMarker(insn) { it.startsWith("reify") }
|
isReifiedMarker(insn) { PARAMETRISED_MARKERS.contains(it) }
|
||||||
|
|
||||||
private fun isReifiedMarker(insn: AbstractInsnNode, namePredicate: (String) -> Boolean): Boolean {
|
private fun isReifiedMarker(insn: AbstractInsnNode, namePredicate: (String) -> Boolean): Boolean {
|
||||||
if (insn.getOpcode() != Opcodes.INVOKESTATIC || insn !is MethodInsnNode) return false
|
if (insn.getOpcode() != Opcodes.INVOKESTATIC || insn !is MethodInsnNode) return false
|
||||||
|
|||||||
Reference in New Issue
Block a user