1afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath/* 2afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath * Copyright 2012, Google Inc. 3afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath * All rights reserved. 4afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath * 5afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath * Redistribution and use in source and binary forms, with or without 6afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath * modification, are permitted provided that the following conditions are 7afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath * met: 8afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath * 9afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath * * Redistributions of source code must retain the above copyright 10afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath * notice, this list of conditions and the following disclaimer. 11afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath * * Redistributions in binary form must reproduce the above 12afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath * copyright notice, this list of conditions and the following disclaimer 13afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath * in the documentation and/or other materials provided with the 14afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath * distribution. 15afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath * * Neither the name of Google Inc. nor the names of its 16afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath * contributors may be used to endorse or promote products derived from 17afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath * this software without specific prior written permission. 18afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath * 19afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath */ 31afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath 32afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamathpackage org.jf.dexlib2.builder.instruction; 33afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath 34afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamathimport org.jf.dexlib2.Format; 35afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamathimport org.jf.dexlib2.Opcode; 36afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamathimport org.jf.dexlib2.builder.BuilderInstruction; 37afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamathimport org.jf.dexlib2.iface.instruction.formats.Instruction4rcc; 38afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamathimport org.jf.dexlib2.iface.reference.Reference; 39afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamathimport org.jf.dexlib2.util.Preconditions; 40afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath 41afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamathimport javax.annotation.Nonnull; 42afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath 43afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamathpublic class BuilderInstruction4rcc extends BuilderInstruction implements Instruction4rcc { 44afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath public static final Format FORMAT = Format.Format4rcc; 45afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath 46afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath protected final int startRegister; 47afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath protected final int registerCount; 48afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath 49afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath @Nonnull protected final Reference reference; 50afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath @Nonnull protected final Reference reference2; 51afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath 52afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath public BuilderInstruction4rcc(@Nonnull Opcode opcode, 53afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath int startRegister, 54afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath int registerCount, 55afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath @Nonnull Reference reference, 56afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath @Nonnull Reference reference2) { 57afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath super(opcode); 58afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath this.startRegister = Preconditions.checkShortRegister(startRegister); 59afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath this.registerCount = Preconditions.checkRegisterRangeCount(registerCount); 60afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath this.reference = reference; 61afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath this.reference2 = reference2; 62afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath } 63afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath 64afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath @Override public int getStartRegister() { return startRegister; } 65afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath @Override public int getRegisterCount() { return registerCount; } 66afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath @Nonnull @Override public Reference getReference() { return reference; } 67afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath @Override public int getReferenceType() { return opcode.referenceType; } 68afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath @Nonnull @Override public Reference getReference2() { return reference2; } 69afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath @Override public int getReferenceType2() { return opcode.referenceType2; } 70afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath 71afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath @Override public Format getFormat() { return FORMAT; } 72afc1f1593936326e1c99f8328bbce8b495865000Narayan Kamath} 73