MemoryMaps

public final class MemoryMaps

Memory map manager. Deals with the relative layout of variables in memory. In particular, accepts the declaration of a new COMMON block, or the declaration that some variables are EQUIVALENCEd, DATA, or SAVEd.

Fields

mapAccesses

public TapList<VarStartBoundary> mapAccesses

Fast access from a VariableDecl to its start AlignmentBoundary in one of the maps. This is a hatted list for easy add/remove of entries

maps

public TapList<MemMap> maps

The (hatted) list of memory maps built so far

Methods

addRegistration

public void addRegistration(VarStartBoundary entry)

Adds the new “entry” into this MemoryMap’s mapAccesses

allocateZones

public void allocateZones(ZoneAllocator zoneAllocator, Unit declarationUnit)

delRegistration

public VarStartBoundary delRegistration(SymbolDecl symbolDecl)

Retrieves the (first) entry associated to the given “symbolDecl” in this MemoryMap’s mapAccesses. If the entry is found, remove it from this MemoryMap’s mapAccesses

getMemMap

public MemMap getMemMap(String commonName)

getRegistration

public VarStartBoundary getRegistration(SymbolDecl symbolDecl)

Retrieves the (first) entry associated to the given “symbolDecl” in this MemoryMap’s mapAccesses

getSetMemMap

public MemMap getSetMemMap(String commonName)

Finds or creates the MemMap with name “commonName” in the current maps. When commonName is given null, always creates a new MemMap, even if maps already contains other MemMap’s with a null name.

placeCAccessIntoFortranMap

public static void placeCAccessIntoFortranMap(ZoneInfoAccessElements cAccess, MemMap receivingMap, String bindName, int receivingOffset, MemoryMaps globalFortranMaps)

placeCEDSIntoMemoryMaps

public static void placeCEDSIntoMemoryMaps(Tree declaration, SymbolTable declSymbolTable, Unit declUnit, MemoryMaps unitMaps, CallGraph callGraph)

Place into the MemoryMaps the given memory layout “declaration”, which appeared in the context of the given “declSymbolTable”. “declaration” may be a COMMON, EQUIVALENCE, SAVE, or DATA declaration. The info may end up into this Unit’s local maps (if it is purely an EQUIVALENCE) or into the CallGraph’s global maps (if it is a COMMON, SAVE, DATA, or BIND(C) declaration.

toString

public String toString()