19c60ef2a1034e9f8d111907e4fceb3a4ca2e7e69Ben Gruver/*
29c60ef2a1034e9f8d111907e4fceb3a4ca2e7e69Ben Gruver * Copyright 2012, Google Inc.
39c60ef2a1034e9f8d111907e4fceb3a4ca2e7e69Ben Gruver * All rights reserved.
49c60ef2a1034e9f8d111907e4fceb3a4ca2e7e69Ben Gruver *
59c60ef2a1034e9f8d111907e4fceb3a4ca2e7e69Ben Gruver * Redistribution and use in source and binary forms, with or without
69c60ef2a1034e9f8d111907e4fceb3a4ca2e7e69Ben Gruver * modification, are permitted provided that the following conditions are
79c60ef2a1034e9f8d111907e4fceb3a4ca2e7e69Ben Gruver * met:
89c60ef2a1034e9f8d111907e4fceb3a4ca2e7e69Ben Gruver *
99c60ef2a1034e9f8d111907e4fceb3a4ca2e7e69Ben Gruver *     * Redistributions of source code must retain the above copyright
109c60ef2a1034e9f8d111907e4fceb3a4ca2e7e69Ben Gruver * notice, this list of conditions and the following disclaimer.
119c60ef2a1034e9f8d111907e4fceb3a4ca2e7e69Ben Gruver *     * Redistributions in binary form must reproduce the above
129c60ef2a1034e9f8d111907e4fceb3a4ca2e7e69Ben Gruver * copyright notice, this list of conditions and the following disclaimer
139c60ef2a1034e9f8d111907e4fceb3a4ca2e7e69Ben Gruver * in the documentation and/or other materials provided with the
149c60ef2a1034e9f8d111907e4fceb3a4ca2e7e69Ben Gruver * distribution.
159c60ef2a1034e9f8d111907e4fceb3a4ca2e7e69Ben Gruver *     * Neither the name of Google Inc. nor the names of its
169c60ef2a1034e9f8d111907e4fceb3a4ca2e7e69Ben Gruver * contributors may be used to endorse or promote products derived from
179c60ef2a1034e9f8d111907e4fceb3a4ca2e7e69Ben Gruver * this software without specific prior written permission.
189c60ef2a1034e9f8d111907e4fceb3a4ca2e7e69Ben Gruver *
199c60ef2a1034e9f8d111907e4fceb3a4ca2e7e69Ben Gruver * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
209c60ef2a1034e9f8d111907e4fceb3a4ca2e7e69Ben Gruver * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
219c60ef2a1034e9f8d111907e4fceb3a4ca2e7e69Ben Gruver * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
229c60ef2a1034e9f8d111907e4fceb3a4ca2e7e69Ben Gruver * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
239c60ef2a1034e9f8d111907e4fceb3a4ca2e7e69Ben Gruver * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
249c60ef2a1034e9f8d111907e4fceb3a4ca2e7e69Ben Gruver * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
259c60ef2a1034e9f8d111907e4fceb3a4ca2e7e69Ben Gruver * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
269c60ef2a1034e9f8d111907e4fceb3a4ca2e7e69Ben Gruver * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
279c60ef2a1034e9f8d111907e4fceb3a4ca2e7e69Ben Gruver * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
289c60ef2a1034e9f8d111907e4fceb3a4ca2e7e69Ben Gruver * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
299c60ef2a1034e9f8d111907e4fceb3a4ca2e7e69Ben Gruver * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
309c60ef2a1034e9f8d111907e4fceb3a4ca2e7e69Ben Gruver */
319c60ef2a1034e9f8d111907e4fceb3a4ca2e7e69Ben Gruver
329c60ef2a1034e9f8d111907e4fceb3a4ca2e7e69Ben Gruverpackage org.jf.dexlib2.immutable.debug;
339c60ef2a1034e9f8d111907e4fceb3a4ca2e7e69Ben Gruver
349c60ef2a1034e9f8d111907e4fceb3a4ca2e7e69Ben Gruverimport org.jf.dexlib2.DebugItemType;
359c60ef2a1034e9f8d111907e4fceb3a4ca2e7e69Ben Gruverimport org.jf.dexlib2.iface.debug.PrologueEnd;
369c60ef2a1034e9f8d111907e4fceb3a4ca2e7e69Ben Gruver
379c60ef2a1034e9f8d111907e4fceb3a4ca2e7e69Ben Gruverimport javax.annotation.Nonnull;
389c60ef2a1034e9f8d111907e4fceb3a4ca2e7e69Ben Gruver
399c60ef2a1034e9f8d111907e4fceb3a4ca2e7e69Ben Gruverpublic class ImmutablePrologueEnd extends ImmutableDebugItem implements PrologueEnd {
409c60ef2a1034e9f8d111907e4fceb3a4ca2e7e69Ben Gruver    public ImmutablePrologueEnd(int codeAddress) {
419c60ef2a1034e9f8d111907e4fceb3a4ca2e7e69Ben Gruver        super(codeAddress);
429c60ef2a1034e9f8d111907e4fceb3a4ca2e7e69Ben Gruver    }
439c60ef2a1034e9f8d111907e4fceb3a4ca2e7e69Ben Gruver
449c60ef2a1034e9f8d111907e4fceb3a4ca2e7e69Ben Gruver    @Nonnull
459c60ef2a1034e9f8d111907e4fceb3a4ca2e7e69Ben Gruver    public static ImmutablePrologueEnd of(@Nonnull PrologueEnd prologueEnd) {
469c60ef2a1034e9f8d111907e4fceb3a4ca2e7e69Ben Gruver        if (prologueEnd instanceof ImmutablePrologueEnd) {
479c60ef2a1034e9f8d111907e4fceb3a4ca2e7e69Ben Gruver            return (ImmutablePrologueEnd)prologueEnd;
489c60ef2a1034e9f8d111907e4fceb3a4ca2e7e69Ben Gruver        }
499c60ef2a1034e9f8d111907e4fceb3a4ca2e7e69Ben Gruver        return new ImmutablePrologueEnd(prologueEnd.getCodeAddress());
509c60ef2a1034e9f8d111907e4fceb3a4ca2e7e69Ben Gruver    }
519c60ef2a1034e9f8d111907e4fceb3a4ca2e7e69Ben Gruver
529c60ef2a1034e9f8d111907e4fceb3a4ca2e7e69Ben Gruver    @Override public int getDebugItemType() { return DebugItemType.PROLOGUE_END; }
539c60ef2a1034e9f8d111907e4fceb3a4ca2e7e69Ben Gruver}
54