Top Description Inners Fields Constructors Methods
org.droidparts.dexmaker.dx.rop.code

public final Class RegisterSpec

extends Object
implements TypeBearer, ToHuman, Comparable<RegisterSpec>
Class Inheritance
All Implemented Interfaces
java.lang.Comparable, org.droidparts.dexmaker.dx.util.ToHuman, org.droidparts.dexmaker.dx.rop.type.TypeBearer
Imports
org.droidparts.dexmaker.dx.rop.cst.Constant, .CstString, org.droidparts.dexmaker.dx.rop.type.Type, .TypeBearer, org.droidparts.dexmaker.dx.util.ToHuman, java.util.HashMap

Combination of a register number and a type, used as the sources and destinations of register-based operations.

Nested and Inner Type Summary

Modifier and TypeClass and Description
private static class
RegisterSpec.ForComparison

Holder of register spec data for the purposes of comparison (so that RegisterSpec itself can still keep final instance variables.

Field Summary

Modifier and TypeField and Description
private final LocalItem
local

null-ok; local variable info associated with this register, if any

public static final String
PREFIX

non-null; string to prefix register numbers with

private final int
reg

>= 0; register number

private static final RegisterSpec.ForComparison
theInterningItem

non-null; common comparison instance used while interning

private static final HashMap<Object, RegisterSpec>
theInterns

non-null; intern table for instances

private final TypeBearer
type

non-null; type loaded or stored

Constructor Summary

AccessConstructor and Description
private
RegisterSpec(int
>= 0; the register number
reg
,
TypeBearer
non-null; the type (or possibly actual value) which is loaded from or stored to the indicated register
type
,
LocalItem
null-ok; the associated local variable, if any
local
)

Constructs an instance.

Method Summary

Modifier and TypeMethod and Description
public int

Returns:

-1..1; standard result of comparison
compareTo
(RegisterSpec
non-null; spec to compare to
other
)

Implements java.lang.Comparable.compareTo.

Compares by (in priority order) register number, unwrapped type (that is types not TypeBearers, and local info.
public boolean
equals(Object
the reference object with which to compare.
other
)

Overrides java.lang.Object.equals.

Indicates whether some other object is "equal to" this one.
private boolean

Returns:

whether this instance is equal to one with the given values
equals
(int
value of the instance variable, for another instance
reg
,
TypeBearer
value of the instance variable, for another instance
type
,
LocalItem
value of the instance variable, for another instance
local
)

Helper for equals and ForComparison.equals, which actually does the test.

public boolean

Returns:

true iff this and other are equal in the stated way
equalsUsingSimpleType
(RegisterSpec
null-ok; spec to compare to
other
)

Like equals, but only consider the simple types of the registers.

public final int
getBasicFrameType()

Implements org.droidparts.dexmaker.dx.rop.type.TypeBearer.getBasicFrameType.

Gets the basic type corresponding to this instance's frame type.
public final int
getBasicType()

Implements org.droidparts.dexmaker.dx.rop.type.TypeBearer.getBasicType.

Gets the basic type corresponding to this instance.
public int

Returns:

1..2; the category of this instance's type
getCategory
()

Gets the category of this instance's type.

public TypeBearer
getFrameType()

Implements org.droidparts.dexmaker.dx.rop.type.TypeBearer.getFrameType.

Gets the frame type corresponding to this type.
public LocalItem

Returns:

null-ok; the variable info, or null if this instance has none
getLocalItem
()

Gets the variable info associated with this instance, if any.

public int

Returns:

>= 0; the required registers size
getNextReg
()

Gets the next available register number after the one in this instance.

public int

Returns:

>= 0; the register number
getReg
()

Gets the register number.

public Type
getType()

Implements org.droidparts.dexmaker.dx.rop.type.TypeBearer.getType.

Gets the type associated with this instance.
public TypeBearer

Returns:

non-null; the type
getTypeBearer
()

Gets the type (or actual value) which is loaded from or stored to the register associated with this instance.

public int
hashCode()

Overrides java.lang.Object.hashCode.

Returns a hash code value for this object.
private static int

Returns:

the hash code
hashCodeOf
(int
value of the instance variable
reg
,
TypeBearer
value of the instance variable
type
,
LocalItem
value of the instance variable
local
)

Helper for hashCode and ForComparison.hashCode, which actually does the calculation.

private static RegisterSpec

Returns:

non-null; an appropriately-constructed instance
intern
(int
>= 0; the register number
reg
,
TypeBearer
non-null; the type (or possibly actual value) which is loaded from or stored to the indicated register
type
,
LocalItem
null-ok; the associated local variable, if any
local
)

Intern the given triple as an instance of this class.

public RegisterSpec

Returns:

null-ok; the intersection
intersect
(RegisterSpec
null-ok; instance to intersect with (or null)
other
,
boolean
whether local variables are primary to the intersection; if true, then the only non-null results occur when registers being intersected have equal local infos (or both have null local infos)
localPrimary
)

Returns an instance that is the intersection between this instance and the given one, if any.

public boolean

Returns:

whether or not this instance's type is of category 1
isCategory1
()

Gets whether this instance's type is category 1.

public boolean

Returns:

whether or not this instance's type is of category 2
isCategory2
()

Gets whether this instance's type is category 2.

public final boolean
isConstant()

Implements org.droidparts.dexmaker.dx.rop.type.TypeBearer.isConstant.

Returns whether this instance represents a constant value.
public static RegisterSpec

Returns:

non-null; an appropriately-constructed instance
make
(int
>= 0; the register number
reg
,
TypeBearer
non-null; the type (or possibly actual value) which is loaded from or stored to the indicated register
type
)

Returns an instance for the given register number and type, with no variable info.

public static RegisterSpec

Returns:

non-null; an appropriately-constructed instance
make
(int
>= 0; the register number
reg
,
TypeBearer
non-null; the type (or possibly actual value) which is loaded from or stored to the indicated register
type
,
LocalItem
non-null; the associated local variable
local
)

Returns an instance for the given register number, type, and variable info.

public static RegisterSpec

Returns:

non-null; an appropriately-constructed instance
makeLocalOptional
(int
>= 0; the register number
reg
,
TypeBearer
non-null; the type (or possibly actual value) which is loaded from or stored to the indicated register
type
,
LocalItem
null-ok; the associated variable info or null for none
local
)

Returns an instance for the given register number, type, and variable info.

public boolean

Returns:

true iff this and other are equal in the stated way
matchesVariable
(RegisterSpec
null-ok; spec to compare to
other
)

Like equalsUsingSimpleType but ignoring the register number.

public static String

Returns:

non-null; the string form
regString
(int
>= 0; the register number
reg
)

Gets the string form for the given register number.

public String

Returns:

non-null; the register string form
regString
()

Gets the string form for just the register number of this instance.

public String
toHuman()

Implements org.droidparts.dexmaker.dx.util.ToHuman.toHuman.

Return the "human" string form of this instance.
public String
toString()

Overrides java.lang.Object.toString.

Returns a string representation of the object.
private String

Returns:

non-null; the string form
toString0
(boolean
whether to be human-oriented
human
)

Helper for toString and toHuman.

public RegisterSpec

Returns:

an appropriate instance
withLocalItem
(LocalItem
null-ok; the local item or null for none
local
)

Returns an instance that is identical to this one except that the local variable is as specified in the parameter.

public RegisterSpec

Returns:

non-null; an appropriately-constructed instance
withOffset
(int
the amount to offset the register number by
delta
)

Returns an instance that is identical to this one, except that the register number is offset by the given amount.

public RegisterSpec

Returns:

non-null; an appropriately-constructed instance
withReg
(int
>= 0; the new register number
newReg
)

Returns an instance that is identical to this one, except that the register number is replaced by the given one.

public RegisterSpec

Returns:

non-null; an appropriately-constructed instance
withSimpleType
()

Returns an instance that is identical to this one, except that the type bearer is replaced by the actual underlying type (thereby stripping off non-type information) with any initialization information stripped away as well.

public RegisterSpec

Returns:

non-null; an appropriately-constructed instance
withType
(TypeBearer
non-null; the new type
newType
)

Returns an instance that is identical to this one, except that the type is replaced by the given one.

Inherited from java.lang.Object:
clonefinalizegetClassnotifynotifyAllwaitwaitwait

Field Detail

localback to summary
private final LocalItem local

null-ok; local variable info associated with this register, if any

PREFIXback to summary
public static final String PREFIX

non-null; string to prefix register numbers with

regback to summary
private final int reg

>= 0; register number

theInterningItemback to summary
private static final RegisterSpec.ForComparison theInterningItem

non-null; common comparison instance used while interning

theInternsback to summary
private static final HashMap<Object, RegisterSpec> theInterns

non-null; intern table for instances

typeback to summary
private final TypeBearer type

non-null; type loaded or stored

Constructor Detail

RegisterSpecback to summary
private RegisterSpec(int reg, TypeBearer type, LocalItem local)

Constructs an instance. This constructor is private. Use make.

Parameters
reg:int

>= 0; the register number

type:TypeBearer

non-null; the type (or possibly actual value) which is loaded from or stored to the indicated register

local:LocalItem

null-ok; the associated local variable, if any

Method Detail

compareToback to summary
public int compareTo(RegisterSpec other)

Implements java.lang.Comparable.compareTo.

Compares by (in priority order) register number, unwrapped type (that is types not TypeBearers, and local info.

Parameters
other:RegisterSpec

non-null; spec to compare to

Returns:int

-1..1; standard result of comparison

equalsback to summary
public boolean equals(Object other)

Overrides java.lang.Object.equals.

Doc from java.lang.Object.equals.

Indicates whether some other object is "equal to" this one.

The equals method implements an equivalence relation on non-null object references:

  • It is reflexive: for any non-null reference value x, x.equals(x) should return true.
  • It is symmetric: for any non-null reference values x and y, x.equals(y) should return true if and only if y.equals(x) returns true.
  • It is transitive: for any non-null reference values x, y, and z, if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should return true.
  • It is consistent: for any non-null reference values x and y, multiple invocations of x.equals(y) consistently return true or consistently return false, provided no information used in equals comparisons on the objects is modified.
  • For any non-null reference value x, x.equals(null) should return false.

An equivalence relation partitions the elements it operates on into equivalence classes; all the members of an equivalence class are equal to each other. Members of an equivalence class are substitutable for each other, at least for some purposes.

Parameters
other:Object

the reference object with which to compare.

Returns:boolean

true if this object is the same as the obj argument; false otherwise.

Annotations
@Override
equalsback to summary
private boolean equals(int reg, TypeBearer type, LocalItem local)

Helper for equals and ForComparison.equals, which actually does the test.

Parameters
reg:int

value of the instance variable, for another instance

type:TypeBearer

value of the instance variable, for another instance

local:LocalItem

value of the instance variable, for another instance

Returns:boolean

whether this instance is equal to one with the given values

equalsUsingSimpleTypeback to summary
public boolean equalsUsingSimpleType(RegisterSpec other)

Like equals, but only consider the simple types of the registers. That is, this compares getType() on the types to ignore whatever arbitrary extra stuff might be carried around by an outer TypeBearer.

Parameters
other:RegisterSpec

null-ok; spec to compare to

Returns:boolean

true iff this and other are equal in the stated way

getBasicFrameTypeback to summary
public final int getBasicFrameType()

Implements org.droidparts.dexmaker.dx.rop.type.TypeBearer.getBasicFrameType.

Doc from org.droidparts.dexmaker.dx.rop.type.TypeBearer.getBasicFrameType.

Gets the basic type corresponding to this instance's frame type. This is equivalent to getFrameType().getBasicType(), and is the same as calling getFrameType() unless this instance is an int-like type, in which case this method returns BT_INT.

Returns:int

the basic frame type; one of the BT_* constants defined by Type

getBasicTypeback to summary
public final int getBasicType()

Implements org.droidparts.dexmaker.dx.rop.type.TypeBearer.getBasicType.

Doc from org.droidparts.dexmaker.dx.rop.type.TypeBearer.getBasicType.

Gets the basic type corresponding to this instance.

Returns:int

the basic type; one of the BT_* constants defined by Type

getCategoryback to summary
public int getCategory()

Gets the category of this instance's type. This is just a convenient shorthand for getType().getCategory().

Returns:int

1..2; the category of this instance's type

See Also
isCategory1, isCategory2
getFrameTypeback to summary
public TypeBearer getFrameType()

Implements org.droidparts.dexmaker.dx.rop.type.TypeBearer.getFrameType.

Doc from org.droidparts.dexmaker.dx.rop.type.TypeBearer.getFrameType.

Gets the frame type corresponding to this type. This method returns this, except if Type#isIntlike on the underlying type returns true but the underlying type is not in fact Type#INT, in which case this method returns an instance whose underlying type is INT.

Returns:TypeBearer

non-null; the frame type for this instance

getLocalItemback to summary
public LocalItem getLocalItem()

Gets the variable info associated with this instance, if any.

Returns:LocalItem

null-ok; the variable info, or null if this instance has none

getNextRegback to summary
public int getNextReg()

Gets the next available register number after the one in this instance. This is equal to the register number plus the width (category) of the type used. Among other things, this may also be used to determine the minimum required register count implied by this instance.

Returns:int

>= 0; the required registers size

getRegback to summary
public int getReg()

Gets the register number.

Returns:int

>= 0; the register number

getTypeback to summary
public Type getType()

Implements org.droidparts.dexmaker.dx.rop.type.TypeBearer.getType.

Doc from org.droidparts.dexmaker.dx.rop.type.TypeBearer.getType.

Gets the type associated with this instance.

Returns:Type

non-null; the type

getTypeBearerback to summary
public TypeBearer getTypeBearer()

Gets the type (or actual value) which is loaded from or stored to the register associated with this instance.

Returns:TypeBearer

non-null; the type

hashCodeback to summary
public int hashCode()

Overrides java.lang.Object.hashCode.

Doc from java.lang.Object.hashCode.

Returns a hash code value for this object. This method is supported for the benefit of hash tables such as those provided by java.util.HashMap.

The general contract of hashCode is:

  • Whenever it is invoked on the same object more than once during an execution of a Java application, the hashCode method must consistently return the same integer, provided no information used in equals comparisons on the object is modified. This integer need not remain consistent from one execution of an application to another execution of the same application.
  • If two objects are equal according to the equals method, then calling the hashCode method on each of the two objects must produce the same integer result.
  • It is not required that if two objects are unequal according to the equals method, then calling the hashCode method on each of the two objects must produce distinct integer results. However, the programmer should be aware that producing distinct integer results for unequal objects may improve the performance of hash tables.
Returns:int

a hash code value for this object

Annotations
@Override
hashCodeOfback to summary
private static int hashCodeOf(int reg, TypeBearer type, LocalItem local)

Helper for hashCode and ForComparison.hashCode, which actually does the calculation.

Parameters
reg:int

value of the instance variable

type:TypeBearer

value of the instance variable

local:LocalItem

value of the instance variable

Returns:int

the hash code

internback to summary
private static RegisterSpec intern(int reg, TypeBearer type, LocalItem local)

Intern the given triple as an instance of this class.

Parameters
reg:int

>= 0; the register number

type:TypeBearer

non-null; the type (or possibly actual value) which is loaded from or stored to the indicated register

local:LocalItem

null-ok; the associated local variable, if any

Returns:RegisterSpec

non-null; an appropriately-constructed instance

intersectback to summary
public RegisterSpec intersect(RegisterSpec other, boolean localPrimary)

Returns an instance that is the intersection between this instance and the given one, if any. The intersection is defined as follows:

  • If other is null, then the result is null.
  • If the register numbers don't match, then the intersection is null. Otherwise, the register number of the intersection is the same as the one in the two instances.
  • If the types returned by getType() are not equals(), then the intersection is null.
  • If the type bearers returned by getTypeBearer() are equals(), then the intersection's type bearer is the one from this instance. Otherwise, the intersection's type bearer is the getType() of this instance.
  • If the locals are equals(), then the local info of the intersection is the local info of this instance. Otherwise, the local info of the intersection is null.
Parameters
other:RegisterSpec

null-ok; instance to intersect with (or null)

localPrimary:boolean

whether local variables are primary to the intersection; if true, then the only non-null results occur when registers being intersected have equal local infos (or both have null local infos)

Returns:RegisterSpec

null-ok; the intersection

isCategory1back to summary
public boolean isCategory1()

Gets whether this instance's type is category 1. This is just a convenient shorthand for getType().isCategory1().

Returns:boolean

whether or not this instance's type is of category 1

See Also
getCategory, isCategory2
isCategory2back to summary
public boolean isCategory2()

Gets whether this instance's type is category 2. This is just a convenient shorthand for getType().isCategory2().

Returns:boolean

whether or not this instance's type is of category 2

See Also
getCategory, isCategory1
isConstantback to summary
public final boolean isConstant()

Implements org.droidparts.dexmaker.dx.rop.type.TypeBearer.isConstant.

Doc from org.droidparts.dexmaker.dx.rop.type.TypeBearer.isConstant.

Returns whether this instance represents a constant value.

Returns:boolean

true if this instance represents a constant value and false if not

makeback to summary
public static RegisterSpec make(int reg, TypeBearer type)

Returns an instance for the given register number and type, with no variable info. This method is allowed to return shared instances (but doesn't necessarily do so).

Parameters
reg:int

>= 0; the register number

type:TypeBearer

non-null; the type (or possibly actual value) which is loaded from or stored to the indicated register

Returns:RegisterSpec

non-null; an appropriately-constructed instance

makeback to summary
public static RegisterSpec make(int reg, TypeBearer type, LocalItem local)

Returns an instance for the given register number, type, and variable info. This method is allowed to return shared instances (but doesn't necessarily do so).

Parameters
reg:int

>= 0; the register number

type:TypeBearer

non-null; the type (or possibly actual value) which is loaded from or stored to the indicated register

local:LocalItem

non-null; the associated local variable

Returns:RegisterSpec

non-null; an appropriately-constructed instance

makeLocalOptionalback to summary
public static RegisterSpec makeLocalOptional(int reg, TypeBearer type, LocalItem local)

Returns an instance for the given register number, type, and variable info. This method is allowed to return shared instances (but doesn't necessarily do so).

Parameters
reg:int

>= 0; the register number

type:TypeBearer

non-null; the type (or possibly actual value) which is loaded from or stored to the indicated register

local:LocalItem

null-ok; the associated variable info or null for none

Returns:RegisterSpec

non-null; an appropriately-constructed instance

matchesVariableback to summary
public boolean matchesVariable(RegisterSpec other)

Like equalsUsingSimpleType but ignoring the register number. This is useful to determine if two instances refer to the "same" local variable.

Parameters
other:RegisterSpec

null-ok; spec to compare to

Returns:boolean

true iff this and other are equal in the stated way

regStringback to summary
public static String regString(int reg)

Gets the string form for the given register number.

Parameters
reg:int

>= 0; the register number

Returns:String

non-null; the string form

regStringback to summary
public String regString()

Gets the string form for just the register number of this instance.

Returns:String

non-null; the register string form

toHumanback to summary
public String toHuman()

Implements org.droidparts.dexmaker.dx.util.ToHuman.toHuman.

Doc from org.droidparts.dexmaker.dx.util.ToHuman.toHuman.

Return the "human" string form of this instance. This is generally less "debuggy" than toString().

Returns:String

non-null; the human string form

toStringback to summary
public String toString()

Overrides java.lang.Object.toString.

Doc from java.lang.Object.toString.

Returns a string representation of the object.

Returns:String

a string representation of the object

Annotations
@Override
toString0back to summary
private String toString0(boolean human)

Helper for toString and toHuman.

Parameters
human:boolean

whether to be human-oriented

Returns:String

non-null; the string form

withLocalItemback to summary
public RegisterSpec withLocalItem(LocalItem local)

Returns an instance that is identical to this one except that the local variable is as specified in the parameter.

Parameters
local:LocalItem

null-ok; the local item or null for none

Returns:RegisterSpec

an appropriate instance

withOffsetback to summary
public RegisterSpec withOffset(int delta)

Returns an instance that is identical to this one, except that the register number is offset by the given amount.

Parameters
delta:int

the amount to offset the register number by

Returns:RegisterSpec

non-null; an appropriately-constructed instance

withRegback to summary
public RegisterSpec withReg(int newReg)

Returns an instance that is identical to this one, except that the register number is replaced by the given one.

Parameters
newReg:int

>= 0; the new register number

Returns:RegisterSpec

non-null; an appropriately-constructed instance

withSimpleTypeback to summary
public RegisterSpec withSimpleType()

Returns an instance that is identical to this one, except that the type bearer is replaced by the actual underlying type (thereby stripping off non-type information) with any initialization information stripped away as well.

Returns:RegisterSpec

non-null; an appropriately-constructed instance

withTypeback to summary
public RegisterSpec withType(TypeBearer newType)

Returns an instance that is identical to this one, except that the type is replaced by the given one.

Parameters
newType:TypeBearer

non-null; the new type

Returns:RegisterSpec

non-null; an appropriately-constructed instance

org.droidparts.dexmaker.dx.rop.code back to summary

private Class RegisterSpec.ForComparison

extends Object
Class Inheritance
  • java.lang.Object
  • org.droidparts.dexmaker.dx.rop.code.RegisterSpec.ForComparison

Holder of register spec data for the purposes of comparison (so that RegisterSpec itself can still keep final instance variables.

Field Summary

Modifier and TypeField and Description
private LocalItem
local

null-ok; local variable associated with this register, if any

private int
reg

>= 0; register number

private TypeBearer
type

non-null; type loaded or stored

Constructor Summary

AccessConstructor and Description
private

Method Summary

Modifier and TypeMethod and Description
public boolean
equals(Object
the reference object with which to compare.
other
)

Overrides java.lang.Object.equals.

Indicates whether some other object is "equal to" this one.
public int
hashCode()

Overrides java.lang.Object.hashCode.

Returns a hash code value for this object.
public void

Returns:

non-null; an appropriately-constructed instance
set
(int
>= 0; the register number
reg
,
TypeBearer
non-null; the type (or possibly actual value) which is loaded from or stored to the indicated register
type
,
LocalItem
null-ok; the associated local variable, if any
local
)

Set all the instance variables.

public RegisterSpec

Returns:

non-null; an appropriately-constructed instance
toRegisterSpec
()

Construct a RegisterSpec of this instance's contents.

Inherited from java.lang.Object:
clonefinalizegetClassnotifynotifyAlltoStringwaitwaitwait

Field Detail

localback to summary
private LocalItem local

null-ok; local variable associated with this register, if any

regback to summary
private int reg

>= 0; register number

typeback to summary
private TypeBearer type

non-null; type loaded or stored

Constructor Detail

ForComparisonback to summary
private ForComparison()

Method Detail

equalsback to summary
public boolean equals(Object other)

Overrides java.lang.Object.equals.

Doc from java.lang.Object.equals.

Indicates whether some other object is "equal to" this one.

The equals method implements an equivalence relation on non-null object references:

  • It is reflexive: for any non-null reference value x, x.equals(x) should return true.
  • It is symmetric: for any non-null reference values x and y, x.equals(y) should return true if and only if y.equals(x) returns true.
  • It is transitive: for any non-null reference values x, y, and z, if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should return true.
  • It is consistent: for any non-null reference values x and y, multiple invocations of x.equals(y) consistently return true or consistently return false, provided no information used in equals comparisons on the objects is modified.
  • For any non-null reference value x, x.equals(null) should return false.

An equivalence relation partitions the elements it operates on into equivalence classes; all the members of an equivalence class are equal to each other. Members of an equivalence class are substitutable for each other, at least for some purposes.

Parameters
other:Object

the reference object with which to compare.

Returns:boolean

true if this object is the same as the obj argument; false otherwise.

Annotations
@Override
hashCodeback to summary
public int hashCode()

Overrides java.lang.Object.hashCode.

Doc from java.lang.Object.hashCode.

Returns a hash code value for this object. This method is supported for the benefit of hash tables such as those provided by java.util.HashMap.

The general contract of hashCode is:

  • Whenever it is invoked on the same object more than once during an execution of a Java application, the hashCode method must consistently return the same integer, provided no information used in equals comparisons on the object is modified. This integer need not remain consistent from one execution of an application to another execution of the same application.
  • If two objects are equal according to the equals method, then calling the hashCode method on each of the two objects must produce the same integer result.
  • It is not required that if two objects are unequal according to the equals method, then calling the hashCode method on each of the two objects must produce distinct integer results. However, the programmer should be aware that producing distinct integer results for unequal objects may improve the performance of hash tables.
Returns:int

a hash code value for this object

Annotations
@Override
setback to summary
public void set(int reg, TypeBearer type, LocalItem local)

Set all the instance variables.

Parameters
reg:int

>= 0; the register number

type:TypeBearer

non-null; the type (or possibly actual value) which is loaded from or stored to the indicated register

local:LocalItem

null-ok; the associated local variable, if any

Returns:void

non-null; an appropriately-constructed instance

toRegisterSpecback to summary
public RegisterSpec toRegisterSpec()

Construct a RegisterSpec of this instance's contents.

Returns:RegisterSpec

non-null; an appropriately-constructed instance