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