Lines Matching refs:field

19 // An element in the field approximation list.
26 // Recursively copy the entire linked list of field approximations.
38 // field is tracked separately. For each field, store a list of known field
50 TRACE((" process L%d field %d (o%d)\n",
64 TRACE((" process S%d field %d (o%d) = v%d\n",
109 // - learn from HCheckMaps for field 0
167 // Merge the field approximations for like fields.
199 // load or store for this object and field exists, return the new value with
206 int field = FieldOf(instr->access());
207 if (field < 0) return instr;
210 HFieldApproximation* approx = FindOrCreate(object, field);
226 // store to the same object and field makes this store redundant (e.g. because
236 int field = FieldOf(instr->access());
237 if (field < 0) return KillIfMisaligned(instr);
243 // A transition introduces a new field and alters the map of the object.
244 // Since the field in the object is new, it cannot alias existing entries.
249 KillFieldInternal(object, field, value);
251 HFieldApproximation* approx = FindOrCreate(object, field);
254 // The store is redundant because the field already has this value.
270 int field = FieldOf(offset);
271 if (field >= 0 && field < fields_.length()) {
272 fields_[field] = NULL;
278 int field = FieldOf(s->access());
279 if (field >= 0) {
280 KillFieldInternal(s->object()->ActualValue(), field, s->value());
292 // Kill the field containing the first word of the access.
294 int field = offset / kPointerSize;
295 KillFieldInternal(object, field, NULL);
297 // Kill the next field in case of overlap.
300 if (next_field != field) KillFieldInternal(object, next_field, NULL);
306 // Find an entry for the given object and field pair.
307 HFieldApproximation* Find(HValue* object, int field) {
308 // Search for a field approximation for this object.
309 HFieldApproximation* approx = fields_[field];
317 // Find or create an entry for the given object and field pair.
318 HFieldApproximation* FindOrCreate(HValue* object, int field) {
319 EnsureFields(field + 1);
321 // Search for a field approximation for this object.
322 HFieldApproximation* approx = fields_[field];
332 approx = ReuseLastApproximation(field);
341 approx->next_ = fields_[field];
342 fields_[field] = approx;
347 // Kill all entries for a given field that _may_ alias the given object
349 void KillFieldInternal(HValue* object, int field, HValue* value) {
350 if (field >= fields_.length()) return; // Nothing to do.
352 HFieldApproximation* approx = fields_[field];
361 fields_[field] = approx->next_;
380 // Remove the last approximation for a field so that it can be reused.
383 HFieldApproximation* ReuseLastApproximation(int field) {
384 HFieldApproximation* approx = fields_[field];
396 // Compute the field index for the given object access; -1 if not tracked.
401 // Compute the field index for the given in-object offset; -1 if not tracked.
419 PrintF(" field %d: ", i);