3367 {
3368 if (!HasUses() && !CanDeoptimize()) return nullptr;
3369
3370
3373 return value_defn;
3374 }
3375
3376
3377
3378 if (HasUnmatchedInputRepresentations()) {
3379 return this;
3380 }
3381
3382
3384 if (box_defn != nullptr && !box_defn->HasUnmatchedInputRepresentations()) {
3388 return box_defn->value()->definition();
3389 } else {
3390
3391 IntConverterInstr*
converter =
new IntConverterInstr(
3393 box_defn->value()->CopyWithType(),
3395
3396
3397
3398
3399
3403 }
3406 }
3407 }
3408
3410
3411
3413 }
3414
3415 if (
value()->BindsToConstant()) {
3417 if (obj.IsInteger()) {
3420 }
3421 const int64_t intval = Integer::Cast(obj).AsInt64Value();
3424 }
3427 return flow_graph->GetConstant(
3431 }
3432 }
3433 }
3434
3435 return this;
3436}
static int64_t TruncateTo(int64_t v, Representation r)
virtual Representation representation() const
static IntegerPtr NewCanonical(const String &str)
static Object & ZoneHandle()
void set_speculative_mode(SpeculativeMode value)
virtual SpeculativeMode SpeculativeModeOfInput(intptr_t index) const
bool is_truncating() const
virtual bool ComputeCanDeoptimize() const
const Object & BoundConstant() const
Definition * definition() const
static constexpr const char * kNone
static bool IsRepresentable(Representation rep, int64_t value)