/** * 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.Label; /** * Label class for jump, goto, and switch instructions. */ public class Jump { private final Label label; private boolean resolved; private boolean target; private Type[] stack; public Jump() { this.label = new Label(); } final void setStack(Type[] stack) { this.stack = stack; } final Label label() { assert !resolved; resolved = true; return label; } final Label target() { target = true; return label; } final Type[] stack() { return stack; } /** * Returns {@code true} if this label is resolved, otherwise {@code false}. * * @return {@code true} if this label is resolved */ public final boolean isResolved() { return resolved; } /** * Returns {@code true} if the label is the target of a jump instruction. * * @return {@code true} if the label is a target label */ public final boolean isTarget() { return target; } }