1579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson/* 2579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson * Copyright (C) 2007 The Android Open Source Project 3579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson * 4579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson * Licensed under the Apache License, Version 2.0 (the "License"); 5579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson * you may not use this file except in compliance with the License. 6579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson * You may obtain a copy of the License at 7579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson * 8579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson * http://www.apache.org/licenses/LICENSE-2.0 9579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson * 10579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson * Unless required by applicable law or agreed to in writing, software 11579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson * distributed under the License is distributed on an "AS IS" BASIS, 12579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson * See the License for the specific language governing permissions and 14579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson * limitations under the License. 15579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson */ 16579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson 17579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilsonpackage com.android.dx.ssa.back; 18579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson 19579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilsonimport com.android.dx.ssa.BasicRegisterMapper; 20579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilsonimport com.android.dx.ssa.RegisterMapper; 21579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilsonimport com.android.dx.ssa.SsaMethod; 22579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson 23579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilsonimport java.util.BitSet; 24579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilsonimport java.util.ArrayList; 25579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson 26579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson/** 27579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson * A register allocator that maps SSA register n to Rop register 2*n, 28579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson * essentially preserving the original mapping and remaining agnostic 29579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson * about normal or wide categories. Used for debugging. 30579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson */ 31579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilsonpublic class NullRegisterAllocator extends RegisterAllocator { 32579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson /** {@inheritDoc} */ 33579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson public NullRegisterAllocator(SsaMethod ssaMeth, 34579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson InterferenceGraph interference) { 35579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson super(ssaMeth, interference); 36579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson } 37579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson 38579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson /** {@inheritDoc} */ 39579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson @Override 40579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson public boolean wantsParamsMovedHigh() { 41579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson // We're not smart enough for this. 42579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson return false; 43579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson } 44579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson 45579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson /** {@inheritDoc} */ 46579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson @Override 47579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson public RegisterMapper allocateRegisters() { 48579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson int oldRegCount = ssaMeth.getRegCount(); 49579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson 50579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson BasicRegisterMapper mapper = new BasicRegisterMapper(oldRegCount); 51579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson 52579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson for (int i = 0; i < oldRegCount; i++) { 53579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson mapper.addMapping(i, i*2, 2); 54579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson } 55579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson 56579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson return mapper; 57579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson } 58579d7739c53a2707ad711a2d2cae46d7d782f06Jesse Wilson} 59