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>
Front end for Dart
This package provides a low-level API for use by compiler back ends that wish to implement the Dart language. It is intended for eventual use by dev_compiler, dart2js, and the Dart VM. In addition, it will share implementation details with the analyzer package--this will be accomplished by having the analyzer package import (and re-export) parts of this package's private implementation.
End-users should use the dart analyze
command-line tool to analyze their Dart code.
Integrators that want to write tools that analyze Dart code should use the analyzer package.
Note: A previous version of this package was published on pub.dev. It has now been marked DISCONTINUED as it is not intended for direct consumption, as per the notes above.