< prev index next >
src/jdk.vm.ci/share/classes/jdk.vm.ci.code/src/jdk/vm/ci/code/Register.java
Print this page
@@ -20,11 +20,12 @@
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package jdk.vm.ci.code;
-import jdk.vm.ci.meta.*;
+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,26 +79,19 @@
* 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;
+ private final boolean mayContainReference;
public RegisterCategory(String name) {
- this(name, 0, 0);
- }
-
- public RegisterCategory(String name, int referenceMapOffset) {
- this(name, referenceMapOffset, 0);
+ this(name, true);
}
- public RegisterCategory(String name, int referenceMapOffset, int referenceMapShift) {
+ public RegisterCategory(String name, boolean mayContainReference) {
this.name = name;
- this.referenceMapOffset = referenceMapOffset;
- this.referenceMapShift = referenceMapShift;
+ this.mayContainReference = mayContainReference;
}
@Override
public String toString() {
return name;
@@ -110,11 +104,11 @@
@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 this.name.equals(that.name);
}
return false;
}
}
@@ -136,14 +130,14 @@
public RegisterCategory getRegisterCategory() {
return registerCategory;
}
/**
- * Get the start index of this register in the {@link ReferenceMap}.
+ * Determine whether this register needs to be part of the reference map.
*/
- public int getReferenceMapIndex() {
- return (encoding << registerCategory.referenceMapShift) + registerCategory.referenceMapOffset;
+ public boolean mayContainReference() {
+ return registerCategory.mayContainReference;
}
/**
* Gets this register as a {@linkplain RegisterValue value} with a specified kind.
*
< prev index next >