AddressMap.java revision 579d7739c53a2707ad711a2d2cae46d7d782f061
1304cc33f8259ef467e8e3c79f448d0bae0e8cd85yangguo@chromium.org/* 23484964a86451e86dcf04be9bd8c0d76ee04f081rossberg@chromium.org * Copyright (C) 2011 The Android Open Source Project 33484964a86451e86dcf04be9bd8c0d76ee04f081rossberg@chromium.org * 4304cc33f8259ef467e8e3c79f448d0bae0e8cd85yangguo@chromium.org * Licensed under the Apache License, Version 2.0 (the "License"); 5304cc33f8259ef467e8e3c79f448d0bae0e8cd85yangguo@chromium.org * you may not use this file except in compliance with the License. 6304cc33f8259ef467e8e3c79f448d0bae0e8cd85yangguo@chromium.org * You may obtain a copy of the License at 7304cc33f8259ef467e8e3c79f448d0bae0e8cd85yangguo@chromium.org * 81e2d50cf3d94ff48285da107b7a9da1ad0fc873dmachenbach@chromium.org * http://www.apache.org/licenses/LICENSE-2.0 95de0074a922429f5e0ec2cf140c2d2989bf88140yangguo@chromium.org * 105de0074a922429f5e0ec2cf140c2d2989bf88140yangguo@chromium.org * Unless required by applicable law or agreed to in writing, software 115de0074a922429f5e0ec2cf140c2d2989bf88140yangguo@chromium.org * distributed under the License is distributed on an "AS IS" BASIS, 12196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org * See the License for the specific language governing permissions and 14196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org * limitations under the License. 15304cc33f8259ef467e8e3c79f448d0bae0e8cd85yangguo@chromium.org */ 16304cc33f8259ef467e8e3c79f448d0bae0e8cd85yangguo@chromium.org 17304cc33f8259ef467e8e3c79f448d0bae0e8cd85yangguo@chromium.orgpackage com.android.dx.io.instructions; 18304cc33f8259ef467e8e3c79f448d0bae0e8cd85yangguo@chromium.org 19a6bbcc801f63c451f814d6da77a1a48fba3d36c6yangguo@chromium.orgimport java.io.EOFException; 204954674151afa960af66efb4831df06bde727333yangguo@chromium.orgimport java.util.HashMap; 21fb37721ea34922d8758d5cb26ae465aaf241e6b6yangguo@chromium.org 22304cc33f8259ef467e8e3c79f448d0bae0e8cd85yangguo@chromium.org/** 235de0074a922429f5e0ec2cf140c2d2989bf88140yangguo@chromium.org * Map from addresses to addresses, where addresses are all 24304cc33f8259ef467e8e3c79f448d0bae0e8cd85yangguo@chromium.org * {@code int}s. 255e57059e20217fd540b60c237d326414afe2171emachenbach@chromium.org */ 265e57059e20217fd540b60c237d326414afe2171emachenbach@chromium.orgpublic final class AddressMap { 271f34ad3eadf9b0e6b8ed415817d276f54dd6d06bdanno@chromium.org /** underlying map. TODO: This might be too inefficient. */ 285e57059e20217fd540b60c237d326414afe2171emachenbach@chromium.org private final HashMap<Integer,Integer> map; 291f34ad3eadf9b0e6b8ed415817d276f54dd6d06bdanno@chromium.org 305e57059e20217fd540b60c237d326414afe2171emachenbach@chromium.org /** 315e57059e20217fd540b60c237d326414afe2171emachenbach@chromium.org * Constructs an instance. 325e57059e20217fd540b60c237d326414afe2171emachenbach@chromium.org */ 335e57059e20217fd540b60c237d326414afe2171emachenbach@chromium.org public AddressMap() { 345e57059e20217fd540b60c237d326414afe2171emachenbach@chromium.org map = new HashMap<Integer,Integer>(); 355e57059e20217fd540b60c237d326414afe2171emachenbach@chromium.org } 365e57059e20217fd540b60c237d326414afe2171emachenbach@chromium.org 375e57059e20217fd540b60c237d326414afe2171emachenbach@chromium.org /** 385e57059e20217fd540b60c237d326414afe2171emachenbach@chromium.org * Gets the value address corresponding to the given key address. Returns 395e57059e20217fd540b60c237d326414afe2171emachenbach@chromium.org * {@code -1} if there is no mapping. 405e57059e20217fd540b60c237d326414afe2171emachenbach@chromium.org */ 411e2d50cf3d94ff48285da107b7a9da1ad0fc873dmachenbach@chromium.org public int get(int keyAddress) { 421e2d50cf3d94ff48285da107b7a9da1ad0fc873dmachenbach@chromium.org Integer value = map.get(keyAddress); 434954674151afa960af66efb4831df06bde727333yangguo@chromium.org return (value == null) ? -1 : value; 448e36b5ba34174c8ceb04a47d7e10dcc8f43d94a4machenbach@chromium.org } 452ed0d029906d9c6f0ae06fe8eb7f1180077ae2b0mstarzinger@chromium.org 464954674151afa960af66efb4831df06bde727333yangguo@chromium.org /** 472ed0d029906d9c6f0ae06fe8eb7f1180077ae2b0mstarzinger@chromium.org * Sets the value address associated with the given key address. 488e36b5ba34174c8ceb04a47d7e10dcc8f43d94a4machenbach@chromium.org */ 498e36b5ba34174c8ceb04a47d7e10dcc8f43d94a4machenbach@chromium.org public void put(int keyAddress, int valueAddress) { 508e36b5ba34174c8ceb04a47d7e10dcc8f43d94a4machenbach@chromium.org map.put(keyAddress, valueAddress); 512ed0d029906d9c6f0ae06fe8eb7f1180077ae2b0mstarzinger@chromium.org } 52304cc33f8259ef467e8e3c79f448d0bae0e8cd85yangguo@chromium.org} 53304cc33f8259ef467e8e3c79f448d0bae0e8cd85yangguo@chromium.org