dart-sdk/tests/language
Alexander Aprelev 8c0df46887 [vm] Better implementation of hashCode function.
With this cl hashCode function for integers which used to be identity function becomes `uint128_t hash = value * constant; hash ^= hash >> 64; hash ^= hash >> 32; hash &= 0x3fffffff`. Note that the hashCode has to stay the same across platforms(64-bit/32-bit).

This dramatically improves performance of integer HashSet/HashMap lookups when integers differ in higher bits only(see the issue referenced below).

AOT ARM64 benchmarks:
===
WordSolverIdentity -3.630% (-0.9 noise)
BigInt.parse.0064.bits 15.43% (0.9 noise)
BigInt.parse.4096.bits 40.80% (1.6 noise)
BigInt.parse.0256.bits 42.01% (2.3 noise)
BigInt.parse.1024.bits 50.91% (2.6 noise)
IntegerSetLookup.DefaultHashSet 549916% (14727.6 noise)
IntegerSetLookup.DefaultHashSet 597150% (55520.2 noise)
IntegerSetLookup.HashSet 846924% (78126.7 noise)
IntegerSetLookup.HashSet 791864% (107221.1 noise)
===

AOT x64:
===
Havlak -14.25% (-1.7 noise)
DartMicroBench.Int64Div -7.091% (-1.2 noise)
ObjectHash.manual.5 -9.541% (-0.8 noise)
AsyncLiveVars.LiveInt1 4.726% (0.8 noise)
IsolateJson.SendAndExit_Decode1MBx1 9.067% (0.8 noise)
SplayHarderLatency 4.629% (0.9 noise)
TypedDataDuplicate.Float64List.32.loop 35.01% (1.8 noise)
IntegerSetLookup.DefaultHashSet 627996% (124823.6 noise)
IntegerSetLookup.HashSet 1245362% (244705.3 noise)
===

JIT ARM64:
===
IntegerSetLookup.DefaultHashSet_Random 73.80% (1.2 noise)
IntegerSetLookup.DefaultHashSet 344999% (6202.9 noise)
IntegerSetLookup.HashSet 483731% (7845.7 noise)
===

JIT x64:
===
CollectionSieves-Set-removeLoop -6.294% (-0.9 noise)
Utf8Encode.ru.10M 59.11% (0.8 noise)
Utf8Encode.ru.10k 71.62% (0.9 noise)
Utf8Encode.zh.10M 53.93% (0.9 noise)
Utf8Encode.ne.10k 71.34% (0.9 noise)
Utf8Encode.zh.10k 72.52% (0.9 noise)
Utf8Encode.ne.10M 53.17% (0.9 noise)
IntegerSetLookup.HashSet_Random 27.80% (1.1 noise)
String.replaceAll.String.Zero 8.659% (1.2 noise)
IntegerSetLookup.DefaultHashSet_Random 96.20% (1.3 noise)
IntegerSetLookup.HashSet 481037% (18028.8 noise)
IntegerSetLookup.DefaultHashSet 454450% (31501.3 noise)
==

Fixes https://github.com/dart-lang/sdk/issues/48641
TEST=ci

Change-Id: Id982e4aa30cd1d6a63f93c73917a8b921ad464a3
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/258600
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Alexander Aprelev <aam@google.com>
2022-10-20 20:31:20 +00:00
..
abstract [test] Replace non-implemented @DontInline() annotations 2021-07-26 13:22:31 +00:00
accessor_conflict
argument [analyzer] NOT_ENOUGH_POSITIONAL_ARGUMENTS 2022-10-11 17:56:11 +00:00
assert
assign
async [tests] Avoid small --optimization-counter-threshold in tests 2022-10-10 21:04:18 +00:00
async_nested
async_star Fixed various typos in a lot of files 2022-07-25 12:21:59 +00:00
await [tests] Avoid small --optimization-counter-threshold in tests 2022-10-10 21:04:18 +00:00
bool Remove uses of : as default value separator in some tests/ directories. 2022-09-07 14:49:17 +00:00
call [analyzer] NOT_ENOUGH_POSITIONAL_ARGUMENTS 2022-10-11 17:56:11 +00:00
canonicalize
cascade Remove nbsp 2022-10-17 08:18:49 +00:00
class Remove uses of : as default value separator in some tests/ directories. 2022-09-07 14:49:17 +00:00
closure Remove uses of : as default value separator in some tests/ directories. 2022-09-07 14:49:17 +00:00
compile_time_constant [analyzer] NOT_ENOUGH_POSITIONAL_ARGUMENTS 2022-10-11 17:56:11 +00:00
const Remove uses of : as default value separator in some tests/ directories. 2022-09-07 14:49:17 +00:00
const_functions [cfe] Report all compile-time errors found during constant evaluation 2021-08-24 11:42:53 +00:00
constants_2018 Fixed various typos in a lot of files 2022-07-25 12:21:59 +00:00
constructor [analyzer] NOT_ENOUGH_POSITIONAL_ARGUMENTS 2022-10-11 17:56:11 +00:00
control_flow_collections Simplify asyncExpectThrows and enhance Expect.throws. 2022-01-06 17:06:47 +00:00
covariant Add tests about covariant parameters and inherited methods 2021-09-01 23:47:47 +00:00
covariant_override Fix typos 2022-06-15 11:08:28 +00:00
deferred Reapply "Account for @pragma("vm:entry-point") creating additional "root" libraries when partitioning the program into loading units." 2022-06-27 18:56:12 +00:00
double
double_literals
dynamic [vm] Better implementation of hashCode function. 2022-10-20 20:31:20 +00:00
enum Roll dart_style 2.2.2 into the repo. 2022-03-04 13:06:42 +00:00
exception
export [test] Fix bug in export/duplicate_import_libd 2021-06-30 07:44:52 +00:00
extension_methods Fix typos 2022-06-10 15:48:54 +00:00
external_abstract_fields
factory [cfe] Add UnresolvedKind for fine grained unresolved reporting 2021-08-25 09:51:54 +00:00
field [dart2wasm] Initialize the function class early. 2022-03-18 17:44:57 +00:00
final Flow analysis: ensure that not-yet-declared variables aren't marked as captured. 2022-01-11 15:42:04 +00:00
function Remove uses of : as default value separator in some tests/ directories. 2022-09-07 14:49:17 +00:00
function_subtype Remove uses of : as default value separator in some tests/ directories. 2022-09-07 14:49:17 +00:00
function_type Remove uses of : as default value separator in some tests/ directories. 2022-09-07 14:49:17 +00:00
generic Remove uses of : as default value separator in some tests/ directories. 2022-09-07 14:49:17 +00:00
generic_methods Remove uses of : as default value separator in some tests/ directories. 2022-09-07 14:49:17 +00:00
getter Fix reporting of INSTANCE_ACCESS_TO_STATIC_MEMBER from within an extension. 2021-10-17 06:22:30 +00:00
identifier [cfe] Refactor TypeBuilders 2022-03-28 18:22:50 +00:00
identity
if
if_null Issue 48004. Report when null-aware operator is used on type. 2022-05-29 19:03:15 +00:00
implicit_creation Fix typos 2022-04-28 12:53:43 +00:00
implicit_downcast_during
import [cfe] Add UnresolvedKind for fine grained unresolved reporting 2021-08-25 09:51:54 +00:00
inference
inference_update_1 Ensure that partial inference results aren't refined by later partial inference stages. 2022-05-10 15:10:44 +00:00
inference_update_2 Front end logic for field promotion. 2022-10-19 14:53:51 +00:00
initializing_formal
instance [cfe] Add UnresolvedKind for fine grained unresolved reporting 2021-08-25 09:51:54 +00:00
instantiate_to_bound master branch to main 2021-09-15 06:22:23 +00:00
interceptor
interface [cfe] Add UnresolvedKind for fine grained unresolved reporting 2021-08-25 09:51:54 +00:00
invalid_returns
is [tests] Avoid small --optimization-counter-threshold in tests 2022-10-10 21:04:18 +00:00
label [parser] Add beforeSynthetic to SyntheticStringToken 2021-08-30 11:56:30 +00:00
lazy
least_upper_bound
library Language test for unnamed-libraries 2022-10-04 16:45:21 +00:00
list
loop
main
malbounded [cfe] Refactor bounds checking 2022-05-17 14:36:19 +00:00
malformed [cfe] Refactor TypeBuilders 2022-03-28 18:22:50 +00:00
map [js_runtime] Use custom hashCode for GeneralConstantMap 2021-07-16 22:58:02 +00:00
metadata Remove uses of : as default value separator in some tests/ directories. 2022-09-07 14:49:17 +00:00
method Remove uses of : as default value separator in some tests/ directories. 2022-09-07 14:49:17 +00:00
mixin Remove uses of : as default value separator in some tests/ directories. 2022-09-07 14:49:17 +00:00
mixin_constructor_forwarding
mixin_declaration
named_arguments_anywhere Roll dart_style 2.2.2 into the repo. 2022-03-04 13:06:42 +00:00
new [cfe] Add UnresolvedKind for fine grained unresolved reporting 2021-08-25 09:51:54 +00:00
nnbd [ddc] Fix bug in FutureOr type normalization 2022-10-03 20:09:38 +00:00
no_such_method Remove uses of : as default value separator in some tests/ directories. 2022-09-07 14:49:17 +00:00
nonfunction_type_aliases Don't delegate foreign private names to noSuchMethod. 2022-09-27 21:20:35 +00:00
nosuchmethod_forwarding Remove uses of : as default value separator in some tests/ directories. 2022-09-07 14:49:17 +00:00
null [tests] Avoid small --optimization-counter-threshold in tests 2022-10-10 21:04:18 +00:00
null_aware Flag additional code as unreachable due to types Null and Never. 2022-08-22 16:50:19 +00:00
number [cfe] Add UnresolvedKind for fine grained unresolved reporting 2021-08-25 09:51:54 +00:00
operator Deprecate IntegerDivisionByZeroException. 2021-10-19 16:07:52 +00:00
optimize [tests] Avoid small --optimization-counter-threshold in tests 2022-10-10 21:04:18 +00:00
override
parameter [analyzer] NOT_ENOUGH_POSITIONAL_ARGUMENTS 2022-10-11 17:56:11 +00:00
part
prefix [cfe] Add UnresolvedKind for fine grained unresolved reporting 2021-08-25 09:51:54 +00:00
private [cfe] Add UnresolvedKind for fine grained unresolved reporting 2021-08-25 09:51:54 +00:00
propagate
records/simple [vm] Account for named record fields which can be named like positional 2022-10-18 21:03:09 +00:00
redirecting Remove uses of : as default value separator in some tests/ directories. 2022-09-07 14:49:17 +00:00
reg_exp
regress [tests] Avoid small --optimization-counter-threshold in tests 2022-10-10 21:04:18 +00:00
resolution
return
rewrite
script Delete unused files in test folders. 2021-05-19 08:05:05 +00:00
set_literals
setter Do not report BODY_MIGHT_COMPLETE_NORMALLY for setters 2021-09-08 16:07:13 +00:00
spread_collections
stack_trace
static [ddc] Adding support for static setters of const fields 2022-04-01 23:51:15 +00:00
string [parser-ish] Better errors on invalid unicode escapes 2022-03-17 13:57:45 +00:00
subtyping_static
super Remove uses of : as default value separator in some tests/ directories. 2022-09-07 14:49:17 +00:00
superinterface_variance
switch Reland "Reland "[vm/compiler] Optimize switch statements"" 2022-08-23 22:11:50 +00:00
symbol
sync_star
syntax
this Remove uses of : as default value separator in some tests/ directories. 2022-09-07 14:49:17 +00:00
top_level Delete unused files in test folders. 2021-05-19 08:05:05 +00:00
type [cfe] Check primitive equals in legacy libraries 2022-02-10 22:13:14 +00:00
type_object Fix typos 2022-06-15 11:08:28 +00:00
type_promotion
type_variable [cfe] Refactor bounds checking 2022-05-17 14:36:19 +00:00
typedef Remove references to constructor-tearoff experiment. 2021-11-11 14:04:43 +00:00
unsorted Remove uses of : as default value separator in some tests/ directories. 2022-09-07 14:49:17 +00:00
value_class
variable Report fewer duplicate errors for invalid superinitializers 2021-11-08 18:53:42 +00:00
variance [cfe] Refactor bounds checking 2022-05-17 14:36:19 +00:00
vm [tests] Avoid small --optimization-counter-threshold in tests 2022-10-10 21:04:18 +00:00
void master branch to main 2021-09-15 06:22:23 +00:00
why_not_promoted Rename some more incorrectly named tests. 2021-06-03 00:49:54 +00:00
await_type_error_test.dart
await_type_test.dart
dynamic_type_helper.dart
explicit_type_instantiation_parsing_test.dart Remove references to constructor-tearoff experiment. 2021-11-11 14:04:43 +00:00
language.status [testing] Remove --compiler=none from test.py 2022-10-19 08:09:58 +00:00
language_analyzer.status
language_dart2js.status Add a language test to check situations where implicit call tearoff does not occur. 2022-02-15 16:37:50 +00:00
language_dart2wasm.status [dart2wasm] Initial commit for the Dart-to-WasmGC compiler. 2022-02-16 11:11:14 +00:00
language_dartdevc.status [ddc] Ensure status file entries are consistent 2022-08-08 17:23:50 +00:00
language_kernel.status [test] Remove obsolete Skips from status files 2022-08-11 08:41:05 +00:00
language_precompiled.status [vm] Fix yield in async* to check if the stream was canceled while generator was suspended 2022-07-15 14:09:20 +00:00
language_spec_parser.status
language_vm.status [vm] Fix yield in async* to check if the stream was canceled while generator was suspended 2022-07-15 14:09:20 +00:00
library1.dart
library2.dart
library10.dart
library11.dart
library12.dart
record_literal_problems_test.dart [parser] Empty record 2022-10-06 06:34:58 +00:00
record_literal_test.dart [parser] Record literals can be const and one-element only 2022-08-30 10:54:08 +00:00
record_type_empty_problems_test.dart [tests] Split out tests involving Record.empty 2022-09-21 08:05:47 +00:00
record_type_problems_test.dart [tests] Split out tests involving Record.empty 2022-09-21 08:05:47 +00:00
record_type_test.dart Revert "Reland "[cfe,corelib] Add class 'Record' to the core library"" 2022-09-19 13:52:01 +00:00
static_type_helper.dart [test] Fix constructor tear off tests in language 2021-07-23 08:41:09 +00:00
syntax_helper.dart Additional language tests for parsing behaviors around type arguments. 2021-05-18 14:06:13 +00:00