dart-sdk/pkg
Martin Kustermann 0ef66e0f5c [VM] Add @pragma("vm:non-nullable-result-type") annotation
A field/function annotated with this pragma must be guaranteed to not
return `null` at runtime.

Make use of this non-nullable annotation in the VM's type propagator.

Annotates the "_TypedListView._typedData" field to ensure the VM knows it
returns a non-nullable _TypedListView.

Furthermore annotates methods on the integer implementation.  Those particular
methods are recognized methods with a "dynamic" return type.  This caused
the type propagator to use CompileType::Dynamic() as result type.  Since a
previous CL started to only utilize the annotated type if it is better than
"dynamic" more integer operations got handled in-line, though with null-checks.
Annotating those methods to return non-null improves the in-line handling of
integer operations.

This improves dart-aot

On arm7hf:
  SHA256: +5%, SHA: +6%, JsonObjectRoundTrip: +7%, ...

On arm8:
  SHA1: +28%, MD5: +25%, SHA256: +15%, TypedData.Int16ListViewBench: +18.5%, StringInterpolation: +18%, ...


Issue https://github.com/dart-lang/sdk/issues/31954
Issue https://github.com/dart-lang/sdk/issues/35154

Change-Id: Ia4263a37241a36c9dc35e8a48893297effa6f4b2
Reviewed-on: https://dart-review.googlesource.com/c/84421
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
2018-11-22 16:18:27 +00:00
..
analysis_server Cleanup analysis_server_client API 2018-11-15 15:06:55 +00:00
analysis_server_client Update dartfix to check analysis server protocol version 2018-11-19 21:14:28 +00:00
analyzer Improve the exception message when a library can't be found in a summary. 2018-11-21 21:18:42 +00:00
analyzer_cli modernize IDE reference 2018-10-25 14:19:31 +00:00
analyzer_fe_comparison Adapt analyzer/FE comparison logic to handle mixins with >2 superclass constraints. 2018-10-17 21:02:56 +00:00
analyzer_plugin Set to publish new analyzer_plugin. 2018-10-22 17:31:35 +00:00
async_helper Fix #33415 no error for awaiting a void expression. 2018-07-24 19:31:57 +00:00
build_integration Cleanup unused vars in VM patch files 2018-11-13 22:56:54 +00:00
compiler Cleanup library-loader: rename as kernel producer, remove some dependencies 2018-11-21 17:59:18 +00:00
dart2js_tools Update lookup-name tool to use the dart2js_mapping implementation. 2018-11-20 01:45:37 +00:00
dart_internal Bump package dart_internal's SDK constraint upper-bound to <2.2.0 2018-10-15 21:37:56 +00:00
dartfix Update version before publishing 2018-11-20 18:54:43 +00:00
dev_compiler [dartdevc] fix build times by only linking input sources 2018-11-21 01:17:13 +00:00
diagnostic Create a package for shared diagnostics 2018-09-27 16:23:20 +00:00
expect fix some typos 2018-10-10 19:15:30 +00:00
front_end [kernel] Make instantiate-to-bound implementation in Kernel private 2018-11-22 11:50:27 +00:00
js pkg/js: fix pubspec author 2018-07-18 21:36:10 +00:00
js_ast dart2js experiment: force parens around part file function 2018-11-20 02:56:21 +00:00
kernel [kernel] Make instantiate-to-bound implementation in Kernel private 2018-11-22 11:50:27 +00:00
meta Deprecate the "virtual" annotation 2018-11-14 20:12:37 +00:00
microlytics
smith Lay the groundwork for comparing language_2 compilation results between analyzer and CFE. 2018-09-08 15:25:05 +00:00
sourcemap_testing Encode dart2js source-map extensions in strings. 2018-11-05 18:24:33 +00:00
status_file Use whereType in status_file_linter.dart 2018-11-15 07:58:39 +00:00
telemetry Upgrade package:http to 0.12.0. 2018-10-24 21:23:16 +00:00
testing Honor verbose mode when running test directly 2018-11-06 13:39:20 +00:00
vm [VM] Add @pragma("vm:non-nullable-result-type") annotation 2018-11-22 16:18:27 +00:00
.gitignore
BUILD.gn
pkg.status Rename strongMode to legacyMode in test suite 2018-11-14 09:32:15 +00:00