9f367b1709
Fixes https://github.com/dart-lang/sdk/issues/56905 Instead of just supporting isJSAny and isJSObject, we can support isA for all objects. Depending on the static type, we include an intrinsic _isJSAny function first in the transformation. For fast paths for JSObjects, we also now call an intrinsic function which has the added benefit of now correctly returning true for objects with no prototype. The intrinsic functions in dart2wasm need to be careful to not treat ExternalDartReferences as JS values, so JSValue is amended to include a field that determines if the value is a Dart value (and caches it if not set already). JSValue constructions are updated to pass false for this field if we know for sure this value isn't an externalized Dart value. CoreLibraryReviewExempt: Backend-specific function changes. Change-Id: Ib2a6e74b4130632791375fcda9a5b85198ad64af Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/478241 Commit-Queue: Srujan Gaddam <srujzs@google.com> Reviewed-by: Martin Kustermann <kustermann@google.com>