/** * Copyright (c) 2012-2016 André Bargull * Alle Rechte vorbehalten / All Rights Reserved. Use is subject to license terms. * * <https://github.com/anba/es6draft> */ package com.github.anba.es6draft.compiler.assembler; import org.objectweb.asm.Opcodes; /** * Method handles. */ public final class Handle { private final org.objectweb.asm.Handle handle; /*package*/Handle(MethodName method) { this.handle = new org.objectweb.asm.Handle(toTag(method), method.owner.internalName(), method.name, method.descriptor.descriptor()); } org.objectweb.asm.Handle handle() { return handle; } private static int toTag(MethodName method) { switch (method.invoke) { case Interface: return Opcodes.H_INVOKEINTERFACE; case Special: case SpecialInterface: return Opcodes.H_INVOKESPECIAL; case Static: case StaticInterface: return Opcodes.H_INVOKESTATIC; case Virtual: case VirtualInterface: return Opcodes.H_INVOKEVIRTUAL; default: throw new AssertionError(); } } }