AlignmentBoundary

public final class AlignmentBoundary

One boundary in an alignment Map. Contains the current offset, and the list of variables that start and stop at that offset. Also contains information regarding the memory fragment that follows this boundary and stops at next boundary. This information consists of the WrapperTypeSpec in this memory fragment, and holds a place for the zones that will be later defined for this fragment.

Fields

accessTree

public Tree accessTree

(RESTRICTED) Reference to the variables in the next memory fragment. Used to build the IL instructions that reset, save, push, pop,… these variables.

active

protected boolean active

True when the zone starting at this boundary is active. This field is used only for the degenerate case of MemMaps created during differentiation, and that only remember activity.

endVars

public TapList<VariableDecl> endVars

The list of the VariableDecl’s of the variables that terminate here (their last cell was at the previous offset).

infiniteOffset

public boolean infiniteOffset

nextType

protected WrapperTypeSpec nextType

(RESTRICTED) The type of whatever starts here and extends till the next boundary.

offset

public int offset

The offset of the current boundary wrt the enclosing alignmentMap.

startVars

public TapList<ZoneInfoAccessElements> startVars

The list of the TapTriplet VariableDecl, SymbolTable, Tree of the variables that start here.

type

public WrapperTypeSpec type

The WrapperTypeSpec of objects in the next memory fragment (can be array or elements type, unclear…).

zones

protected TapList zones

The zones defined for the next memory fragment.

Constructors

AlignmentBoundary

protected AlignmentBoundary(int offset)

Creation of a boundary at the position “offset”.

AlignmentBoundary

public AlignmentBoundary(int offset, boolean infiniteOffset)

Creation of a boundary at the position “offset”.

Methods

addEndVar

public void addEndVar(VariableDecl variableDecl, SymbolTable fromSymbolTable)

Add a variable name that ends here.

addStartVar

public void addStartVar(VariableDecl variableDecl, SymbolTable fromSymbolTable, Tree accessTree)

Add a variable name that starts here.

buildNextType

public WrapperTypeSpec buildNextType(int nbBytes)

commonVariableDecl

public VariableDecl commonVariableDecl()

isBefore

public boolean isBefore(int offset2, boolean infiniteOffset2)
Returns

true iff this AlignmentBoundary must appear strictly before location defined by “offset2” and “infiniteOffset2”

isBefore

public boolean isBefore(AlignmentBoundary otherBoundary)
Returns

true iff this AlignmentBoundary must appear strictly before the given “otherBoundary”

isEqual

public boolean isEqual(int offset2, boolean infiniteOffset2)
Returns

true iff this AlignmentBoundary has location defined by “offset2” and “infiniteOffset2”

isEqual

public boolean isEqual(AlignmentBoundary otherBoundary)
Returns

true iff this AlignmentBoundary defines the same location as the given “otherBoundary”

le

protected static boolean le(int offset1, boolean infiniteOffset1, int offset2, boolean infiniteOffset2)

Comparison between 2 AlignmentBoundary’s.

Returns

true iff offset1 is smaller than or equal to offset2, i.e. must appear before or with offset2 in the list of AlignmentBoundaries.

lt

protected static boolean lt(int offset1, boolean infiniteOffset1, int offset2, boolean infiniteOffset2)

Comparison between 2 AlignmentBoundary’s.

Returns

true iff offset1 is strictly smaller than offset2, i.e. must appear before offset2 in the list of AlignmentBoundaries.

removeEndVar

public void removeEndVar(VariableDecl variableDecl)

Remove the given variableDecl from the variables that end here

removeStartVar

public void removeStartVar(VariableDecl variableDecl)

Remove the given variableDecl from the variables that start here

setCommonVariableDecl

public void setCommonVariableDecl(VariableDecl variableDecl)

startVarDecls

public TapList<VariableDecl> startVarDecls()

toString

public String toString()