Lines Matching refs:array_length
809 HInstruction* array_length = bounds_check->InputAt(1);
810 DCHECK(array_length->IsIntConstant() ||
811 array_length->IsArrayLength() ||
812 array_length->IsPhi());
819 ValueBound upper = ValueBound(array_length, -1); // array_length - 1
839 } else if (array_length->IsIntConstant()) {
840 if (constant < array_length->AsIntConstant()->GetValue()) {
846 DCHECK(array_length->IsArrayLength());
847 ValueRange* existing_range = LookupValueRange(array_length, block);
856 // Fall through to update the array_length range with info from this
871 AssignRange(block, array_length, range);
882 if (first_index_bounds_check_map_.find(array_length->GetId()) ==
884 // Remember the first bounds check against each array_length. That bounds check
886 // to eliminate subsequent bounds checks against the same array_length.
887 first_index_bounds_check_map_.Put(array_length->GetId(), bounds_check);
1010 HInstruction* array_length = left->AsArrayLength();
1018 if (ValueBound::Equal(array_length, upper_inst)) {
1031 ValueBound(array_length, right_const - lower.GetConstant()));
1066 // (array_length + 1) or smaller divided by two or more
1067 // always generate a value in [Min(), array_length].
1068 // This is true even if array_length is Max().
1072 // e.g. if array_length is 2, ((array_length - 3) >>> 2) is way bigger
1073 // than array_length.
1169 HInstruction* array_length,
1173 first_index_bounds_check_map_.Get(array_length->GetId())->AsBoundsCheck();
1190 InsertDeoptInBlock(bounds_check, new (GetGraph()->GetArena()) HAboveOrEqual(upper, array_length));
1200 HInstruction* array_length = bounds_check->InputAt(1);
1201 if (!array_length->IsArrayLength()) {
1217 for (const HUseListNode<HInstruction*>& use : array_length->GetUses()) {
1226 if (array_length == other_array_length && base == other_value.GetInstruction()) {
1228 if (array_length == other_index) {
1268 AddCompareWithDeoptimization(block, array_length, base, min_c, max_c);
1574 * array_length = array.length;
1576 * if (upper >= array_length) deoptimize; // unsigned
1578 * array_length = 0;
1581 * // Loop without null check and bounds check, and any array.length replaced with array_length.