Home | History | Annotate | Download | only in common

Lines Matching defs:Binding

162   // related to other labels' values. A binding may be:
164 // - constrained to be equal to some other binding plus a constant, or
167 // Many labels may point to a single binding, and each binding may
173 class Binding {
175 Binding();
176 Binding(uint64_t addend);
177 ~Binding();
184 // Set this binding to be equal to BINDING + ADDEND. If BINDING is
185 // NULL, then set this binding to the known constant ADDEND.
186 // Update every binding on this binding's chain to point directly
187 // to BINDING, or to be a constant, with addends adjusted
189 void Set(Binding *binding, uint64_t value);
191 // Return what we know about the value of this binding.
192 // - If this binding's value is a known constant, set BASE to
194 // - If this binding is not a known constant but related to other
195 // bindings, set BASE to the binding at the end of the relation
197 // value to add to that binding's value to get this binding's
199 // - If this binding is unconstrained, set BASE to this, and leave
201 void Get(Binding **base, uint64_t *addend);
206 // - A binding representing a known constant value has base_ NULL,
209 // - A binding representing a completely unconstrained value has
212 // - A binding whose value is related to some other binding's
213 // value has base_ pointing to that other binding, and addend_
214 // set to the amount to add to that binding's value to get this
215 // binding's value. We only represent relationships of the form
221 // binding on the chain to point directly to the final value,
223 Binding *base_;
226 // The number of Labels and Bindings pointing to this binding.
227 // (When a binding points to itself, indicating a completely
228 // unconstrained binding, that doesn't count as a reference.)
233 Binding *value_;