Commit Graph

15405 Commits

Author SHA1 Message Date
Vyacheslav Egorov e9586a5d14 [vm] Update workaround for Android Kernel bug (b089d4f).
Previous workaround was only compilable by GCC - new one is compilable
with both but is less robust because theoretically compiler can simply
use registers r0-r2 as temporaries whenever it desires.

Bug: https://github.com/flutter/flutter/issues/22172

Change-Id: Ic73fde8d3342c1455ab01ed8b7d4b267aebda136
Reviewed-on: https://dart-review.googlesource.com/76021
Reviewed-by: Zach Anderson <zra@google.com>
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
2018-09-24 20:16:08 +00:00
Aart Bik 19e844ed5b [dart/fuzzing] Use current directory as SDK top (by default)
Rationale:
DART_TOP can now be provided through switch, as
an environment variable or, by default, using the
current directory from which script is started.
This simplifies set up in cluster runs.
Change-Id: Icb4f720b7a7bb7b349ce158d39574c271132c224
Reviewed-on: https://dart-review.googlesource.com/76201
Reviewed-by: Alexander Thomas <athom@google.com>
Commit-Queue: Aart Bik <ajcbik@google.com>
2018-09-24 19:02:01 +00:00
Alexander Markov 62d154f6a3 [vm/bytecode] Record null-initialized fields in bytecode
If a field is initialized with null (either explicitly or implicitly),
field store can be omitted in bytecode. In such case, bytecode should
still convey the information about this initialization to VM for
field guards to work correctly.

Change-Id: I1fd45b858c3c521b97fa5dbffe0e15b1ea75d92f
Reviewed-on: https://dart-review.googlesource.com/76060
Reviewed-by: Zach Anderson <zra@google.com>
Reviewed-by: Régis Crelier <regis@google.com>
2018-09-24 17:56:35 +00:00
Zach Anderson dba8b37d38 [vm] Benchmark for reading kernel bytecode
Change-Id: I07617a553193495fcc4fc0ce4a6382996ee7dc51
Reviewed-on: https://dart-review.googlesource.com/75821
Commit-Queue: Zach Anderson <zra@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
2018-09-24 15:54:49 +00:00
Aske Simon Christensen 8385c36d97 Move all int literal parsing and checking code together.
Report error for negated hex literals > 2^63.

Optimized common case of web int literal exactness check.

Fixes https://github.com/dart-lang/sdk/issues/33311

Change-Id: Ib72b2dbb21e42489ee2d06b17302daf83d560df1
Reviewed-on: https://dart-review.googlesource.com/72802
Commit-Queue: Aske Simon Christensen <askesc@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
2018-09-24 11:17:36 +00:00
Alexander Markov 654c4babc8 [vm/bytecode] Fix a couple of assertions when running with bytecode
Also, add more tests to dartkb bots.

Change-Id: I6fbcbe73d6b9065ec03e64bf150b4ebd742e4d28
Reviewed-on: https://dart-review.googlesource.com/75981
Commit-Queue: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Régis Crelier <regis@google.com>
2018-09-21 22:54:39 +00:00
Ryan Macnak 93dcfaa289 [vm, gc] Concurrent marking.
Fall back to parallel marking
 - on IA32 (barrier unimplemented)
 - when write_protect_code is enabled (protection dependency on marking state unimplemented)

Bug: https://github.com/dart-lang/sdk/issues/34002
Change-Id: If093f24e4dc6bf29f407cc45e95bb2274fc53dcf
Reviewed-on: https://dart-review.googlesource.com/71389
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-09-21 21:30:33 +00:00
Zach Anderson e06ef81efa [vm] Unconditionally generate interpreter stubs
This allows building a core-jit snapshot that can support running with
--enable-interpreter even when the core-jit snapshot is not generated
with --enable-interpreter.

Change-Id: If6ce787baa9f11fef929ee496b54d68598cba520
Reviewed-on: https://dart-review.googlesource.com/75989
Reviewed-by: Régis Crelier <regis@google.com>
Commit-Queue: Zach Anderson <zra@google.com>
2018-09-21 21:00:40 +00:00
Régis Crelier 012b7050e5 [VM interpreter] Use a helper to test entry frame pc marker.
Change-Id: I6256f0337d2ab84722d32d4e6af97b966c619162
Reviewed-on: https://dart-review.googlesource.com/75987
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Régis Crelier <regis@google.com>
2018-09-21 20:10:45 +00:00
Aart Bik 20342cea27 [vm/compiler] added compilation trace tracer
Rationale:
When building with "--precompile trace.txt", the current
version silently processes the file without any feedback
on misspelled names, errors, or the like. This flag adds
the ability to get some feedback.
Change-Id: Iccf4b53c7091aac8be5e207eaf00273ceeeda4f3
Reviewed-on: https://dart-review.googlesource.com/75790
Commit-Queue: Aart Bik <ajcbik@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
2018-09-21 18:01:20 +00:00
Alexander Markov 19e2040f35 [vm] Cleanup the ability to specify entry points via JSON and text files
Entry points files (both JSON and text) are replaced with
@pragma("vm:entry-point") annotations.

This change removes obsolete:
* --embedder_entry_points_manifest option in gen_snapshot;
* --entry-points option in gen_kernel and frontend_server;
* --print_precompiler_entry_points VM option;
* 'entry_points' argument in Dart_Precompile() API.

Change-Id: I503f50f51df27e8e9635388c013058686b3b6ff1
Reviewed-on: https://dart-review.googlesource.com/75793
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2018-09-21 16:51:48 +00:00
Zach Anderson 51f2dac483 Reland: [vm] Adds a benchmark for Dart_LoadLibraryFromKernel
Adds missing free(), and skips on Windows.

Change-Id: Ie187172b1b9b276477e10d10f2b7f492f009ebfd
Reviewed-on: https://dart-review.googlesource.com/75920
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Zach Anderson <zra@google.com>
2018-09-21 15:48:17 +00:00
Samir Jindel 82c784a60f Revert "[vm] Adds a benchmark for Dart_LoadLibraryFromKernel"
This reverts commit fee8efa3d6.

Reason for revert: Breaks many VM bots.

Original change's description:
> [vm] Adds a benchmark for Dart_LoadLibraryFromKernel
> 
> Change-Id: I71c9d6a1cd9d07f554bbeb02c682de2c771ddb3e
> Reviewed-on: https://dart-review.googlesource.com/75787
> Commit-Queue: Zach Anderson <zra@google.com>
> Reviewed-by: Siva Annamalai <asiva@google.com>
> Reviewed-by: Alexander Markov <alexmarkov@google.com>

TBR=alexmarkov@google.com,zra@google.com,asiva@google.com

Change-Id: If8c3f3aca36f1a65c57592961e7adc449c4c7e78
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://dart-review.googlesource.com/75860
Reviewed-by: Samir Jindel <sjindel@google.com>
Commit-Queue: Samir Jindel <sjindel@google.com>
2018-09-21 10:48:42 +00:00
Zach Anderson fee8efa3d6 [vm] Adds a benchmark for Dart_LoadLibraryFromKernel
Change-Id: I71c9d6a1cd9d07f554bbeb02c682de2c771ddb3e
Reviewed-on: https://dart-review.googlesource.com/75787
Commit-Queue: Zach Anderson <zra@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
2018-09-20 22:32:34 +00:00
Alexander Markov 46ec629096 [vm/bytecode] Trigger JIT-compilation from interpreter
Performance on Richards benchmark (no bytecode in platform, release build):

Interpreter (--enable-interpreter --compilation-counter-threshold=-1)
Richards(RunTime): 177228.34433333334 us.

Interpreter + bytecode compilation with default threshold 10 (--enable-interpreter)
Richards(RunTime): 930.8050725919032 us.
Varies from run to run, spikes up to 4178.005912317328 (no OSR yet, only background compilation).

Bytecode compilation (--use-bytecode-compiler)
Richards(RunTime): 830.1371626556016 us

Default pipeline:
Richards(RunTime): 880.1557113946327 us.

Numbers on Richards benchmark (platform with bytecode, release build):

Interpreter (--enable-interpreter --compilation-counter-threshold=-1)
Richards(RunTime): 354553.6346666667 us.

Interpreter + compilation with default threshold 10 (--enable-interpreter)
Richards(RunTime): 934.7108855140189 us.

Bytecode compilation (--use-bytecode-compiler)
Richards(RunTime): 822.74178403949 us.


Change-Id: Ic13e9f7c7d98f2930e6de4c4f74bac4d28478249
Reviewed-on: https://dart-review.googlesource.com/75781
Reviewed-by: Zach Anderson <zra@google.com>
Reviewed-by: Régis Crelier <regis@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2018-09-20 20:57:08 +00:00
Aart Bik cbf60679eb [vm/fuzzer] Migrated driver from Python to Dart.
Rationale:
Remove last part of Python in favor of Dart. Note that
this is still under heavy development, with many new
features planned. But it is a runnable system now which
we be deployed from the comfort of your own desktop or
on a cluster if needed.
Change-Id: I96fc8973bcc00c69849434087c57ff897d01b79a
Reviewed-on: https://dart-review.googlesource.com/75621
Commit-Queue: Aart Bik <ajcbik@google.com>
Reviewed-by: Jonas Termansen <sortie@google.com>
2018-09-20 17:41:59 +00:00
Régis Crelier e95d944f5f [VM interpreter] Propagate error from invoked compiled function to interpreter caller.
Change-Id: Ie72cbca424ff843f16a276c6877bd7d428aa8e8c
Reviewed-on: https://dart-review.googlesource.com/75424
Reviewed-by: Zach Anderson <zra@google.com>
Commit-Queue: Régis Crelier <regis@google.com>
2018-09-20 17:07:01 +00:00
Alexander Markov 3263550e86 [vm] Decouple bytecode reading from compilation
This way requests to compile won't end prematurely after reading
bytecode if interpreter is enabled.

Change-Id: Ic06cae98ea65bc4656ef491fbd306d34b0e1ef4c
Reviewed-on: https://dart-review.googlesource.com/75628
Reviewed-by: Zach Anderson <zra@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2018-09-20 16:22:33 +00:00
Jens Johansen d560887ae5 Fix TypeError in Observatory
Get rid of stuff like this (that at least showed up in debug builds):
```
Unexpected exception:

TypeError: 604.0795288085938: type 'JSDouble' is not a subtype of type
'int'

StackTrace:

main.dart.js 3527:17   Object.wrapException
main.dart.js 4000:15   Object.intTypeCheck
main.dart.js 55623:39  HtmlElement._varsTop$1
main.dart.js 55631:23  HtmlElement.dart.DebuggerFrameElement._onScroll$1
main.dart.js 3941:14   Object.eval
[...]
```

(Note that I disabled minification in the example above).

Change-Id: Id79e726c3229ba96b1df5db7d4fb779e4be0913a
Reviewed-on: https://dart-review.googlesource.com/74623
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2018-09-20 06:59:44 +00:00
Jens Johansen 867c5271be Debugging dart in methods with dynamic type arguments
Before this CL, debugging code like this:
```
import "dart:developer";

main() {
  Foo foo = new Foo();
  foo.bar<dynamic, dynamic>(1, 2);
}

class Foo {
  bar<A, B>(A a, B b) {
    debugger();
    print("a: $a; b: $b");
  }
}
```

and trying to print for instance `a` or `b` when the debugger is stopped
in `bar` (e.g. `p a`) would yield a wrong result. I.e., this happends
when debugging methods taking type arguments, but where the type
arguments are all `dynamic`.

This also surfaces when hovering variables in e.g. VSCode with the
Dart Code plugin.

Fixes: #34353.
Change-Id: Iddf1ed119700fea61a0e29eb6ad763a8d2b657a0
Reviewed-on: https://dart-review.googlesource.com/74583
Reviewed-by: Alexander Aprelev <aam@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2018-09-20 06:33:27 +00:00
asiva 929b2fbc55 Adjust status file to account for CustomIsolates test passing now.
Change-Id: Idbcc6456154f01698783890afca068af07782317
Reviewed-on: https://dart-review.googlesource.com/75630
Reviewed-by: Siva Annamalai <asiva@google.com>
2018-09-20 02:26:49 +00:00
asiva a0776096b9 Cleanup some of the build rules to not use Dart 1 mode.
Change-Id: I799ae7e910b90047a76151e47fc4c46d20f46ff7
Reviewed-on: https://dart-review.googlesource.com/74493
Commit-Queue: Siva Annamalai <asiva@google.com>
Reviewed-by: Zach Anderson <zra@google.com>
Reviewed-by: Samir Jindel <sjindel@google.com>
2018-09-19 22:23:33 +00:00
Jason Simmons 3463f94ed9 Delete any existing version of a DevFS file before overwriting the file
Consumers of the file may have open file mappings, and those mappings must not
see a mix of old and new content as the new file is written.

Fixes https://github.com/flutter/flutter/issues/21858

Change-Id: Ia4d6cee53cceaa04bec01a2af56c76fad05dcad8
Reviewed-on: https://dart-review.googlesource.com/75620
Commit-Queue: Alexander Aprelev <aam@google.com>
Reviewed-by: Alexander Aprelev <aam@google.com>
2018-09-19 21:43:19 +00:00
Alexander Markov a386c07281 [vm/aot] Add extra call specialization pass
The extra call specialization pass after constant propagation is able to
replace more calls in AOT, as constant propagation removes unreachable
code and subsequent type propagation infers more accurate types.

Performance improvement (armv8):
DartMicroBench.IntPower3 196.4%
DartMicroBench.IntPower2 273.1%

Change-Id: I7076608f828484c4045e7a7b605ed8ff7981a868
Reviewed-on: https://dart-review.googlesource.com/75564
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2018-09-19 20:49:28 +00:00
Aart Bik a890d95a26 [vm/compiler] Avoid !(x>y) -> x<=y on fp operands.
Rationale:
Two closely related bugs found with fuzz testing!
NaN must be preserved. We may improve comparisons
on fp in the long run, but this CL avoids the
incorrect optimization.

Bug: https://github.com/dart-lang/sdk/issues/34467
     https://github.com/dart-lang/sdk/issues/34466

Change-Id: Ie3667632eea2583098cf5f86a723ab4304d5d6c5
Reviewed-on: https://dart-review.googlesource.com/75242
Commit-Queue: Aart Bik <ajcbik@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-09-19 19:58:09 +00:00
Alexander Markov bc79674bc1 [vm/aot] Fix inferred type of implicitly initialized final fields
Bug: https://github.com/flutter/flutter/issues/21957
Change-Id: I63e1b6787761aaf7acfda653775518755ffcb0b5
Reviewed-on: https://dart-review.googlesource.com/75382
Commit-Queue: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-09-19 17:54:57 +00:00
Daniel Hillerström de984e58cb Type checking for redirecting factories.
Implements static semantics for redirecting factories (c.f. §10.6.2 of
the specification). This CL does not include inference of actual type
arguments on redirectees, that is it does not handle the case where
type arguments have been omitted on the redirectee as in this
following example program:

  class A<T> {
    factory A() = B;
  }
  class B<T> implements A<T> {
    B();
  }

Closes https://github.com/dart-lang/sdk/issues/32988.

Also resolves the second part of
https://github.com/dart-lang/sdk/issues/30579.

Can possibly also close https://github.com/dart-lang/sdk/issues/11578.

Change-Id: I5f1fb60510ba6cdc917321239819c1f817b5b85d
Reviewed-on: https://dart-review.googlesource.com/74580
Commit-Queue: Daniel Hillerström <hillerstrom@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2018-09-19 06:20:20 +00:00
Alexander Markov d44ffba254 [vm/tfa] Stop accepting non-empty entry points json files
Entry points JSON files are deprecated (replaced with pragmas).
So TFA should not require them. As a sanity check, it will complain
if an entry points JSON file is not empty.

Change-Id: Ie64121ab4cdd0c330f81a8cb71a671e1df82f136
Reviewed-on: https://dart-review.googlesource.com/75423
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2018-09-19 01:41:30 +00:00
Régis Crelier 30f0026022 [VM runtime] Fix type test: C is a subtype of C<FutureOr> (fixes #34482).
In other words, C<dynamic> <: C<FutureOr<dynamic>>,
because dynamic <: FutureOr<dynamic>.

Add regression test.

Change-Id: I64bcb3b6926143d3176f0afcd1f28d30582309fa
Reviewed-on: https://dart-review.googlesource.com/75400
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Commit-Queue: Régis Crelier <regis@google.com>
2018-09-19 01:35:40 +00:00
Aart Bik 4eb879133a Revert "[vm/compiler] Restrict !(x>y) -> (x<=y) to integral x,y"
This reverts commit 0471d7e3a1.

Reason for revert: crashes are happening on the Nullable test
                   I will fix this in the follow-up CL that was
                   already pending

Original change's description:
> [vm/compiler] Restrict !(x>y) -> (x<=y) to integral x,y
> 
> Rationale:
> Bug found with fuzz testing! For FP, behavior around
> NaN must be preserved.
> 
> Bug: https://github.com/dart-lang/sdk/issues/34466
> 
> 
> Change-Id: Ia4ed831fc130e58318edb838bd46e30b93f62ff3
> Reviewed-on: https://dart-review.googlesource.com/75208
> Commit-Queue: Aart Bik <ajcbik@google.com>
> Reviewed-by: Vyacheslav Egorov <vegorov@google.com>

TBR=vegorov@google.com,alexmarkov@google.com,sjindel@google.com,asiva@google.com,ajcbik@google.com

Change-Id: Ie2e233a612cbe00478475d086eec87ff2b3d652b
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: https://github.com/dart-lang/sdk/issues/34466
Reviewed-on: https://dart-review.googlesource.com/75383
Reviewed-by: Aart Bik <ajcbik@google.com>
Commit-Queue: Aart Bik <ajcbik@google.com>
2018-09-18 19:20:33 +00:00
Ryan Macnak 0d71b8aa40 Revert "[vm] Add a timeline stream for recording the zone high watermark."
This ended up not being helpful, and just makes the timeline harder to read.

This reverts commit 8590919ca6.

Change-Id: I0063dea0c4f6b37bf66a54df9b1c20a73dea40d9
Reviewed-on: https://dart-review.googlesource.com/75209
Reviewed-by: Ben Konyi <bkonyi@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2018-09-18 17:06:03 +00:00
Aart Bik 0471d7e3a1 [vm/compiler] Restrict !(x>y) -> (x<=y) to integral x,y
Rationale:
Bug found with fuzz testing! For FP, behavior around
NaN must be preserved.

Bug: https://github.com/dart-lang/sdk/issues/34466


Change-Id: Ia4ed831fc130e58318edb838bd46e30b93f62ff3
Reviewed-on: https://dart-review.googlesource.com/75208
Commit-Queue: Aart Bik <ajcbik@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-09-17 23:39:12 +00:00
Vyacheslav Egorov 6cc9d5325b [vm] Use vmovdr instead of vmovsr when loading from Float64List
vmovsr can't access halfs of D16 and above.

Fixes https://github.com/dart-lang/sdk/issues/34462

Bug: 34462
Change-Id: I55042ff4e143b5a8d1ac6f4e6f5b888ec8d588ab
Reviewed-on: https://dart-review.googlesource.com/75021
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Zach Anderson <zra@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2018-09-17 23:34:47 +00:00
Vyacheslav Egorov c8e26d68cb [vm/compiler] Improve allocation sinking precision.
When we added support for sinking allocation of contexts
we forgot to update IsSafeUse method - meaning that non-escaping
objects stored into sinkable contexts would not be considered
sinkable.

This change rectifies the problem. With this change the method

test_vm_field() {
  var obj;
  inner() => obj.x = 42;
  var a = new V();
  obj = a;
  var t1 = a.x;
  var t2 = inner();
  return a.x + t1 + t2;
}

Compiles down to

test_vm_field() => 84;

Before this change we would not sink allocation of V.

R=alexmarkov@google.com

Change-Id: If431e58fe1d958b31ea597e35cba3856558a0cca
Reviewed-on: https://dart-review.googlesource.com/75222
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
2018-09-17 23:24:45 +00:00
Vyacheslav Egorov f8a3d802d0 Revert "[vm/kernel] Preserve strong mode types in async transformation"
This reverts commit eec96f9076.

Revert "[vm/kernel] In async transformation check if strongMode is on."

This reverts commit 348ed30efd.

Reason for revert: getStaticType is unreliable in Kernel

R=alexmarkov@google.com

Change-Id: I08b914f947a00923491bb610ed74d6348882554f
Reviewed-on: https://dart-review.googlesource.com/75220
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
2018-09-17 22:58:55 +00:00
Ryan Macnak 0c80630577 [vm] Fix ia32/x64 gcc build.
(The simulators are broken at runtime.)

Change-Id: I10089cad44fca57145cfdd598342279f07c6d7fd
Reviewed-on: https://dart-review.googlesource.com/75205
Reviewed-by: Régis Crelier <regis@google.com>
Reviewed-by: Zach Anderson <zra@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2018-09-17 22:27:43 +00:00
Ryan Macnak c1ea77a3a0 [vm] Extend --trace_deoptimization to cover the lazy deopt causes.
Change-Id: I09843815297fe13ca2f6880e794cc26c76dc6267
Reviewed-on: https://dart-review.googlesource.com/75126
Reviewed-by: Aart Bik <ajcbik@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2018-09-17 22:18:12 +00:00
Zach Anderson 6d705d5d4a [dart:io,fuchsia] Fix edge-triggering emulation for read events
Read events should only be re-enabled when all available bytes have
been read, or there is an error.

related: FL-109
Change-Id: Iefd4ff3d7f4b79c08ee3d2bca7cdfef70de66ce9
Reviewed-on: https://dart-review.googlesource.com/75200
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Ben Konyi <bkonyi@google.com>
2018-09-17 20:44:52 +00:00
Ryan Macnak 29d36dd8d0 [vm, kernel] Fast-path for reading non-generic types.
Change-Id: I24d598aa66efa414b04e364bf5dce10bdc917904
Reviewed-on: https://dart-review.googlesource.com/75122
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Zach Anderson <zra@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
2018-09-17 20:28:23 +00:00
Ryan Macnak 57df49576d [vm] Fix -O0 build.
Change-Id: I16a887a14838787a9f9fe15fd34d3ca6295a5d33
Reviewed-on: https://dart-review.googlesource.com/75203
Reviewed-by: Régis Crelier <regis@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2018-09-17 18:09:14 +00:00
Ryan Macnak 1741448392 [vm] Skip Profiler_FunctionInline on Mac.
Bug: https://github.com/dart-lang/sdk/issues/34493
Change-Id: If06ef55201e57f1e5d19de15a94e260b7f09a075
Reviewed-on: https://dart-review.googlesource.com/75202
Reviewed-by: Zach Anderson <zra@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2018-09-17 18:09:04 +00:00
Alexander Markov 050561fd82 [vm] Relax recently added assertion in Dart 1 mode
This CL relaxes assertion added recently in
c6c4748185 as it could fail in Dart 1
mode.

This should fix 'checked vm tests' step on debug bots which still runs
tests in Dart 1 mode.

Change-Id: Ifdd6e27087b44822ce9cd5be48750af1c7d45a8e
Reviewed-on: https://dart-review.googlesource.com/75201
Reviewed-by: Zach Anderson <zra@google.com>
Reviewed-by: Régis Crelier <regis@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2018-09-17 17:36:00 +00:00
Alexander Markov 76091c13db [vm/bytecode] Add PushNull, PushTrue, PushFalse and PushInt bytecodes
These bytecode instructions are added in order to shrink constant pools
and reduce time spent for reading constant pool entries.

Change-Id: I8522f73dc7a6236969ac0422c6cb89b945559b2d
Reviewed-on: https://dart-review.googlesource.com/75125
Reviewed-by: Zach Anderson <zra@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2018-09-15 17:55:46 +00:00
Alexander Markov c6c4748185 [vm/bytecode] Bytecode compilation
Change-Id: I09192e4e929a397920c217b605580f8c4880e7c2
Reviewed-on: https://dart-review.googlesource.com/74002
Commit-Queue: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
Reviewed-by: Régis Crelier <regis@google.com>
2018-09-14 22:02:29 +00:00
Ryan Macnak 78d9a281d3 [vm, arm] Globally block LR for register allocation.
Flutter Gallery release:
Instructions(CodeSize): 5668368 -> 5670880 (+0.044%)

Fixes #34411

Bug: https://github.com/dart-lang/sdk/issues/34411
Change-Id: I5281ac9609ec5953cdaa881226f7034a5697d0ce
Reviewed-on: https://dart-review.googlesource.com/74923
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-09-14 21:58:29 +00:00
Alexander Aprelev 078be2cb61 [vm] Add library private key to the Class hash function for reload.
This reduces isolate reload time on a given sample from ~2 seconds to ~200 milliseconds.
Remove ASSERT - you can have replacement finalized when original was non-finalized

Bug: https://github.com/dart-lang/sdk/issues/34461
Change-Id: I39dc5d67e97bd7c0d654cd751b6829b00337e967
Reviewed-on: https://dart-review.googlesource.com/74961
Commit-Queue: Alexander Aprelev <aam@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2018-09-14 20:45:45 +00:00
Vyacheslav Egorov 229d793602 [vm/compiler] Support materializing unboxed variables when entering catch.
Previously we tried to rely on the assumption that all variables would be
boxed - so the machinery for setting correct catch-entry state only
supported tagged values and constants. However this both leads to worse code
and is not entirely correct assumption.

This also:

- renames various confusingly named classes: we move away from talking
about "catch entry state" to "catch entry moves" - because we only
record a subset of moves that needs to be performed and that does
not describe the whole state;
- refactors a bunch of associated code to be more readable and maintainable;
- adds documentation about catch implementation in optimized code
to runtime/docs/compiler;

Fixes https://github.com/flutter/flutter/issues/21685.

Change-Id: I03ae361a1bb7710acbd9f661ae014e663a163c59
Reviewed-on: https://dart-review.googlesource.com/74860
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
2018-09-14 17:39:12 +00:00
Vyacheslav Egorov eec96f9076 [vm/kernel] Preserve strong mode types in async transformation
Async transformation uses dynamic variables in few places (e.g.
for temporaries and for incomming arguments) - which creates
not strongly typed AST with method invocations having dynamic
receivers and non-null interface targets at the same time.

To maintain strong typedness of the AST we insert unsafeCast
when accessing the temporaries.

Bug: https://github.com/dart-lang/sdk/issues/34463
Change-Id: I11e38c128645ebc8acb0c982a80fe4c5c4036673
Reviewed-on: https://dart-review.googlesource.com/75000
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
2018-09-14 17:19:29 +00:00
Peter von der Ahé 56c2ed5e9e Avoid deprecation in source_loader
Change-Id: Idf3250bd8fcc56f7d52e3f245671d2c1b91d0956
Reviewed-on: https://dart-review.googlesource.com/63144
Reviewed-by: Aske Simon Christensen <askesc@google.com>
2018-09-13 08:10:15 +00:00
Ryan Macnak 02613eee3a [vm] Mark various service tests as now passing on -capp_jitk.
Change-Id: I628ca476e7365a3af27834496c543a3926af10c3
Reviewed-on: https://dart-review.googlesource.com/74674
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2018-09-12 22:55:09 +00:00