dart-sdk/sdk/lib
Stephen Adams 048c7b036b [js_runtime] Polyfill WeakReference and Finalizer for ancient browsers
Dart does not officially support browsers before the introduction of WeakRef and FinalizationRegistry but there are users of Dart that have a few customers still using these browsers.

As a result, both ACX and Flutter have ad-hoc polyfills for these classes. Adding the polyfill in js_runtime will allow the other polyfills to be removed. The polyfill is as small as possible (omitting checks, avoiding extra Dart classes, detecting as late as possible), so it should be a net code size improvement of a few bytes for ACX and Flutter use cases.

The polyfill leaks memory by retaining the weak reference target and never calls the finalization callbacks. This is permitted behaviour.

Change-Id: I4f0d08ee6322dab26728d95ca8c24a7fd59b3314
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/333304
Reviewed-by: Sigmund Cherem <sigmund@google.com>
Commit-Queue: Stephen Adams <sra@google.com>
2023-11-03 22:15:38 +00:00
..
_http Fix a bug where proxy usernames/passwords containing @ were not correctly parsed. 2023-11-03 19:48:42 +00:00
_internal [js_runtime] Polyfill WeakReference and Finalizer for ancient browsers 2023-11-03 22:15:38 +00:00
_wasm Expose some APIs for translating between wasm and JS interop types. 2023-09-27 21:34:38 +00:00
async Remove some now unnecessary casts 2023-10-24 19:09:22 +00:00
cli [vm] Disable dart:cli waitFor by default 2023-09-14 10:08:29 +00:00
collection Unify splay tree iterators and interables constructor argument names. 2023-10-19 14:07:37 +00:00
convert Refer to unnamed constructors in doc comments with '.new' 2023-10-17 14:42:38 +00:00
core Fix bad link in updated docs. 2023-10-20 14:47:26 +00:00
developer [vm/compiler] Tag non-ffi force-optimized functions idempotent. 2023-08-18 18:27:58 +00:00
ffi Revert "[vm/ffi] Optimize @Native calls" 2023-11-03 09:04:24 +00:00
html [vm] Mark NativeFieldWrapperClasses as base 2023-10-31 10:23:12 +00:00
indexed_db web_audio is not part sky_engine 2023-09-14 10:33:17 +00:00
internal Hide the existence of EfficientLengthIterable better. 2023-09-12 11:08:42 +00:00
io [doc/io] Add a RawSocketEvent example. 2023-10-30 16:53:17 +00:00
isolate Refer to unnamed constructors in doc comments with '.new' 2023-10-17 14:42:38 +00:00
js Reland "[pkg:js/dart:js_interop] Move annotations to dart:_js_annotations" 2023-05-02 15:24:18 +00:00
js_interop [dart:js_interop] Add/fix some js_interop helpers 2023-09-23 18:32:59 +00:00
js_interop_unsafe [dart:js_interop_unsafe] Rename extensions and make []/[]= take String properties 2023-09-12 23:11:55 +00:00
js_util [js_util] Make callMethod take an Object method. 2023-03-23 00:23:00 +00:00
math Adding class modifiers to dart:math. 2023-03-13 14:01:26 +00:00
mirrors [sdk docs] update sdk libraries to use triple slash docs 2023-03-14 19:10:25 +00:00
svg web_audio is not part sky_engine 2023-09-14 10:33:17 +00:00
typed_data Revert "[typed_data] Deprecate unmodifiable views" 2023-10-27 15:22:54 +00:00
vmservice [vm] Pass offset and script uri for expression compilation 2023-10-12 10:22:38 +00:00
web_audio web_audio is not part sky_engine 2023-09-14 10:33:17 +00:00
web_gl web_audio is not part sky_engine 2023-09-14 10:33:17 +00:00
web_sql web_audio is not part sky_engine 2023-09-14 10:33:17 +00:00
analysis_options.yaml [vm/ffi] Support varargs 2023-01-20 10:30:41 +00:00
libraries.json [dart2wasm] Use only JS strings in JSCM 2023-10-31 12:58:26 +00:00
libraries.yaml [dart2wasm] Use only JS strings in JSCM 2023-10-31 12:58:26 +00:00
PRESUBMIT.py
vmservice_libraries.json
vmservice_libraries.yaml