diff options
Diffstat (limited to 'deps/v8/src/compiler/verifier.cc')
-rw-r--r-- | deps/v8/src/compiler/verifier.cc | 46 |
1 files changed, 38 insertions, 8 deletions
diff --git a/deps/v8/src/compiler/verifier.cc b/deps/v8/src/compiler/verifier.cc index 7eedd2b37b..38ffbe63fc 100644 --- a/deps/v8/src/compiler/verifier.cc +++ b/deps/v8/src/compiler/verifier.cc @@ -667,6 +667,10 @@ void Verifier::Visitor::Check(Node* node, const AllNodes& all) { // Type is OtherObject. CheckTypeIs(node, Type::OtherObject()); break; + case IrOpcode::kJSCreateAsyncFunctionObject: + // Type is OtherObject. + CheckTypeIs(node, Type::OtherObject()); + break; case IrOpcode::kJSCreateCollectionIterator: // Type is OtherObject. CheckTypeIs(node, Type::OtherObject()); @@ -872,6 +876,23 @@ void Verifier::Visitor::Check(Node* node, const AllNodes& all) { CheckNotTyped(node); break; + case IrOpcode::kJSAsyncFunctionEnter: + CheckValueInputIs(node, 0, Type::Any()); + CheckValueInputIs(node, 1, Type::Any()); + CheckTypeIs(node, Type::OtherObject()); + break; + case IrOpcode::kJSAsyncFunctionReject: + CheckValueInputIs(node, 0, Type::Any()); + CheckValueInputIs(node, 1, Type::Any()); + CheckValueInputIs(node, 2, Type::Boolean()); + CheckTypeIs(node, Type::OtherObject()); + break; + case IrOpcode::kJSAsyncFunctionResolve: + CheckValueInputIs(node, 0, Type::Any()); + CheckValueInputIs(node, 1, Type::Any()); + CheckValueInputIs(node, 2, Type::Boolean()); + CheckTypeIs(node, Type::OtherObject()); + break; case IrOpcode::kJSFulfillPromise: CheckValueInputIs(node, 0, Type::Any()); CheckValueInputIs(node, 1, Type::Any()); @@ -1089,7 +1110,7 @@ void Verifier::Visitor::Check(Node* node, const AllNodes& all) { CheckTypeIs(node, Type::Number()); break; case IrOpcode::kStringConcat: - CheckValueInputIs(node, 0, TypeCache::Get().kStringLengthType); + CheckValueInputIs(node, 0, TypeCache::Get()->kStringLengthType); CheckValueInputIs(node, 1, Type::String()); CheckValueInputIs(node, 2, Type::String()); CheckTypeIs(node, Type::String()); @@ -1138,7 +1159,7 @@ void Verifier::Visitor::Check(Node* node, const AllNodes& all) { break; case IrOpcode::kStringLength: CheckValueInputIs(node, 0, Type::String()); - CheckTypeIs(node, TypeCache::Get().kStringLengthType); + CheckTypeIs(node, TypeCache::Get()->kStringLengthType); break; case IrOpcode::kStringToLowerCaseIntl: case IrOpcode::kStringToUpperCaseIntl: @@ -1224,7 +1245,7 @@ void Verifier::Visitor::Check(Node* node, const AllNodes& all) { break; case IrOpcode::kArgumentsLength: CheckValueInputIs(node, 0, Type::ExternalPointer()); - CheckTypeIs(node, TypeCache::Get().kArgumentsLengthType); + CheckTypeIs(node, TypeCache::Get()->kArgumentsLengthType); break; case IrOpcode::kArgumentsFrame: CheckTypeIs(node, Type::ExternalPointer()); @@ -1237,12 +1258,12 @@ void Verifier::Visitor::Check(Node* node, const AllNodes& all) { break; case IrOpcode::kNewArgumentsElements: CheckValueInputIs(node, 0, Type::ExternalPointer()); - CheckValueInputIs(node, 1, Type::Range(-Code::kMaxArguments, - Code::kMaxArguments, zone)); + CheckValueInputIs(node, 1, + Type::Range(0.0, FixedArray::kMaxLength, zone)); CheckTypeIs(node, Type::OtherInternal()); break; case IrOpcode::kNewConsString: - CheckValueInputIs(node, 0, TypeCache::Get().kStringLengthType); + CheckValueInputIs(node, 0, TypeCache::Get()->kStringLengthType); CheckValueInputIs(node, 1, Type::String()); CheckValueInputIs(node, 2, Type::String()); CheckTypeIs(node, Type::String()); @@ -1400,8 +1421,8 @@ void Verifier::Visitor::Check(Node* node, const AllNodes& all) { case IrOpcode::kCheckBounds: CheckValueInputIs(node, 0, Type::Any()); - CheckValueInputIs(node, 1, Type::Unsigned31()); - CheckTypeIs(node, Type::Unsigned31()); + CheckValueInputIs(node, 1, TypeCache::Get()->kPositiveSafeInteger); + CheckTypeIs(node, TypeCache::Get()->kPositiveSafeInteger); break; case IrOpcode::kPoisonIndex: CheckValueInputIs(node, 0, Type::Unsigned32()); @@ -1434,6 +1455,10 @@ void Verifier::Visitor::Check(Node* node, const AllNodes& all) { CheckValueInputIs(node, 0, Type::Any()); CheckTypeIs(node, Type::Receiver()); break; + case IrOpcode::kCheckReceiverOrNullOrUndefined: + CheckValueInputIs(node, 0, Type::Any()); + CheckTypeIs(node, Type::ReceiverOrNullOrUndefined()); + break; case IrOpcode::kCheckSmi: CheckValueInputIs(node, 0, Type::Any()); break; @@ -1462,13 +1487,17 @@ void Verifier::Visitor::Check(Node* node, const AllNodes& all) { case IrOpcode::kCheckedInt32ToTaggedSigned: case IrOpcode::kCheckedInt64ToInt32: case IrOpcode::kCheckedInt64ToTaggedSigned: + case IrOpcode::kCheckedUint32Bounds: case IrOpcode::kCheckedUint32ToInt32: case IrOpcode::kCheckedUint32ToTaggedSigned: + case IrOpcode::kCheckedUint64Bounds: case IrOpcode::kCheckedUint64ToInt32: case IrOpcode::kCheckedUint64ToTaggedSigned: case IrOpcode::kCheckedFloat64ToInt32: + case IrOpcode::kCheckedFloat64ToInt64: case IrOpcode::kCheckedTaggedSignedToInt32: case IrOpcode::kCheckedTaggedToInt32: + case IrOpcode::kCheckedTaggedToInt64: case IrOpcode::kCheckedTaggedToFloat64: case IrOpcode::kCheckedTaggedToTaggedSigned: case IrOpcode::kCheckedTaggedToTaggedPointer: @@ -1715,6 +1744,7 @@ void Verifier::Visitor::Check(Node* node, const AllNodes& all) { case IrOpcode::kChangeFloat64ToUint32: case IrOpcode::kChangeFloat64ToUint64: case IrOpcode::kFloat64SilenceNaN: + case IrOpcode::kTruncateFloat64ToInt64: case IrOpcode::kTruncateFloat64ToUint32: case IrOpcode::kTruncateFloat32ToInt32: case IrOpcode::kTruncateFloat32ToUint32: |