Commit Graph

13561 Commits

Author SHA1 Message Date
Ryan Macnak e0c09211fc Revert "[vm] Add a simple compactor."
This reverts commit 5bdffcd32e.

Reason for revert: Failures on DBC, timeouts on hot reload and opt counter stress bots.

Original change's description:
> [vm] Add a simple compactor.
> 
> The compactor copies all live objects in old space to fresh pages, places forwarding pointers in the old objects, forwards all the pointers, then frees the old pages. This has a high space overhead. It is not meant for use in production, but meant to test that the VM is properly set up to handle old-space objects moving.
> 
> Large page objects and instruction objects are not moved.
> 
> Bug: https://github.com/dart-lang/sdk/issues/30978
> Change-Id: Ia42683fd5e27a33702aa5e83bece803a8b005a4b
> Reviewed-on: https://dart-review.googlesource.com/13624
> Commit-Queue: Ryan Macnak <rmacnak@google.com>
> Reviewed-by: Zach Anderson <zra@google.com>
> Reviewed-by: Erik Corry <erikcorry@google.com>

TBR=rmacnak@google.com,zra@google.com,asiva@google.com,erikcorry@google.com

Change-Id: I4fda673561532b604d97b9b02189c030844d969d
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: https://github.com/dart-lang/sdk/issues/30978
Reviewed-on: https://dart-review.googlesource.com/14680
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2017-10-17 21:57:19 +00:00
Vyacheslav Egorov 826b48ee8a [VM] Clean up typing violations in the numerics implementation.
Bug: https://github.com/dart-lang/sdk/issues/31052
Change-Id: I93d7bca2ff627431f1a316bb01a5dada1b5f2354
Reviewed-on: https://dart-review.googlesource.com/14522
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Kevin Millikin <kmillikin@google.com>
2017-10-17 21:00:24 +00:00
Ryan Macnak 5bdffcd32e [vm] Add a simple compactor.
The compactor copies all live objects in old space to fresh pages, places forwarding pointers in the old objects, forwards all the pointers, then frees the old pages. This has a high space overhead. It is not meant for use in production, but meant to test that the VM is properly set up to handle old-space objects moving.

Large page objects and instruction objects are not moved.

Bug: https://github.com/dart-lang/sdk/issues/30978
Change-Id: Ia42683fd5e27a33702aa5e83bece803a8b005a4b
Reviewed-on: https://dart-review.googlesource.com/13624
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Zach Anderson <zra@google.com>
Reviewed-by: Erik Corry <erikcorry@google.com>
2017-10-17 20:44:02 +00:00
Ryan Macnak 522b9088d2 [vm] Add missing visit of Isolate::ic_miss_code_.
This field is only used by AOT.

Bug: https://github.com/dart-lang/sdk/issues/30978
Change-Id: I85ef99c4bf23af8f8b48e6bbbb019d84dc9931fe
Reviewed-on: https://dart-review.googlesource.com/14503
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2017-10-17 19:46:21 +00:00
Vyacheslav Egorov abefb7b432 [kernel] Assign proper types and interface targets to nodes created by async transformer.
Bug: https://github.com/dart-lang/sdk/issues/31070
Change-Id: Iaedbd425fcb6d243c0bfa93495335658553a9301
Reviewed-on: https://dart-review.googlesource.com/14481
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Kevin Millikin <kmillikin@google.com>
2017-10-17 17:44:00 +00:00
Siva Chandra 5558fc4370 Add a new VM object type KernelProgramInfo.
This new object points to program wide data like string offsets,
string data etc. It also holds an array of pointers to all Script
objects corresponding scripts in the program's source table.

This new object type is required for two reasons:
1. The Script objects now have a number of fields which point to
program wide data. All Script objects point to the same data in the
VM heap. By introducing an indirection via this new object, we reduce
the number of pointers in Script objects.
2. Lazy loading of VM objects - Kernel nodes of
entities like fields and functions have a field which point to the
source file in which they are defined. This entry is an index into
the program wide source table and helps in associating 
functions/fields with their actual source location. When lazy loading
functions and fields, the pre-loaded script objects in the
program's KernelProgramInfo help in associating the functions and
fields with the correct source script at load time.

Change-Id: Id863284ae7dd98b0832e5dfc115dabad1ed762d8
Reviewed-on: https://dart-review.googlesource.com/13920
Commit-Queue: Siva Chandra <sivachandra@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
2017-10-17 16:57:12 +00:00
Peter von der Ahé 7e40ae990b compile_platform should work when there's no checked-in dart binary.
Change-Id: Ib3338e616b05b9b1a7462c9f484402faca0fc13b
Reviewed-on: https://dart-review.googlesource.com/13983
Commit-Queue: Peter von der Ahé <ahe@google.com>
Reviewed-by: Zach Anderson <zra@google.com>
2017-10-17 11:29:50 +00:00
Martin Kustermann 5bf78540d7 Fix to "Clear flow graph type propagator information when winden-to-int32"
Clear out the *usages* of the widned instructions.

Change-Id: Id879d25e63e36312c051f13c8960dc9e2cc75e62
Reviewed-on: https://dart-review.googlesource.com/14201
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
2017-10-17 10:12:20 +00:00
Florian Loitsch 88f58757b1 Fix datetime for daylight-saving transitions.
Change-Id: I0ec35937a76ada32991b79bcdac57912731db489
Reviewed-on: https://dart-review.googlesource.com/14380
Reviewed-by: Florian Loitsch <floitsch@google.com>
2017-10-17 08:26:21 +00:00
Paul Berry 9a0e962e67 Add a kernel flag to represent generic contravariance.
This flag indicates when a procedure's return type makes contravariant
use of a class type parameter.  The front end will have to insert "as"
checks at any call sites that refer to such a procedure as their
interface target.  Placing the flag on the procedure will allow the
front end to determine whether the check is needed once, at the same
time as it's determining the need for covariant parameter checks,
rather than when compiling individual call sites.

Once this lands I will follow up with CLs that cause the front end to
set the flag appropriately, and to generate the necessary "as" checks.

Change-Id: I989fc702bc233384eb5ea8cd630c8efd384ab248
Reviewed-on: https://dart-review.googlesource.com/14365
Reviewed-by: Samir Jindel <sjindel@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2017-10-17 05:24:21 +00:00
Samir Jindel dd0d299dcb [kernel] Un-revert support for generic function types and removing type erasure.
Change-Id: I8032e4622a0756199528a61fdb59f3d0ec132d1f
Reviewed-on: https://dart-review.googlesource.com/14202
Commit-Queue: Samir Jindel <sjindel@google.com>
Reviewed-by: Régis Crelier <regis@google.com>
2017-10-16 23:17:09 +00:00
Samir Jindel dcf48efa23 [kernel] Un-revert support for generic closures in VM's kernel frontend.
Change-Id: I09dbcfdb13600fe694863db628b379bcf1f56684
Reviewed-on: https://dart-review.googlesource.com/14200
Commit-Queue: Samir Jindel <sjindel@google.com>
Reviewed-by: Régis Crelier <regis@google.com>
2017-10-16 22:27:03 +00:00
Régis Crelier 390c80234a [VM generic functions] Properly instantiate generic signatures by providing the
number of free function type parameters.
Add test and mark status files.

Change-Id: I081de7674693c5ac2071a33948d25aadfc65f4ae
Reviewed-on: https://dart-review.googlesource.com/13901
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Régis Crelier <regis@google.com>
2017-10-16 21:57:05 +00:00
Alexander Markov c9515f8745 [VM, Compiler] recognize more operations using static types
In --experimental-strong-mode:
* Handle more operations and combinations of input types.
* Provide a more accurate initial type for Phi instructions
  using type of a local variable.

Issue: https://github.com/dart-lang/sdk/issues/30480
Change-Id: Id9d991b1104b7c3fa43ed117106898ba448062cc
Reviewed-on: https://dart-review.googlesource.com/13900
Commit-Queue: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2017-10-16 21:23:37 +00:00
Régis Crelier fe22055f1c [VM] Capture instantiator when type parameter is referenced via string
interpolation in local function (fixes #31057).
Add regression test and mark status files.

Change-Id: I1258da09bd67f9c2ed9596b4ff93a1ad744cc505
Reviewed-on: https://dart-review.googlesource.com/13925
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Régis Crelier <regis@google.com>
2017-10-16 21:06:32 +00:00
Martin Kustermann 8dca2f344c Clear flow graph type propagator information when winden-to-int32
The CL [0] caused a bug since it was not safe to re-use type propagation
information after certain optimizations.  The winden-to-int32 is one
such optimization we found and we'll for now clear out the type
information on use sites explicitly after doing the widening.

(Hopefully there are no other optimizations causing the type propagation
 information to be no longer up-to-date.)

[0] https://github.com/dart-lang/sdk/commit/3cc0cea37e56bc5c590905f2da4bc5d9db9d73e6


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

Change-Id: I4c2ead9571c4007e8dbef3c0591cc836d71de35d
Reviewed-on: https://dart-review.googlesource.com/14060
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2017-10-16 18:23:47 +00:00
pq d184bcef2a Revert "Fix datetime for daylight-saving transitions."[TBR]
This reverts commit 95d3298ae7.

floitsch@ to revisit and re-apply tommorrow.

Bug:
Change-Id: I54b0851fdf4b931d1718f850ffe9d467495dc745
Reviewed-on: https://dart-review.googlesource.com/14080
Reviewed-by: Phil Quitslund <pquitslund@google.com>
2017-10-16 17:20:09 +00:00
Florian Loitsch 95d3298ae7 Fix datetime for daylight-saving transitions.
This is a temporary fix, until https://dart-review.googlesource.com/c/sdk/+/9300 works for iOS.

Fixes #30550.
BUG= http://dartbug.com/30550

Change-Id: Id8ef8508510d577023e32402d8ea6f257f2f16d1
Reviewed-on: https://dart-review.googlesource.com/14044
Reviewed-by: Régis Crelier <regis@google.com>
Commit-Queue: Florian Loitsch <floitsch@google.com>
2017-10-16 15:00:06 +00:00
Vyacheslav Egorov 0179aa14b3 [VM] Cleanup typing issues in mirrors_impl.dart
Bug: https://github.com/dart-lang/sdk/issues/31052
Change-Id: Ib209aed8d3e2871d8c5676b1c89a2ec2487649af
Reviewed-on: https://dart-review.googlesource.com/12447
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2017-10-16 10:30:26 +00:00
Vyacheslav Egorov 528bc96858 [VM] Cleanup static typing issues in IO implementation
Bug: https://github.com/dart-lang/sdk/issues/31052
Change-Id: I11788f267f99fe5a8d871b8500ca70abe04c7146
Reviewed-on: https://dart-review.googlesource.com/13040
Reviewed-by: Zach Anderson <zra@google.com>
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
2017-10-16 10:05:06 +00:00
Régis Crelier ae94cbf3d6 Revert "[kernel] Support generic closures in VM's kernel frontend."
This reverts commit a273ff8314.

Revert "[kernel] Support generic function types in the VM's kernel frontend."

This reverts commit 2cac57da09.

Revert "[kernel] Completely remove type erasure."

This reverts commit 3ffacb3814.

Change-Id: I8fdd40a6a8f34911028353f48249fdd4bf7dba76
Reviewed-on: https://dart-review.googlesource.com/13622
Reviewed-by: Alan Knight <alanknight@google.com>
Commit-Queue: Alan Knight <alanknight@google.com>
Commit-Queue: Régis Crelier <regis@google.com>
2017-10-12 20:01:11 +00:00
Alexander Markov 8e5c172b43 [Kernel, VM] Add internal kernel binary format version
This CL adds internal binary format version to kernel binaries.
Kernel readers in the front-end and VM verify that the reader's format
version matches the format version in the binary file.
This improves detection and diagnostics of stale kernel binary files.

Change-Id: Ic69b16057397a84627040bdd6420ffa1852a4b3f
Reviewed-on: https://dart-review.googlesource.com/13280
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Jens Johansen <jensj@google.com>
Reviewed-by: Kevin Millikin <kmillikin@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2017-10-12 16:50:21 +00:00
Régis Crelier a73e6832fc [VM generic functions] Remove empty_type_arguments singleton.
This empty vector was added in https://codereview.chromium.org/2818273002/
to properly instantiate generic signatures.
Later on, the implementation of HasInstantiatedSignature() was improved in
https://codereview.chromium.org/2965743002/ making the empty vector unnecessary.
However, the implementation of InstantiateFrom() will also need improvement
as noted by the added TODO.

Change-Id: I042a57b643390c789620b04122084db19ec445ea
Reviewed-on: https://dart-review.googlesource.com/13400
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Régis Crelier <regis@google.com>
2017-10-12 15:21:52 +00:00
Samir Jindel 2cac57da09 [kernel] Support generic function types in the VM's kernel frontend.
Bug:
Change-Id: I3554562b409b35478437601f34e6263615409b38
Reviewed-on: https://dart-review.googlesource.com/12292
Commit-Queue: Samir Jindel <sjindel@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2017-10-12 14:45:21 +00:00
Samir Jindel a273ff8314 [kernel] Support generic closures in VM's kernel frontend.
Change-Id: I0866971dc633c27df55811cba734d7cca0e849d4
Reviewed-on: https://dart-review.googlesource.com/12290
Commit-Queue: Samir Jindel <sjindel@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
Reviewed-by: Régis Crelier <regis@google.com>
2017-10-12 13:53:21 +00:00
Dmitry Stefantsov a227b168da Revert "Reapply "[vm] Prefer stack bounds from the system thread library for overflow checks.""
This reverts commit 5a022b9db6.

The reverted CL caused some redness on some vm and vm-precomp bots.

TBR=rmacnak@google.com
Change-Id: I9be670f3c3e341ec6d95082f288bc569834e38c7
Reviewed-on: https://dart-review.googlesource.com/13460
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Reviewed-by: Karl Klose <karlklose@google.com>
Commit-Queue: Dmitry Stefantsov <dmitryas@google.com>
2017-10-12 07:32:30 +00:00
Ryan Macnak 89ce54fe0e [vm] Visit the pool pointer slot of optimized frames; visit the object slots of exit frames.
We've been getting away with skipping this slot because
 - ObjectPools are allocated into old space and never move, and
 - the ObjectPools are also reachable from the PC marker in the caller's frame.

However, ObjectPools will become movable during compacting GCs.

Bug: https://github.com/dart-lang/sdk/issues/30978
Change-Id: Ied3a1588365fe5362ad7f1d2d446a7a59df6ced6
Reviewed-on: https://dart-review.googlesource.com/10680
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2017-10-12 03:47:15 +00:00
Ryan Macnak 5a022b9db6 Reapply "[vm] Prefer stack bounds from the system thread library for overflow checks."
Fix accounting of guard pages to move the stack limit up instead of down.

Change-Id: I2f6577a12cf95707c186884f0bd3def03eac12ed
Reviewed-on: https://dart-review.googlesource.com/13381
Reviewed-by: Zach Anderson <zra@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2017-10-12 02:17:11 +00:00
Ryan Macnak 7ddc885b5c IA32: Visit the object reference used in optimized static calls.
Such a call site starts with a reference to a stub in the VM isolate, so the pointer was not recordered, but after it first runs it will be patched to a code object in the current isolate, which may move during compaction.

Bug: https://github.com/dart-lang/sdk/issues/30978
Change-Id: I3bf8fd1cf8884cbba9956254cad70f46e8b8cc00
Reviewed-on: https://dart-review.googlesource.com/12701
Reviewed-by: Alexander Markov <alexmarkov@google.com>
2017-10-11 23:29:56 +00:00
Alexander Markov b9e61477ed [VM, Compiler] Enable inlining of static calls to recognized methods
Previously, a lot of recognized instance methods were inlined
only if they are called using InstanceCall instruction.
This CL enables inlining of such methods even if they are called
using StaticCall instruction. Such static calls may appear as the
result of devirtualization of instance calls.

Fixes slow-down of Flutter gestures/velocity_tracker benchmark when
devirtualization is enabled without --experimental-strong-mode.
(The slow-down was caused by inline heuristics rejecting to inline
several methods as their speculative bodies contain non-inlined
calls to recognized methods.)

Issue: https://github.com/dart-lang/sdk/issues/30480
Change-Id: Id0ec0669d0e3fe05aa708baec4a468892dbe7f8e
Reviewed-on: https://dart-review.googlesource.com/13200
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2017-10-11 22:32:47 +00:00
Ryan Macnak 6ecf6dd0a3 Revert "[vm] Prefer stack bounds from the system thread library for overflow checks."
This reverts commit af251ddfec.

Reason for revert: Crashes on Windows.

Original change's description:
> [vm] Prefer stack bounds from the system thread library for overflow checks.
> 
> Before this change, we would assume all stacks have the size the VM specifies for threads it creates, but this won't be accurate for the initial thread or threads created by the embedder.
> 
> Change-Id: I6605a88d6666a6f9d47fbe047d3fdd02aa22c80a
> Reviewed-on: https://dart-review.googlesource.com/10209
> Reviewed-by: Zach Anderson <zra@google.com>

TBR=rmacnak@google.com,zra@google.com

Change-Id: I96eaccdc8edf6e3d319827a63d168534bad0518e
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://dart-review.googlesource.com/13106
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2017-10-11 21:17:28 +00:00
Ryan Macnak af251ddfec [vm] Prefer stack bounds from the system thread library for overflow checks.
Before this change, we would assume all stacks have the size the VM specifies for threads it creates, but this won't be accurate for the initial thread or threads created by the embedder.

Change-Id: I6605a88d6666a6f9d47fbe047d3fdd02aa22c80a
Reviewed-on: https://dart-review.googlesource.com/10209
Reviewed-by: Zach Anderson <zra@google.com>
2017-10-11 19:35:44 +00:00
Vyacheslav Egorov 3f9a4966e7 [VM] Fix typing issues in the typed_data.dart
Bug: https://github.com/dart-lang/sdk/issues/31052
Change-Id: I6bc0454c8c27432ee6206267c04d114d47835046
Reviewed-on: https://dart-review.googlesource.com/12660
Reviewed-by: Martin Kustermann <kustermann@google.com>
2017-10-11 10:29:05 +00:00
Alexander Markov 86fde60e4d [VM] Intrinsify Type.hashCode
This CL optimizes Type.hashCode similarly to String.hashCode, by
introducing intrinsic version of hashCode calculation which uses
hashcode stored in Type instance.

This is important for Flutter's .of pattern, which heavily uses
Maps with Type keys.

Results on Flutter stocks/build_bench.dart microbenchmark:
Before: 4906 µs
After:  4751 µs
(minimum of 5 runs, using tip of Flutter and Flutter engine)

Issue: https://github.com/dart-lang/sdk/issues/31011
Issue: https://github.com/flutter/flutter/issues/11572
Change-Id: Ifbaf721050007db49bbd969dc669d070f4ce839e
Reviewed-on: https://dart-review.googlesource.com/12622
Reviewed-by: Zach Anderson <zra@google.com>
2017-10-10 23:46:09 +00:00
Ryan Macnak 775f2054e1 [vm] Reduce duplication around EmitCallsiteMetadata.
Change-Id: I9c28ddd6104381902321e8b2788d70c4a63ce21a
Reviewed-on: https://dart-review.googlesource.com/12845
Reviewed-by: Alexander Markov <alexmarkov@google.com>
2017-10-10 23:00:30 +00:00
Ryan Macnak 031069d2bd [vm] Avoid using a generated stub to get the current SP, since generated stubs aren't available during early start up.
Change-Id: Ib0d78965ba5ccb1fa2b084d82b2bb79485b7900f
Reviewed-on: https://dart-review.googlesource.com/12780
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Zach Anderson <zra@google.com>
2017-10-10 22:52:25 +00:00
Zachary Anderson dcd275fa74 [dart:io] Begins work on mocking support
Change-Id: I770ed9485a934af07e570fbad3f3fb84ebef973d
Reviewed-on: https://dart-review.googlesource.com/3302
Commit-Queue: Zach Anderson <zra@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Florian Loitsch <floitsch@google.com>
2017-10-10 17:39:12 +00:00
Vyacheslav Egorov a771e05fa4 [VM] Fix typing issues in convert_patch.dart
Bug: https://github.com/dart-lang/sdk/issues/31052
Change-Id: I65cea214cb4f053850a05c107f78a8af1bdde81f
Reviewed-on: https://dart-review.googlesource.com/12446
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
2017-10-10 11:09:11 +00:00
Vyacheslav Egorov 5b14ee115a [VM] Make _StringBase implement String
_StringBase is used everywhere as if it was assignable to String,
however it itself does not implement String, its subclasses do.

This change addresses this.

Also removes unused native runtime method from one of subclasses.

Bug: https://github.com/dart-lang/sdk/issues/31052
Change-Id: Iea2389d1b48a3689fb11c99c0e230747ab1c5962
Reviewed-on: https://dart-review.googlesource.com/12444
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
2017-10-10 10:33:31 +00:00
Alexander Markov 14f6276945 [Kernel, VM] Add null checking to devirtualization
Devirtualization optimization now adds metadata to kernel AST instead
of transforming nodes to Direct* ones. The direct call metadata
provides information about checking receiver for null, while
Direct* kernel nodes do not support null checking.

VM's kernel binary loader is extended to extract arbitrary metadata
from kernel binaries and keep it for flow graph builder.
Kernel flow graph builder is extended to take direct call metadata
into account and generate CheckNull/StaticCall instructions
for devirtualized PropertyGet, PropertySet and MethodInvocation nodes.

Issue: https://github.com/dart-lang/sdk/issues/30480
Change-Id: I57f56fbf4a8981d33b1571c0d93105cf8ca71d76
Reviewed-on: https://dart-review.googlesource.com/12260
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2017-10-10 00:50:31 +00:00
Ryan Macnak 3609522166 printf format checking is a compiler feature, not a platform feature.
Change-Id: Ib3e0beb814b5cae6f2b4be13f055069f682674f5
Reviewed-on: https://dart-review.googlesource.com/11645
Reviewed-by: Zach Anderson <zra@google.com>
2017-10-09 22:26:01 +00:00
Siva Chandra 0eb9528be8 [vm/kernel_binary.h] Make few asserts stricter.
This makes the compiler happy under -Wstrict-overflow.

Change-Id: Ic91ccd9d716c866e11d6b00de7b95916a73ea5d7
Reviewed-on: https://dart-review.googlesource.com/12346
Commit-Queue: Siva Chandra <sivachandra@google.com>
Reviewed-by: Zach Anderson <zra@google.com>
2017-10-09 21:17:48 +00:00
Zachary Anderson 11177ce405 [android] Fix build
Change-Id: I33fe71898d0d1defd9c55f0a53a1b0748ddfb820
Reviewed-on: https://dart-review.googlesource.com/12345
Reviewed-by: Zach Anderson <zra@google.com>
2017-10-09 19:31:40 +00:00
Zachary Anderson 7fd15110fe [dart:io] chdir, getcwd when in a namespace
This change does a couple things:
- When there is a non-default namespace, on Linux, Android, and Fuchsia
  the current working directory is per-Isolate.
- On Fuchsia, it caches the fd from fdio_ns_t instead of recomputing it
  on every fs access.

Change-Id: I3735330884de51ca853a17d66dcfcfa984b9a041
Reviewed-on: https://dart-review.googlesource.com/9367
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Zach Anderson <zra@google.com>
2017-10-09 19:14:58 +00:00
Ryan Macnak 140dfd6d89 [vm] Consider a reload with no changed files as a reload for _getUnusedChangesInLastReload.
Add missing messages for various vm-service error codes.

Bug: https://github.com/flutter/flutter/issues/12300
Change-Id: I1f3607f94c5ab2fb770813f0502c3b1c9c40fdf4
Reviewed-on: https://dart-review.googlesource.com/11642
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Siva Annamalai <asiva@google.com>
2017-10-09 16:31:05 +00:00
Siva Chandra bf096c2bb4 Copy library specific kernel binary data to VM heap.
Before this change, each function and field had its own kernel data blob
in the VM heap. With this change, the entire kernel data of a library is
stored as one single blob in the VM heap. Functions and fields store an
offset which points to the kernel data, specific to them, in that single
blob.

The pointer to the kernel data for a library is saved in two places:
1. With the library objects themselves.
2. With all the patch classes of the library.
3. With the patch classes created during hot reload.

Change-Id: Ie03e738c4d20f16056a5ef04341b75506fda9c60
Bug:
Reviewed-on: https://dart-review.googlesource.com/6601
Commit-Queue: Siva Chandra <sivachandra@google.com>
Reviewed-by: Jens Johansen <jensj@google.com>
2017-10-09 15:03:15 +00:00
Peter von der Ahé 90587a6837 vmservice_libraries.json is no longer generated.
Fixes #31034.

Change-Id: Ifb9ed97fe8cddb317cb63e7d66f262ef9e68ee75
Reviewed-on: https://dart-review.googlesource.com/12282
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Peter von der Ahé <ahe@google.com>
2017-10-09 13:37:55 +00:00
Vyacheslav Egorov cc4e76664f [VM] Relax kernel::StreamingConstantEvaluator::IsAllowedToEvaluate()
When precompiling we might trigger optimizing compilation eagerly
so constant evaluation did not have a chance to run.

It is totally fine though because precompiler does not use
background thread.

Bug:
Change-Id: I6e889284d9ef9be8b09c6f4fe7695c82a78bcee4
Reviewed-on: https://dart-review.googlesource.com/12280
Reviewed-by: Alexander Markov <alexmarkov@google.com>
2017-10-08 17:46:14 +00:00
Vyacheslav Egorov 552d09715d [VM] Cleanup SIMD related IL instructions.
This CL unifies 31 diverse Simd instructions into a single flexible SimdOp instruction.

These instructions were not different enough to warrant being implemented 
as separate IL instructions. The separation did not bring any benefit but
instead we payed the price with considerable amounts of duplicated code 
across the pipeline.

Main motivation for this refactoring is to reduce the surface of our IL.

Bug:
Change-Id: Ie8e39fecd2a51cb8edffdfe9c22e76835f912a9b
Reviewed-on: https://dart-review.googlesource.com/10120
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Zach Anderson <zra@google.com>
2017-10-07 13:25:13 +00:00
Sigmund Cherem 80e7d3b35f Build a strong version of outline.dll, and use it for front end strong mode tests.
(rebases CL 11366 after Peter's changes)

Change-Id: If9f3d331fb953a9890fa7952bd472cc39f541e84
Reviewed-on: https://dart-review.googlesource.com/11965
Reviewed-by: Paul Berry <paulberry@google.com>
2017-10-06 20:12:59 +00:00