< prev index next >
src/jdk.vm.ci/share/classes/jdk.vm.ci.code/src/jdk/vm/ci/code/Register.java
Print this page
*** 20,30 ****
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package jdk.vm.ci.code;
! import jdk.vm.ci.meta.*;
/**
* Represents a target machine register.
*/
public final class Register implements Comparable<Register> {
--- 20,31 ----
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package jdk.vm.ci.code;
! import jdk.vm.ci.meta.JavaKind;
! import jdk.vm.ci.meta.LIRKind;
/**
* Represents a target machine register.
*/
public final class Register implements Comparable<Register> {
*** 78,103 ****
* A platform specific register type that describes which values can be stored in a register.
*/
public static class RegisterCategory {
private final String name;
!
! private final int referenceMapOffset;
! private final int referenceMapShift;
public RegisterCategory(String name) {
! this(name, 0, 0);
! }
!
! public RegisterCategory(String name, int referenceMapOffset) {
! this(name, referenceMapOffset, 0);
}
! public RegisterCategory(String name, int referenceMapOffset, int referenceMapShift) {
this.name = name;
! this.referenceMapOffset = referenceMapOffset;
! this.referenceMapShift = referenceMapShift;
}
@Override
public String toString() {
return name;
--- 79,97 ----
* A platform specific register type that describes which values can be stored in a register.
*/
public static class RegisterCategory {
private final String name;
! private final boolean mayContainReference;
public RegisterCategory(String name) {
! this(name, true);
}
! public RegisterCategory(String name, boolean mayContainReference) {
this.name = name;
! this.mayContainReference = mayContainReference;
}
@Override
public String toString() {
return name;
*** 110,120 ****
@Override
public boolean equals(Object obj) {
if (obj instanceof RegisterCategory) {
RegisterCategory that = (RegisterCategory) obj;
! return this.referenceMapOffset == that.referenceMapOffset && this.referenceMapShift == that.referenceMapShift && this.name.equals(that.name);
}
return false;
}
}
--- 104,114 ----
@Override
public boolean equals(Object obj) {
if (obj instanceof RegisterCategory) {
RegisterCategory that = (RegisterCategory) obj;
! return this.name.equals(that.name);
}
return false;
}
}
*** 136,149 ****
public RegisterCategory getRegisterCategory() {
return registerCategory;
}
/**
! * Get the start index of this register in the {@link ReferenceMap}.
*/
! public int getReferenceMapIndex() {
! return (encoding << registerCategory.referenceMapShift) + registerCategory.referenceMapOffset;
}
/**
* Gets this register as a {@linkplain RegisterValue value} with a specified kind.
*
--- 130,143 ----
public RegisterCategory getRegisterCategory() {
return registerCategory;
}
/**
! * Determine whether this register needs to be part of the reference map.
*/
! public boolean mayContainReference() {
! return registerCategory.mayContainReference;
}
/**
* Gets this register as a {@linkplain RegisterValue value} with a specified kind.
*
< prev index next >