Topic: alias names
Topic: binding names to variables or expressions
Topic: code optimization by flow analysis
Topic: dangling pointers
Topic: optimization of object-oriented programs
Topic: parameter passing by reference
Topic: pointer rotation
Topic: pointers to data
Topic: preventing accidental errors
Topic: safe use of pointers
Topic: shared objects
Topic: variable as reference to storage
| |
Summary
Accidental sharing is called aliasing. This happens in procedures where a parameter and a global variable, or two parameters, reference the same object. Most aliasing can be prevented by compile time checks. (cbb 5/80)
Subtopic: aliasing as hidden dependency
Quote: because of aliasing, changing one variable may accidentally change another [»hehnEC_1977a]
| Quote: copying a pointer may cause aliasing; so its abstract value can be changed as a side-effect [»harmDE5_1991]
| Quote: if variables are place holders then problems with self-reference and aliasing [»backJ_1972, OK]
| Quote: many optimizations depend on copies creating equal values while not affecting other values; if not enforced, user types can not be optimized [»dehnJC4_1998]
| Subtopic: change propagation
Quote: changes to a structure propagate to all of its references, both direct and indirect
| Subtopic: alias analysis
Quote: efficient, context-sensitive pointer alias analysis using a context-insensitive algorithm; clone all methods in a call graph, one per context of interest [»whalJ6_2004]
| Quote: link-time pointer alias analysis that handles pointer arithmetic and out-of-bound references; identifies 30-60% of memory reference instructions [»debrS1_1998]
| Quote: static race detection by conditional must not aliasing; sound analysis, found more races than another algorithm analysing likely races [»naikM1_2007]
| Subtopic: annotation
Quote: pointer interfaces specify how procedures change the points-to information [»rugiR4_2001]
| Quote: region interfaces specify the regions of memory accessed by a procedure
| Subtopic: avoiding aliases
Quote: prevent inadvertent aliasing by not importing var variables with local var declarations [»demeA3_1979]
| Quote: Euclid avoids aliasing by explicitly importing all non-local variables [»veneT3_1978]
| Quote: the flavor analyzer does not interpret data objects; so A(T) and A(R) are treated separately [»howdWE1_1990]
| Quote: assignment by replica() assigns a copy of the parameter; example of function assignment swapping the result [»harmDE5_1991]
| Quote: avoid aliasing by disallowing variables with different object contexts that reference the same part of the object store
| Quote: Guava disallows unsynchronized shared access by classifying every object as a shared monitor, an unshared value, or a shareable object within a single thread [»bacoDF10_2000]
| Quote: use alias burying to avoid destructive reads of 'read-once' variables; aliases must be dead when reading a unique field of possibly shared objects; static enforcement by restricting aliases across procedure calls [»boylJ5_2001]
| Quote: control aliasing through read-only types with read-only methods; does not change the transitive state of an object [»knieG5_2001]
| Subtopic: non-aliasing objects
Quote: Vault identifies non-aliasing objects for type state analysis
| Subtopic: no-alias property
Quote: C++ lacks a 'no-alias' property because it can't be guaranteed, it may lead to accidental errors, and it is targeted to vectorizing computers [»stroB_1994]
| Quote: Java non-references are values of primitive types without aliasing or sharing [»bacoDF10_2000]
| Quote: Java local variables can not pointer aliased (no address) [»bodiR6_2000]
| Quote: an unshared Guava object is permanently owned by a shared monitor or unshared value; no other references [»bacoDF10_2000]
| Quote: Guava monitors are always synchronized; other instances are uniquely owned by a single monitor and never need synchronizing [»bacoDF10_2000]
| Quote: Guava values are stored in variables; no references, value equality, method export, null value, deep copying [»bacoDF10_2000]
| Quote: Guava uses deep-copying for values and objects within values; does not copy references to monitors
| Subtopic: disallow aliases
Quote: Fortran guarantees that multiple array arguments do not overlap; allows spectacular savings on vector hardware [»stroB_1994]
| Quote: a variable should not be passed twice as distinct parameters; prohibited in standard FORTRAN [»hoarCA_1974]
|
Related Topics
Topic: alias names (39 items)
Topic: binding names to variables or expressions (10 items)
Topic: code optimization by flow analysis (47 items)
Topic: dangling pointers (13 items)
Topic: optimization of object-oriented programs (16 items)
Topic: parameter passing by reference (11 items)
Topic: pointer rotation (11 items)
Topic: pointers to data (55 items)
Topic: preventing accidental errors (37 items)
Topic: safe use of pointers (102 items)
Topic: shared objects (13 items)
Topic: variable as reference to storage (12 items)
|