View source code
							
							
						
								Display the source code in dmd/ob.d from which this
								page was generated on github.
							
						
							Report a bug
							
						
								If you spot a problem with this page, click here to create a
								Bugzilla issue.
							
						
							
								Improve this page
							
							
					
								Quickly fork, edit online, and submit a pull request for this page.
								Requires a signed-in GitHub account. This works well for small changes.
								If you'd like to make larger changes you may want to consider using
								local clone.
							
						Module dmd.ob
Flow analysis for Ownership/Borrowing
Documentation
https://dlang.org/phobos/dmd_escape.html
Coverage
https://codecov.io/gh/dlang/dmd/src/master/src/dmd/ob.d
Functions
| Name | Description | 
|---|---|
| 
									allocDeps(pvss)
								 | Allocate BitArrays in PtrVarState. Can be allocated much more efficiently by subdividing a single large array of bits | 
| 
									allocStates(obstate)
								 | Allocate state variables foreach node. | 
| 
									checkObErrors(obstate)
								 | Check for Ownership/Borrowing errors. | 
| 
									collectVars(funcdecl, vars)
								 | Find the pointer variable declarations in this function,
 and fill varswith them. | 
| 
									computePreds(obnodes)
								 | Compute predecessors. | 
| 
									doDataFlowAnalysis(obstate)
								 | Do the data flow analysis (i.e. compute the input[] and output[] vectors for each ObNode). | 
| 
									genKill(obstate, ob)
								 | Compute the gen vector for ob. | 
| 
									hasMutableFields(t)
								 | Does type thave any mutable fields? | 
| 
									hasPointersToMutableFields(t)
								 | Does type tcontain any pointers to mutable? | 
| 
									insertFinallyBlockCalls(obnodes)
								 | Insert finally block calls when doing a goto from inside a try block to outside. Done after blocks are generated because then we know all the edges of the graph, but before the pred's are computed. | 
| 
									insertFinallyBlockGotos(obnodes)
								 | Remove try-finally scaffolding. | 
| 
									isBorrowedPtr(v)
								 | Does v meet the definiton of a Borrowedpointer? | 
| 
									isMutableRef(t)
								 | Is type ta reference to a const or a reference to a mutable? | 
| 
									isReadonlyPtr(v)
								 | Does v meet the definiton of a Readonlypointer? | 
| 
									isTrackableVar(v)
								 | Are we interested in tracking variable v? | 
| 
									isTrackableVarExp(e)
								 | Are we interested in tracking this expression? | 
| 
									makeChildrenUndefined(vi, gen)
								 | Recursively make Undefined all who list vi as a dependency | 
| 
									makeUndefined(vi, gen)
								 | Recursively make Undefined vi undefined and all who list vi as a dependency | 
| 
									numberNodes(obnodes)
								 | Set the indexfield of each ObNode
 to its index in theobnodes[]array. | 
| 
									oblive(funcdecl)
								 | Perform ownership/borrowing checks for funcdecl. Does not modify the AST, just checks for errors. | 
| 
									readVar(ob, vi, mutable, gen)
								 | Read from variable vi. The beginning of the 'scope' of a variable is when it is first read. Hence, when a read is done, instead of when assignment to the variable is done, the O/B rules are enforced. (Also called "non-lexical scoping".) | 
| 
									removeUnreachable(obnodes)
								 | Remove unreachable nodes and compress them out of obnodes[]. | 
| 
									setLabelStatementExtraFields(labtab)
								 | Set the field for LabelStatements in labtab[]. | 
| 
									toChars(state)
								 | |
| 
									toObNodes(obnodes, s)
								 | Convert statement into ObNodes. | 
| 
									toPtrState(v)
								 | Determine the state of a variable based on its type and storage class. | 
Structs
| Name | Description | 
|---|---|
| 
									ObNode
								 | A node in the function's expression graph, and its edges to predecessors and successors. | 
| 
									ObState
								 | Collect the state information. | 
| 
									PtrVarState
								 | Carries the state of a pointer variable. | 
Enums
| Name | Description | 
|---|---|
| 
									PtrState
								 | Pointer variable states: | 
Authors
License
					Copyright © 1999-2024 by the D Language Foundation | Page generated by ddox.