1// Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file 2// for details. All rights reserved. Use of this source code is governed by a 3// BSD-style license that can be found in the LICENSE file. 4package com.android.tools.r8.code; 5 6import com.android.tools.r8.graph.DexField; 7import com.android.tools.r8.graph.OffsetToObjectMapping; 8import com.android.tools.r8.graph.UseRegistry; 9import com.android.tools.r8.ir.code.MemberType; 10import com.android.tools.r8.ir.conversion.IRBuilder; 11 12public class IgetObject extends Format22c { 13 14 public static final int OPCODE = 0x54; 15 public static final String NAME = "IgetObject"; 16 public static final String SMALI_NAME = "iget-object"; 17 18 /*package*/ IgetObject(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { 19 super(high, stream, mapping.getFieldMap()); 20 } 21 22 public IgetObject(int destRegister, int objectRegister, DexField field) { 23 super(destRegister, objectRegister, field); 24 } 25 26 public String getName() { 27 return NAME; 28 } 29 30 public String getSmaliName() { 31 return SMALI_NAME; 32 } 33 34 public int getOpcode() { 35 return OPCODE; 36 } 37 38 @Override 39 public DexField getField() { 40 return (DexField) CCCC; 41 } 42 43 @Override 44 public void registerUse(UseRegistry registry) { 45 registry.registerInstanceFieldRead(getField()); 46 } 47 48 @Override 49 public void buildIR(IRBuilder builder) { 50 builder.addInstanceGet(MemberType.OBJECT, A, B, getField()); 51 } 52 53 @Override 54 public boolean canThrow() { 55 return true; 56 } 57} 58