dart-sdk/tests
Alexander Markov 7b50b7a8e6 [vm/bytecode] Bootstrapping VM from bytecode
Previously, core snapshot was generated from AST
(because --enable-interpreter/--use-bytecode-compiler was not specified
when building core snapshot).

As the result, CL
https://dart.googlesource.com/sdk/+/da8cb470cc94830a98d49532e8d5d1a5b3d80f8b
which declared libraries in bytecode also removed bytecode entirely from
core snapshot in Dart SDK.

This CL enables bytecode by default if --bytecode argument is
specified for gn.py. This enables JIT compiler from bytecode
(interpreter is still disabled by default but can be enabled
using --enable-interpreter). Core snapshot and other
snapshots now have bytecode.

This change revealed a bunch of bugs which are fixed in this CL:

* _Closure fields were treated as unboxing candidates which triggered
  assertion in LoadFieldTOS in interpreter.

* Several places should load class declarations if they are not loaded yet.

* Canonicalization of TypeRef objects which are not fully initialized
  may cause duplicate entries in the hash table of canonical
  TypeArguments. This triggers assertions when hash table is rehashed.
  The solution is to avoid canonicalization of non-root recursive types
  and recursive type arguments. Also, TypeRef::Canonicalize and
  TypeRef::Hash are reverted to assert and work only if type was set.

* Native wrapper classes are eagerly stamped as type-finalized
  which caused assertion failures when reading their class declarations
  from bytecode.

* When building flow graph for FFI trampolines kernel offset of library
  (which is now declared in bytecode) was queried. Added special case
  to Function::KernelDataProgramOffset().

* In interpreter-only mode with simulator (e.g. SIMARM64) if simulator
  is not called before code is interrupted with stack overflow check,
  simulator returns get_sp() = 0, which was treated as stack overflow.

* test standalone_2/io/platform_resolved_executable_test.dart
  spawns sub-process but it didn't pass VM options.

Change-Id: I81bc4f1a4c6725cfa246a435ebe5d8abe43abc67
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/107199
Commit-Queue: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Régis Crelier <regis@google.com>
2019-06-26 18:25:26 +00:00
..
angular
co19_2 [dart2js] Add support for BabelJS to test.py 2019-05-29 08:39:44 +00:00
compiler [dart2js] Define canonical recipes in terms of recipe_syntax. 2019-06-25 22:59:24 +00:00
corelib_2 Remove appJit and precompiled compiler options 2019-06-24 16:07:27 +00:00
dart
ffi [vm/ffi] SimDBC on Arm64 Android 2019-06-26 10:43:45 +00:00
kernel [tests] Avoid use of $strong because it is always true now 2019-05-16 17:41:27 +00:00
language_2 Add language_2 tests covering some cases of definite assignment. 2019-06-25 20:43:24 +00:00
lib_2 Remove appJit and precompiled compiler options 2019-06-24 16:07:27 +00:00
modular [dartdevc] add regression test for consts in outlines 2019-06-19 15:44:35 +00:00
search
standalone [VM-Runtime] set environment when creating detached process 2019-03-12 21:09:35 +00:00
standalone_2 [vm/bytecode] Bootstrapping VM from bytecode 2019-06-26 18:25:26 +00:00
light_unittest.dart
README Move the test runner (i.e. "test.dart"/"test.py") to pkg/. 2019-06-14 23:35:10 +00:00

Run Existing Tests
==================

See the output of

  ../tools/test.py --help

for how to run tests.

See also

  https://code.google.com/p/dart/wiki/Building#Testing

for detailed examples.

Create New Tests
================

See comments above

  factory StandardTestSuite.forDirectory

in

  ../pkg/test_runner/lib/src/test_suite.dart

for the default test directory layout. By default test-file names must
end in "_test.dart", but some test suites, such as ./co19, subclass
StandardTestSuite and override this default.

See comments at the beginning of

  ../pkg/test_runner/lib/src/multitest.dart

for how to create tests that pass by failing with a known error. For
example,

  ...
  int x = "not an int"; //# 01: static type warning
  ...

as part of a test will only pass the "--compiler dart2analyzer" test if
the assignment generates a static type warning.