Mercurial > hg > graal-compiler
changeset 15454:0e0c24424d14
added com.oracle.graal.api.code.RegisterSaveLayout.registerToSlot(Register)
author | twisti |
---|---|
date | Wed, 30 Apr 2014 15:08:09 -1000 |
parents | 100306ae985b |
children | 6e036e2a2091 |
files | graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/RegisterSaveLayout.java |
diffstat | 1 files changed, 19 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/RegisterSaveLayout.java Wed Apr 30 12:27:27 2014 -0700 +++ b/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/RegisterSaveLayout.java Wed Apr 30 15:08:09 2014 -1000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -33,16 +33,16 @@ /** * Keys. */ - private Register[] registers; + private final Register[] registers; /** * Slot indexes relative to stack pointer. */ - private int[] slots; + private final int[] slots; /** * Creates a map from registers to frame slots. - * + * * @param registers the keys in the map * @param slots frame slot index for each register in {@code registers} */ @@ -55,6 +55,21 @@ } /** + * Gets the frame slot index for a given register. + * + * @param register register to get the frame slot index for + * @return frame slot index + */ + public int registerToSlot(Register register) { + for (int i = 0; i < registers.length; i++) { + if (register.equals(registers[i])) { + return slots[i]; + } + } + throw new IllegalArgumentException(register + " not saved by this layout: " + this); + } + + /** * Gets this layout information as a {@link Map} from registers to slots. */ public Map<Register, Integer> registersToSlots(boolean sorted) {