Commit Graph

13143 Commits

Author SHA1 Message Date
Vyacheslav Egorov 2fb6cd9f5f [vm] Fix Service::RequestAssets
Unwrapping of API handles can only occur when thread is in the VM
execution state.

Change-Id: I14183f4553d0dd972b4bafb1e3771cf2655c1867
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/96040
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
2019-03-08 07:19:47 +00:00
Ben Konyi 585eb7f507 [ VM / Service ] Added disableBreakpoints parameter to evaluate, evaluateInFrame and invoke RPCs
- Setting the `disableBreakpoints` parameter to true will result in any
breakpoints hit during execution resulting from an evaluate or invoke
call to be ignored.
- Default behavior is the same (break on breakpoints).
- Updated Observatory eval box to disable breakpoints.
- Added tests

Change-Id: Ibf40f8a8de018718435118e13cc2e969f8ed7944
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/95320
Commit-Queue: Ben Konyi <bkonyi@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Jacob Richman <jacobr@google.com>
2019-03-08 02:19:06 +00:00
Ryan Macnak 93d42679f0 [vm, arm64, fuchsia] Check for stack overflow / interrupts based on DSP instead of CSP.
Broken by b2d22be0f3, which skips kicking CSP forward to save on code size.

Change-Id: I8fda8631d94c9a696039545b83425b799cabde46
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/95962
Reviewed-by: Zach Anderson <zra@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2019-03-08 01:01:47 +00:00
Vyacheslav Egorov 1dd4559271 [vm] Add Native->VM transitions when dereferencing API handles.
For example setting return value unwraps handles and stores
raw pointer values to the stack which might race with GC
in another thread.

This CL adds assertions in helper methods from Api class which
unwrap API handles and fixes all places that were revealed by
those assertions.

Caveat: we still permit to check whether handle contains
Smi or not without entering VM state - because GC does not
change this property.

Bug: b/127482366
Change-Id: I59f08c2a91935995514fb70607c2777aa2844d94
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/95654
Commit-Queue: Siva Annamalai <asiva@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2019-03-08 00:06:37 +00:00
Zach Anderson 8332fb0631 [vm] Adds an API call to dump the CPU profile to the timeline
Used in https://fuchsia-review.googlesource.com/c/topaz/+/258655

Change-Id: I79b102e0d318d7be3bae44fb88f81bb8086a10d4
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/94400
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Zach Anderson <zra@google.com>
2019-03-07 21:28:26 +00:00
Aart Bik 5c7b07f783 [dart/vm] Fix bug in kernel binary flow graph builder
Rationale:
Found by DartFuzz. One of the trickier bugs I had to debug.
While building the flow graph from kernel, the finalizer
builder expects the program context to be in the same state
as when the finalizer was seen first, not the context seen
by the breaking/continuing statement. This was done partially,
but only partially. Finding loop context or breakable
and switchable blocks was missing. Something only
a fuzzer can find :-)

https://github.com/dart-lang/sdk/issues/36076

Change-Id: Ie63912c5fad4d3c15f6559b60cc102b237949957
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/95720
Commit-Queue: Aart Bik <ajcbik@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2019-03-07 20:16:18 +00:00
Adam Barth 07b2f82203 [fuchsia] Remove unused header
This header is no longer needed and will be removed soon.

Change-Id: I5d96b725bc2a7c6695bb5248377075b00fe7fc6c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/95880
Commit-Queue: Zach Anderson <zra@google.com>
Auto-Submit: Adam Barth <abarth@google.com>
Reviewed-by: Zach Anderson <zra@google.com>
2019-03-07 20:10:21 +00:00
Alexander Markov f2a8e71ff9 [vm] Decouple flow graph building of implicit closure functions from kernel reading
Change-Id: I6bf5ad6ed76c363904ae1765d8303eff4a799363
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/95706
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2019-03-07 18:09:48 +00:00
Liam Appelbe 924a934fe1 Shrink the stack headroom if the stack is very small
Bug: https://github.com/dart-lang/sdk/issues/36100
Change-Id: I9d887e74c7f888dbeebaf02556522d375e30b97f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/95703
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Liam Appelbe <liama@google.com>
2019-03-07 17:32:59 +00:00
Martin Kustermann 72548cde13 Revert "[vm, gc] The mutator's TLAB and the interpreter's lookup cache must be visited even if the mutator is unscheduled."
This reverts commit 253499fe68.

Reason for revert: This seems to have caused new heap verification failures, e.g.

python tools/test.py -n dartkp-linux-debug-x64 lib_2/convert/streamed_conversion_json_utf8_decode_test
...                                                                                                                                                                                                                                                              
stderr:                                                                                                                                                                                                                                                       
Verifying before Scavenge...../../runtime/vm/raw_object.cc: 36: error: New object missing kNewBit: f3f3f3f3                                                                                          
                                                                                                           
version=2.2.1-edge.253499fe68b1efaed5c2be699b4e59af3703c0f3 (Thu Mar 7 01:01:02 2019 +0000) on "linux_x64"
thread=219499, isolate=isolate(0x55efd3734900)                                                            
  [0x000055efd10532e6] dart::Profiler::DumpStackTrace(bool)                                           
  [0x000055efd10532e6] dart::Profiler::DumpStackTrace(bool)                                   
  [0x000055efd1053224] dart::Profiler::DumpStackTrace(void*)                                        
  [0x000055efd13a6805] Dart_DumpNativeStackTrace                                                                                                                                                                                                             
  [0x000055efd13b7313] dart::Assert::Fail(char const*, ...)                                                                                                                                                                                                   
  [0x000055efd1073ac8] dart::RawObject::Validate(dart::Isolate*) const                                                                                                                                                                                        
  [0x000055efd1379c51] dart::VerifyObjectVisitor::VisitObject(dart::RawObject*)                                                                                                                                                                              
  [0x000055efd1376a43] dart::Scavenger::VisitObjects(dart::ObjectVisitor*) const                                                                                                                                                                             
  [0x000055efd136098b] dart::Heap::VisitObjectsNoImagePages(dart::ObjectVisitor*) const                                                                                                                                                                      
  [0x000055efd13632f3] dart::Heap::CreateAllocatedObjectSet(dart::Zone*, dart::MarkExpectation) const                                                                                                                                                        
  [0x000055efd1363522] dart::Heap::VerifyGC(dart::MarkExpectation) const                                                                                                                                                                                      
  [0x000055efd1377144] dart::Scavenger::Scavenge()                                                                                                                                                                                                            
  [0x000055efd1361b06] dart::Heap::CollectNewSpaceGarbage(dart::Thread*, dart::Heap::GCReason)                                                                                                                                                                
  [0x000055efd1360330] dart::Heap::CollectMostGarbage(dart::Heap::GCReason)                                                                                                                                                                                   
  [0x000055efd135fff5] dart::Heap::AllocateOld(long, dart::HeapPage::PageType)                                                                                                                                                                               



Original change's description:
> [vm, gc] The mutator's TLAB and the interpreter's lookup cache must be visited even if the mutator is unscheduled.
> 
> Bug: TC-384
> Change-Id: Ic3dcc2fea3e80ef181f8891ccb00a8e2e33fc077
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/95670
> Reviewed-by: Alexander Aprelev <aam@google.com>
> Commit-Queue: Ryan Macnak <rmacnak@google.com>

TBR=aam@google.com,rmacnak@google.com,alexmarkov@google.com,regis@google.com

Change-Id: Ia1e2cbf7c059e22a2c71f28cb641f07ccd3dddab
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: TC-384
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/95821
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
2019-03-07 16:56:20 +00:00
Samir Jindel bdb07f4a1f [vm/ffi] Fix garbage collection of ffi.Pointer subtypes.
Fixes https://github.com/dart-lang/sdk/issues/36125.

Change-Id: Ib9069d1e15684c785b86954ed8c14e5fdde35fec
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/95652
Commit-Queue: Samir Jindel <sjindel@google.com>
Reviewed-by: Daco Harkes <dacoharkes@google.com>
2019-03-07 15:56:08 +00:00
Zichang Guo 4ec72c1eb1 [VM-Runtime]Fix source report coverage to not include field without function initializer
Fix issue created by 89173. Also rename HasInitializer to HasInitializerFunction to distinguish from has_initializer.

Bug= https://github.com/flutter/flutter/issues/28542

Change-Id: Id9f898937c2f4f350a6d619019dc12611505801f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/95680
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Zichang Guo <zichangguo@google.com>
2019-03-07 02:04:41 +00:00
Ryan Macnak 253499fe68 [vm, gc] The mutator's TLAB and the interpreter's lookup cache must be visited even if the mutator is unscheduled.
Bug: TC-384
Change-Id: Ic3dcc2fea3e80ef181f8891ccb00a8e2e33fc077
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/95670
Reviewed-by: Alexander Aprelev <aam@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2019-03-07 01:01:02 +00:00
Ryan Macnak 980e5c7b57 [vm] Mark VM isolate objects at heap finalization instead of allocation.
Avoids unnecessary branching in allocation.

Also, rename the VMHeap bit to ReadOnly to reflect its current usage.

Change-Id: Ic6060eec263cef0a3fc92f253dff976cea45bdb2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/95063
Reviewed-by: Siva Annamalai <asiva@google.com>
Reviewed-by: Régis Crelier <regis@google.com>
2019-03-07 00:20:30 +00:00
Ryan Macnak e48ad45fbd [vm, interpreter] Enable field guards.
Bug: https://github.com/dart-lang/sdk/issues/36131
Change-Id: I8aa538bc96d10d14322c875228dbd7a97ddf114b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/95491
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Régis Crelier <regis@google.com>
2019-03-07 00:19:40 +00:00
Adam Barth 6988347b53 [fuchsia] Migrate to lib/sys/cpp
We now use lib/sys/cpp, which is part of the Fuchsia SDK, rather than
lib/component/cpp, which is being deleted.

Change-Id: I3eaae74cc0403923886f9872d4327e46ec8915c2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/95700
Auto-Submit: Adam Barth <abarth@google.com>
Reviewed-by: Zach Anderson <zra@google.com>
Commit-Queue: Zach Anderson <zra@google.com>
2019-03-06 21:16:30 +00:00
Ryan Macnak 975cc65c17 [vm, interpreter] Implement interpreter stubs for IA32.
Change-Id: I7bb7e51cb46868abcc10c7dcc7cbf1db1ccdc35c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/95264
Reviewed-by: Régis Crelier <regis@google.com>
2019-03-06 21:09:30 +00:00
Ryan Macnak 68946df573 [vm] Also print version information in assertion failures, not just faults.
Populate the dynamic symbol table for gen_snapshot.

Change-Id: Ib4712d2f481948f646ba4f5e353e0837b6391eab
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/95682
Reviewed-by: Régis Crelier <regis@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2019-03-06 20:02:18 +00:00
Zach Anderson 825d03c585 [vm] Remove malloc_hooks support for jemalloc
Fuchsia is switching/has switched to scudo.

Change-Id: I0c829518652053243bf3f8db675e562ccfb448f9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/95663
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Zach Anderson <zra@google.com>
2019-03-06 19:16:27 +00:00
Daco Harkes 7a98559781 [vm/ffi] make Pointer.toString() uniform on all operating systems
Change-Id: I805c8b3c56a18a253c5005945cab47d5a6aa26cc
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/95648
Commit-Queue: Daco Harkes <dacoharkes@google.com>
Reviewed-by: Samir Jindel <sjindel@google.com>
Auto-Submit: Daco Harkes <dacoharkes@google.com>
2019-03-06 16:48:09 +00:00
Alexander Markov dc1f2bd087 [vm] Avoid assertion for non-finalized type parameter of expression evaluation function
This is the follow-up for https://dart-review.googlesource.com/c/sdk/+/95061.

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

Change-Id: I70d7a753fcb4d4063510548e74d635a35447b3dd
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/95540
Auto-Submit: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Régis Crelier <regis@google.com>
Commit-Queue: Régis Crelier <regis@google.com>
2019-03-06 00:35:34 +00:00
Ryan Macnak 2922878ce9 [vm, compiler] Fix GuardFieldTypeInstr to update the original field.
Change-Id: I698b6f3315e76f6d491f514333cf38e035ad6e79
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/95423
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2019-03-05 23:06:22 +00:00
Ryan Macnak 60de5b4983 [vm] Avoid quadratic growth in (Malloc)TextBuffer and ZoneTextBuffer.
In particular, avoid quadratic memory use in ZoneTextBuffer.

Change-Id: I8d2ea77d35cd3c2c353ae557a2ee676ee8413653
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/95483
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2019-03-05 22:32:22 +00:00
Alexander Markov 51a334caa7 [vm] Remove kernel reading from BuildArgumentTypeChecks
This change is a preparation for decoupling flow graph building of
special functions from kernel reading.

Change-Id: Ied90bc6894cdfa48f49c71e980079967c8c4fbb9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/95061
Commit-Queue: Alexander Markov <alexmarkov@google.com>
Auto-Submit: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2019-03-05 18:48:51 +00:00
Daco Harkes 2071d1284d [vm/ffi] Fix crash on toString for dart:ffi trampoline functions
Change-Id: I8af3373619dca690a2f5e60f737714e1ac413408
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/95500
Auto-Submit: Daco Harkes <dacoharkes@google.com>
Reviewed-by: Samir Jindel <sjindel@google.com>
Commit-Queue: Samir Jindel <sjindel@google.com>
2019-03-05 17:43:56 +00:00
Liam Appelbe cc455ecc1d Add use_abi_version flag, and plumb ABI version to version.h
Bug: https://github.com/dart-lang/sdk/issues/36047
Change-Id: Ie810cbd5079e1939bf190e06f6c2494bb4ab0805
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/95282
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Liam Appelbe <liama@google.com>
2019-03-05 17:16:11 +00:00
Aart Bik 571ea80e11 [vm/compiler] added assert to kernel flowgraph builder
Rationale:
Yields a more gentle crash in debug mode for
bug under investigation (found by DartFuzz)

https://github.com/dart-lang/sdk/issues/36076

Change-Id: I497fbef1ec2100b9701848c3454bef5ad7518d2b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/95280
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Aart Bik <ajcbik@google.com>
2019-03-04 19:30:53 +00:00
Aske Simon Christensen 2b2e71770c [kernel] Add SetConstant node to Kernel.
Change-Id: I83da1afc9f15009c650a871a51ca8171b482d4df
Reviewed-on: https://dart-review.googlesource.com/c/94863
Reviewed-by: Kevin Millikin <kmillikin@google.com>
2019-03-04 10:20:56 +00:00
Martin Kustermann 084e98e3a3 [VM] Ensure that a newly allocated object is either new or added to remembered set if we want to eliminate write barriers to it
For all non-generic classes the AllocateObject runtime call would not
guarantee that the returned object is new or marked as remembered. If
such an object is subject to a store with an eliminated write-barrier,
we have incorrect remembered set, which causes flaky crashes.

This CL fixes the AllocateObject runtime call to always ensure the
object is new or added to the remembered set if write-barrier
elimination is enabled for those.

Furthermore the conditions for when the write barrier can be eliminated
is centralized in one place instead of duplicated (in runtime_entry.cc
and il.h) to avoid future divergence of the two.

Similarly the condition to when an array uses card marking is put into
one place.

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

Change-Id: I270f3618a267a35fa6ea63dcf4092488c0319328
Reviewed-on: https://dart-review.googlesource.com/c/95022
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Samir Jindel <sjindel@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
2019-03-04 09:09:56 +00:00
Régis Crelier 0491d5cde7 Revert "[VM runtime] Dual mapping of executable pages."
This reverts commit 44186dfdcd.

Reason for revert: not working on vm-kernel-precomp-android-release-arm

Original change's description:
> [VM runtime] Dual mapping of executable pages.
> 
> Change-Id: Iaad78d324e25462ce951f4df26974a6a368c50b7
> Reviewed-on: https://dart-review.googlesource.com/c/93377
> Commit-Queue: Régis Crelier <regis@google.com>
> Reviewed-by: Ryan Macnak <rmacnak@google.com>

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

Change-Id: I793ceee6252111eafbcbfe6e28268f4f6f2d7215
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://dart-review.googlesource.com/c/94989
Reviewed-by: Régis Crelier <regis@google.com>
Commit-Queue: Régis Crelier <regis@google.com>
2019-03-01 22:55:14 +00:00
Liam Appelbe df59b09756 Fail early if a thread has no stack headroom
Bug: https://github.com/dart-lang/sdk/issues/35745
Change-Id: I6a9dff8608385d4dde74a16b6d4dea42fe91460f
Reviewed-on: https://dart-review.googlesource.com/c/95041
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Liam Appelbe <liama@google.com>
2019-03-01 22:34:21 +00:00
Régis Crelier 44186dfdcd [VM runtime] Dual mapping of executable pages.
Change-Id: Iaad78d324e25462ce951f4df26974a6a368c50b7
Reviewed-on: https://dart-review.googlesource.com/c/93377
Commit-Queue: Régis Crelier <regis@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2019-03-01 22:19:31 +00:00
Ben Konyi 1a9f40b1c5 [VM] Remove unnecessary assert to fix cc/PrintJSON test
Change-Id: If6f44a3136002cd4c682f6b88bbd772db8f467b3
Reviewed-on: https://dart-review.googlesource.com/c/94984
Auto-Submit: Ben Konyi <bkonyi@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2019-03-01 19:07:30 +00:00
Ryan Macnak dc555eb9a7 [vm] On Fuchsia, enable timeline streams based on the state of system trace categories.
Allows categories to be selected through arguments to `trace` instead of changing VM flags and rebuilding.

Change-Id: Ia1ec6b58ca0b765c3d675b7d4938acc5f624b768
Reviewed-on: https://dart-review.googlesource.com/c/91860
Reviewed-by: Zach Anderson <zra@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2019-03-01 18:05:40 +00:00
Alexander Markov c35304ef18 [vm/simdbc,interpreter] Preserve arguments descriptor around call to inline cache miss handler
InlineCacheMissHandler* runtime entries may cause class finalization and
potentially run more Dart code (for example, to evaluate pragma annotations).
That could clobber arguments descriptor in simulator/interpreter.

Usually classes are finalized before their instances are allocated.
However, VM creates instances of certain built-in classes "magically",
without finalizing classes. For such classes finalization can occur
on the first method invocation.

Change-Id: I247197baf36858bfa43812aaaed02b10584762e0
Reviewed-on: https://dart-review.googlesource.com/c/94960
Auto-Submit: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2019-03-01 17:24:40 +00:00
Ian McKellar 16fc751e49 [fuchsia] Clean-up after the FIDL string/vector types transition
This cleans up what was introduced in:
https://dart-review.googlesource.com/c/88122

Change-Id: If7596a3dd57af25d91fe880104e5aafd301c57f4
Reviewed-on: https://dart-review.googlesource.com/c/94922
Auto-Submit: Ian McKellar <ianloic@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2019-03-01 02:01:19 +00:00
Ryan Macnak 24df9cc588 [vm] Implement interpreter stubs for ARM, SIMARM and SIMARM64.
Change-Id: If49e656bb3c016d42bc5588c6026116f2aff5076
Reviewed-on: https://dart-review.googlesource.com/c/94682
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Régis Crelier <regis@google.com>
2019-03-01 01:25:19 +00:00
Ben Konyi e8d6e2f704 [ VM ] Updated SourceReport tests with correct token positions
Change-Id: I6aa49e715043a1ba463425e53018c5078a272129
Reviewed-on: https://dart-review.googlesource.com/c/94962
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Ben Konyi <bkonyi@google.com>
2019-03-01 00:48:59 +00:00
Aart Bik a10b0d8763 [vm/compiler] LICM and CSE improvements
Several improvements
(1) makes implicit control dependence of a null check
    explicit by means of data dependence (already
    done for bounds checks); also see the doc in
    runtime/docs/compiler/data_dep_for_control_dep.md
(2) improves CSE properties of various IL nodes
(3) allows LICM on invariant code that may-throw
    as long as the visible behavior is preserved

https://github.com/dart-lang/sdk/issues/35323
https://github.com/dart-lang/sdk/issues/34684

Change-Id: Icb4520a649da38eddc3d7c85af21427d3c64d22e
Reviewed-on: https://dart-review.googlesource.com/c/93822
Commit-Queue: Aart Bik <ajcbik@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
2019-02-28 19:29:06 +00:00
Alexander Markov bab9d2ad05 [vm] Remember GenericCovariantImpl in TypeParameter
Previously, in order to get GenericCovariantImpl property of a type
parameter we had to (re-)read kernel.

This change is a preparation for decoupling flow graph building of
special functions from kernel reading.

Change-Id: I48b45d2cece683ac3a3bd0ed506ddfcc3c526826
Reviewed-on: https://dart-review.googlesource.com/c/94641
Commit-Queue: Régis Crelier <regis@google.com>
Auto-Submit: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Régis Crelier <regis@google.com>
2019-02-28 17:38:19 +00:00
Ryan Macnak a3ab6b6514 [vm, gc] Reduce cost of maintaining allocation stats during scavenges.
Change-Id: If44fe99c87b96f4f370efb3716009e230b5c4f25
Reviewed-on: https://dart-review.googlesource.com/c/94583
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2019-02-27 22:01:00 +00:00
Alexander Markov ab10fb12dc [vm/interpreter] Reduce stack usage of interpreter
Bug: FLK-46
Change-Id: Ia596f46629ad32492b460a2ae54501f55b7e6ed4
Reviewed-on: https://dart-review.googlesource.com/c/94600
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2019-02-27 19:18:27 +00:00
Ryan Macnak 603678e46c [vm, gc] Streamline the promotion allocation fast path.
dart2js-compile geomean -0.8362% (Time)

Change-Id: I98dbbed2e7b96c8ff4950cc59421aef6bceef23b
Reviewed-on: https://dart-review.googlesource.com/c/94345
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2019-02-27 01:53:45 +00:00
Ryan Macnak 8fd09304b6 [vm, gc] Force inline MarkObject into its sole caller.
Cf. e38e5aae46

Change-Id: Ibf9dad7358368eba2c20ba552fe6f83e2ce6ddc5
Reviewed-on: https://dart-review.googlesource.com/c/94466
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2019-02-27 01:46:16 +00:00
Alexander Aprelev fb88c983e7 [vm/compiler] Switch kernel helper for background compiler to use new space.
Now that TLAB is enabled, background compiler can use new space for short-lived data created during kernel loading.

Change-Id: I0a05510bcc73be268895f093cd1422d80d6e39bf
Reviewed-on: https://dart-review.googlesource.com/c/94361
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Alexander Aprelev <aam@google.com>
2019-02-27 00:50:07 +00:00
Aart Bik 6d575152c9 [vm/compiler] Changes in Cid range computation
Rationale:
An incorrect edit slipped into the JIT version, which
had some performance regression. Also we now make
the null optional when not excluded explicitly, since
this results in no ranges for a few cases.

https://github.com/flutter/flutter/issues/28260

Change-Id: I799683d938287661321033d6839fcf2f471b2bc4
Reviewed-on: https://dart-review.googlesource.com/c/94349
Commit-Queue: Aart Bik <ajcbik@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
2019-02-26 23:05:15 +00:00
Ryan Macnak fba89f9f64 [vm] Don't change the content of the VM isolate's snapshot based on what was loading into a core or app snapshot.
Ensures, by default, multiple core or app snapshots are capable of being loaded into the same process. Flags that affect stub generation can still create incompatibilities. A later CL will internalize VM isolate snapshot generation to the VM build and ensure compatibility.

Change-Id: I247063d5a3a611b04963b8e8ab2ac8a1f20ea57a
Reviewed-on: https://dart-review.googlesource.com/c/93962
Reviewed-by: Zach Anderson <zra@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2019-02-26 19:04:50 +00:00
Samir Jindel f0042a3225 [vm/ffi] Factor out FFI code shared between compiler and runtime.
Change-Id: I0b4af9cb36fd5ebc163621951486333a68baa890
Reviewed-on: https://dart-review.googlesource.com/c/93503
Commit-Queue: Samir Jindel <sjindel@google.com>
Auto-Submit: Samir Jindel <sjindel@google.com>
Reviewed-by: Daco Harkes <dacoharkes@google.com>
2019-02-26 12:48:32 +00:00
Ben Konyi f7e435ac26 [ VM / Windows ] Removed call to SetThreadDescription which is only supported in new Win 10 builds
This (hopefully) unblocks the Dart SDK roll into Flutter.

Change-Id: I5616fb2ace879f3a0c4532706d472f2cb488267d
Reviewed-on: https://dart-review.googlesource.com/c/94347
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Ben Konyi <bkonyi@google.com>
2019-02-26 01:00:26 +00:00
Ryan Macnak bf7ecc40f9 [vm] Fix some compilation events to respect SUPPORT_TIMELINE instead of PRODUCT.
Cf. d6caaeeebb

Change-Id: I1b1db807113f38a3a3205b33d523c5db0961bd41
Reviewed-on: https://dart-review.googlesource.com/c/94360
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Zach Anderson <zra@google.com>
2019-02-26 00:02:06 +00:00