352 {
354 Zone* zone = thread->zone();
357 bool is_nullable = true;
358
363 is_nullable = false;
364 }
365 }
366
368 if (field_type.IsStrictlyNonNullable()) {
369 is_nullable = false;
370 }
371
372 FieldGuardState field_guard_state(
field);
373
374 bool used_guarded_state = false;
377
380 used_guarded_state = true;
381 }
382
383 if (is_nullable && !field_guard_state.
is_nullable()) {
384 is_nullable = false;
385 used_guarded_state = true;
386 }
387 }
388
391 ASSERT(!(needs_load_guard && is_unboxed));
392
393 if (needs_load_guard) {
394
397 is_nullable = true;
398 used_guarded_state = false;
399 }
400
401 if (is_unboxed) {
402
403
404
405 used_guarded_state = false;
406 is_nullable = false;
408 switch (nullable_cid) {
409 case kDoubleCid:
410 rep = kUnboxedDouble;
411 break;
412 case kFloat32x4Cid:
413 rep = kUnboxedFloat32x4;
414 break;
415 case kFloat64x2Cid:
416 rep = kUnboxedFloat64x2;
417 break;
418 default:
419 rep = kUnboxedInt64;
420 break;
421 }
422 }
423
424 const bool is_sentinel_visible =
426
427 CompileType
type = (rep != kTagged)
429 : CompileType(is_nullable, is_sentinel_visible,
430 nullable_cid, &field_type);
431
433 const Slot& slot = GetCanonicalSlot(
442 field_guard_state);
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457 if (slot.is_guarded_field()) {
458 if (thread->isolate_group()->use_field_guards()) {
459 ASSERT(parsed_function !=
nullptr);
460 parsed_function->AddToGuardedFields(&slot.field());
461 } else {
462
463
465 }
466 }
467
468 return slot;
469}
static constexpr S encode(T value)
static CompileType FromUnboxedRepresentation(Representation rep)
static CompilerState & Current()
intptr_t guarded_cid() const
bool has_initializer() const
bool needs_load_guard() const
AbstractTypePtr type() const
static intptr_t ResultCidFromPragma(const Object &function_or_field)
static Object & ZoneHandle()
const Field & field() const
static Thread * Current()
static TypePtr DynamicType()
static bool HasCompressedPointers(const dart::Class &handle)
static word OffsetOf(const dart::Field &field)