Commit Graph

478 Commits

Author SHA1 Message Date
Martin Kustermann 1aff626804 VM: [Kernel] Split kernel API into 3 steps: ([read binary], parse-binary, bootstrap, load program)
This avoids reading and parsing the kernel binary multiple times and avois
having it multiple times in memory (we don't free the 'kernel::Program*' object
ATM).

R=kmillikin@google.com

Review URL: https://codereview.chromium.org/2525623002 .
2016-11-23 09:26:15 +01:00
Vyacheslav Egorov 23fd1a184b VM: Support bootstrapping core libraries from Kernel binaries instead of source.
BUG=http://dartbug.com/27590
R=asiva@google.com

Review URL: https://codereview.chromium.org/2485993002 .
2016-11-16 13:56:20 +01:00
Ryan Macnak ab26422df0 Check that Dart_CreateIsolate is given a correct kind of snapshot.
R=zra@google.com

Review URL: https://codereview.chromium.org/2481013006 .
2016-11-08 16:49:59 -08:00
Zachary Anderson a1bcf051d8 clang-format runtime/vm
R=johnmccutchan@google.com

Review URL: https://codereview.chromium.org/2481873005 .
2016-11-08 13:54:47 -08:00
Vyacheslav Egorov 0635b57d43 Reland "Recognize and optimize a.runtimeType == b.runtimeType pattern."
This relands commit f4ec20abac.

BUG=
R=rmacnak@google.com

Review URL: https://codereview.chromium.org/2465793003 .
2016-11-01 16:49:02 +01:00
Ryan Macnak e56d8eef56 Complain if an embedder fails to provide a vm isolate or isolate snapshot to a VM built without DART_NO_SNAPSHOT.
Closes #27649

R=asiva@google.com

Review URL: https://codereview.chromium.org/2441193002 .
2016-10-21 16:51:59 -07:00
Florian Schneider 7e6d8f5b66 VM: Remove unnecesary load of isolate in some stubs.
The fast-path allocation can always load the current heap
from the thread object instead.

BUG=
R=rmacnak@google.com

Review URL: https://codereview.chromium.org/2427043002 .
2016-10-18 13:45:53 -07:00
Zach Anderson 78eed0f9a2 Turn off trace_shutdown flag for Windows
Review URL: https://codereview.chromium.org/2300343004 .
2016-09-02 15:34:53 -07:00
Zach Anderson d640f6ae49 Turn on trace shutdown flag on Windows
There are flaky crashes on the Windows bots that look like they are
happening during shutdown. Temporarily turn on the trace shutdown flag
to help investigate.

R=asiva@google.com

Review URL: https://codereview.chromium.org/2308653002 .
2016-09-02 10:12:53 -07:00
Ryan Macnak ba94427eb1 AOT: When a call goes polymorphic but has a single target, transition to a stub that does a cid range check.
Expand the range on a miss if all classes in the range have the same lookup result, otherwise transition to the stub that does a linear scan of ICData.

Because we do a depth-first sort of classes during AOT, if a call site sees only objects all inheriting the same function as the call target, the call site will be handled by this new stub.

Adjust LoadClassIdMayBeSmi on x64 to preserve the object.

R=fschneider@google.com

Review URL: https://codereview.chromium.org/2279563002 .
2016-08-31 11:12:22 -07:00
Terry Lucas c811e3c26e Currently breaks Dartium. Will investigate with John.
Revert "Clear isolate callback data before running shutdowncallback"

This reverts commit aed6dd844d.

TBR=jacobr@google.com,johnmccutchan@google.com

Review URL: https://codereview.chromium.org/2224543002 .
2016-08-05 11:01:51 -07:00
John McCutchan aed6dd844d Clear isolate callback data before running shutdowncallback
BUG=
R=turnidge@google.com

Review URL: https://codereview.chromium.org/2212083002 .
2016-08-04 13:09:24 -07:00
Ryan Macnak 9470c085c3 Fix allocation stats for cross-compiled AOT targeting ARM or MIPS.
Resolves disagreement between SIMARM and ARM on the size of ClassHeapStats. Fixes assertion failures in AllocStats::Verify.

R=fschneider@google.com

Review URL: https://codereview.chromium.org/2172803002 .
2016-07-21 16:04:57 -07:00
Florian Schneider 63e3f4dc8b Make loader lock new-allocated to avoid shutdown crash.
Process::Exit does not do the normal shutdown procedure - this CL avoids
a crash in the static destructor of the loader info lock by making it
new-allocated.

Also remove --shutdown flag since the clean shutdown procedure is on by
default since a while now.

BUG=#26846
R=asiva@google.com, zra@google.com

Review URL: https://codereview.chromium.org/2147833002 .
2016-07-13 09:41:06 -07:00
Ryan Macnak d75699e863 Make core snapshots word-size portable again.
Flutter creates a single core snapshot (from x64) that is used by both sky_snapshot (x64) and the engine (arm).

R=asiva@google.com

Review URL: https://codereview.chromium.org/2132833002 .
2016-07-08 14:18:44 -07:00
Ryan Macnak 524fbc1e0f Use clustered serialization for full snapshots.
Retain the recursive-descent format for script and message snapshots.

Flutter gallery app on a Nexus 4
 - Snapshot, excluding instruction/rodata sections 3429177 -> 2874997B (-16%)
 - InitOnce 54.1 -> 8.4ms (-84%)
 - InitializeIsolate 374.3 -> 170.8ms (-54%)

R=asiva@google.com

Review URL: https://codereview.chromium.org/2032153003 .
2016-06-29 19:50:06 -07:00
Florian Schneider bbe812f727 Fix dead lock in isolate shutdown.
The service isolate is shutdown after the application isolates, so that any blocking i/o requests by pending isolate spawn tasks can be handled.

BUG=#26684
R=zra@google.com

Review URL: https://codereview.chromium.org/2052343002 .
2016-06-10 16:00:18 -07:00
Siva Annamalai 6b9581e228 Move code that sends an isolate shutdown message to the service isolate to the block after we transition the thread state to ThreadInVM.
R=johnmccutchan@google.com

Review URL: https://codereview.chromium.org/2047123002 .
2016-06-07 17:04:04 -07:00
Ryan Macnak 3f8c0bb0a9 Don't overload FreeListElement for become.
R=asiva@google.com, johnmccutchan@google.com

Review URL: https://codereview.chromium.org/2026643004 .
2016-06-02 10:57:34 -07:00
Ryan Macnak 85cdc0eac2 Don't assume we want the iOS ABI if running simarm on Mac and the EABI otherwise.
Allow controlling the target ABI by defining TARGET_ABI_IOS or TARGET_ABI_EABI.  If neither is defined, default to the previous behavior.

Make Linux, Mac, Android and iOS agree on the value of PreferredCodeAlignment for all architectures.

BUG=http://dartbug.com/26464
R=zra@google.com

Review URL: https://codereview.chromium.org/1982613003 .
2016-05-17 15:03:54 -07:00
Ryan Macnak 1e38923643 Check snapshots for feature compatibility.
- Full snapshots must be written and read by VMs in the same
   mode (debug/release/product).
 - Snapshots with ICData must be written and read by VMs in same
   checked-mode state.
 - Snapshots with code must be written and read by VMs targeting the
   same architecture and ABI.

Fix use-after-free of VM isolate snapshot error message.

R=asiva@google.com

Review URL: https://codereview.chromium.org/1975423002 .
2016-05-16 14:00:05 -07:00
Ryan Macnak 1e8fdaee68 Support for taking full snapshots from 'dart', not just 'dart_bootstrap'.
- Don't create rival copies of the predefined symbols in isolates in dart_bootstrap.
 - Don't do work to save these rival copies during symbol table compaction.
 - Create unified symbol table just before writing the vm isolate.
 - Create unified list of scripts to include in the vm isolate.
 - Ignore object ids of the old vm isolate when writing a new one.
 - Ensure token stream private keys are hashed.
 - Use the type of isolate we are writing instead of an object's current isolate to decide if vm isolate objects are written symbolically.

BUG=
R=asiva@google.com

Review URL: https://codereview.chromium.org/1944213002 .
2016-05-10 10:13:33 -07:00
Ryan Macnak 257b3a82b8 JIT precompilated snapshots.
(Precompiled snapshots with unoptimized code.)

+ ./out/ReleaseX64/dart --package-root=./out/ReleaseX64/packages ./pkg/compiler/lib/src/dart2js.dart /usr/local/google/home/rmacnak/hello.dart
Dart file (/usr/local/google/home/rmacnak/hello.dart) compiled to JavaScript: out.js

real	0m3.299s
user	0m3.197s
sys	0m0.831s

+ ./out/ProductX64/dart_bootstrap --full-snapshot-after-run=/usr/local/google/home/rmacnak/dart3/sdk/app --package-root=./out/ReleaseX64/packages ./pkg/compiler/lib/src/dart2js.dart /usr/local/google/home/rmacnak/hello.dart
Dart file (/usr/local/google/home/rmacnak/hello.dart) compiled to JavaScript: out.js
+ ./out/ProductX64/dart --run-full-snapshot=/usr/local/google/home/rmacnak/dart3/sdk/app --package-root=./out/ReleaseX64/packages ./pkg/compiler/lib/src/dart2js.dart /usr/local/google/home/rmacnak/hello.dart
vm-service: Isolate creation error: (null)
Dart file (/usr/local/google/home/rmacnak/hello.dart) compiled to JavaScript: out.js

real	0m1.979s
user	0m1.806s
sys	0m0.581s

+ ./out/ReleaseX64/dart_bootstrap --use_blobs --gen-precompiled-jit-snapshot=/usr/local/google/home/rmacnak/dart3/sdk --package-root=./out/ReleaseX64/packages ./pkg/compiler/lib/src/dart2js.dart /usr/local/google/home/rmacnak/hello.dart
Dart file (/usr/local/google/home/rmacnak/hello.dart) compiled to JavaScript: out.js
VMIsolate(CodeSize): 2699304
Isolate(CodeSize): 5930097
Instructions(CodeSize): 9440176
Total(CodeSize): 18069577
+ ./out/ReleaseX64/dart --use_blobs --run-precompiled-jit-snapshot=/usr/local/google/home/rmacnak/dart3/sdk --package-root=./out/ReleaseX64/packages ./pkg/compiler/lib/src/dart2js.dart /usr/local/google/home/rmacnak/hello.dart
Dart file (/usr/local/google/home/rmacnak/hello.dart) compiled to JavaScript: out.js

real	0m0.994s
user	0m1.259s
sys	0m0.229s

R=asiva@google.com, fschneider@google.com

Review URL: https://codereview.chromium.org/1938653002 .
2016-05-04 18:47:36 -07:00
Ryan Macnak f7a3e215a5 Undo "Don't include an object header for instructions in the text section."
This undoes most of b2f3e8efe1.

This optimization prevents precompiled code from being disabled and re-enabled, because disabling causes the code to lose its only reference to its own instructions. This was okay for precompilated code that ran without a JIT because it is never disabled, but precompiled code that runs in a JIT will become disabled when corresponding optimized code is compiled and re-abled after a deopt.

R=fschneider@google.com

Review URL: https://codereview.chromium.org/1925153003 .
2016-05-03 11:22:28 -07:00
Ryan Macnak f55c9c54a8 Split Snapshot::kFull into kCore, kAppWithJIT, and kAppNoJIT. Remove snapshot_code flag.
R=asiva@google.com

Review URL: https://codereview.chromium.org/1918313003 .
2016-04-26 17:03:24 -07:00
Ryan Macnak 4bb6e9167c Make Dart_Initialize fail if a VM built as a JIT runtime gets a precompiled snapshot or vice versa.
R=johnmccutchan@google.com

Review URL: https://codereview.chromium.org/1902423003 .
2016-04-20 16:01:10 -07:00
Ryan Macnak 6304582145 Shuffle fields to make simarm and arm agree on the offset of Heap::new_space_.top_.
Fix non-simulated mips build.

BUG=
R=asiva@google.com

Review URL: https://codereview.chromium.org/1883053002 .
2016-04-14 09:50:33 -07:00
Ryan Macnak 7007644ba4 Include snapshot size in the events for reading the isolate snapshots.
R=johnmccutchan@google.com

Review URL: https://codereview.chromium.org/1844423003 .
2016-03-31 10:17:50 -07:00
Ryan Macnak f0d4f3151c Precompilation:
- Fix crash sending full class responses.
  - Don't wait for service isolate startup.
  - Add timeline events for deserializing and premarking the VM isolate.

R=johnmccutchan@google.com

Review URL: https://codereview.chromium.org/1835633002 .
2016-03-29 12:30:47 -07:00
Ryan Macnak b2f3e8efe1 Precompilation: don't include an object header for instructions in the text section.
Reference Instructions only through Code::entry_point_ (or Function::entry_point_). Store the instructions size in its corresponding Code object.

precompiled dart2js x64 22163470 -> 21621102 (-2.45%)

R=fschneider@google.com

Review URL: https://codereview.chromium.org/1808553002 .
2016-03-29 11:04:04 -07:00
Ivan Posva 528baf2173 - Limit 32-bit platforms to 1.5GB of memory for old gen by default.
- Fixed documentation for Dart_NewWeakPersistentHandle.
- Add clarifying comment.

BUG=
R=fschneider@google.com

Review URL: https://codereview.chromium.org/1837803003 .
2016-03-28 17:37:52 -07:00
Siva Annamalai f7d2b2e31e - Fix for issue 25950 (add registration of a thread exit callback)
- Moved some of the file and entropy callbacks to class Dart from
  class Isolate as they are not isolate specific.

R=johnmccutchan@google.com

Review URL: https://codereview.chromium.org/1807293002 .
2016-03-17 13:40:20 -07:00
John McCutchan c65114b6b4 Timeline API fixes for Flutter
API changes:

- Remove isolate specific Timeline APIs.
- Remove Dart_EmbedderTimelineGetTimeline callback.
- Add Dart_TimelineEvent so that arbitrary trace events can be added.

Internal changes:

- Remove isolate specific streams which were never used or controllable from outside the VM.

R=rmacnak@google.com

Review URL: https://codereview.chromium.org/1811613002 .
2016-03-16 12:18:46 -07:00
Siva Annamalai 0bd9c54792 Ensure that calls to EnableGrowthControl/DisableGrowthControl does not reset the last_usage_ value as this can result in the heuristic constantly growing the heap instead of GCing. This was observed with the background compilation being turned on as we disable growth control during installation of code in the background compiler thread.
R=iposva@google.com

Review URL: https://codereview.chromium.org/1771503002 .
2016-03-04 16:17:32 -08:00
Florian Schneider 944aed203a Remove left-over compiler-code from precompiled runtime.
Only instantiate IR classes in compiled regexp mode.

Remove remaining stub generation code.

BUG=
R=vegorov@google.com

Review URL: https://codereview.chromium.org/1739173002 .
2016-02-26 06:59:36 -08:00
Ivan Posva 8d18298fed - Remove Isolate::Flags structure and store flags directly in isolate.
- Make enable_asserts, enable_type_checks, error_on_bad_override and
  error_on_bad_type release mode flags only.

BUG=
R=fschneider@google.com

Review URL: https://codereview.chromium.org/1737693003 .
2016-02-25 18:06:56 -08:00
Siva Annamalai 2964f9e750 Change return value of ObjectStore::PreallocateObjects to return the error object or null instead of a bool. Most of the times the sticky error is cleared and returned as an error so returning a bool and querying the sticky error here does not work as the sticky error is a null object.
R=srdjan@google.com

Review URL: https://codereview.chromium.org/1721053002 .
2016-02-22 13:37:22 -08:00
John McCutchan fda3a9bc2b Remove more things
(stripped) dart_product before: 5307888
(stripped) dart_product after: 5275088

Reduction in size: 32800 bytes.

Removed entirely:

- debuginfo*
- elfgen*
- gdbjit*
- TraceBuffer
- vtune support

Removed in product:

- Compiler stats
- Code observers

R=asiva@google.com

Review URL: https://codereview.chromium.org/1711163002 .
2016-02-22 08:53:11 -08:00
Ivan Posva c822c34af6 - Add DEBUG_ONLY and NOT_IN_PRODUCT macros.
- Remove user_name_ field from RawClass using macros.
- Consolidate "#ifndef PRODUCT" and "#ifdef DEBUG" code using macros.

BUG=
R=rmacnak@google.com

Review URL: https://codereview.chromium.org/1715123003 .
2016-02-19 17:48:08 -08:00
Florian Schneider 1f7458ddf8 VM: Precompiled rodata snapshot.
For now only contains PC descriptors and stack maps and one-byte strings.

BUG=
R=rmacnak@google.com

Review URL: https://codereview.chromium.org/1584443002 .
2016-02-15 09:15:26 +01:00
Todd Turnidge 991e5b2c7b Add --trace-shutdown flag.
BUG=
R=johnmccutchan@google.com

Review URL: https://codereview.chromium.org/1670623002 .
2016-02-12 11:09:23 -08:00
John McCutchan e2e7af1229 Remove more feature in product mode
- Remove Timeline.
- Remove more vmservice code.
- Remove AST printing.
- Remove IL printing.
- Remove profiler.
- Remove thread interrupter.
- Remove disassembler.
- Remove Library::CheckFunctionFingerprints.

- Update test status files for product mode.

Size of dart_bootstrap before: 5287631
Size of dart_bootstrap after: 5112783

Reduction in size: 174848 bytes.

Total reduction in size (382734 + 174848): 557582 bytes.

R=rmacnak@google.com

Review URL: https://codereview.chromium.org/1678203002 .
2016-02-09 08:45:32 -08:00
Srdjan Mitrovic 4316d1bd17 Move sticky_error_ from isolate to thread
BUG=
R=asiva@google.com

Review URL: https://codereview.chromium.org/1672853002 .
2016-02-05 15:46:55 -08:00
John McCutchan d295b9c311 Remove many features when building product mode
Move all JSON printing code from object.cc to object_service.cc.

Not compiled in:

- Service protocol
- Debugger
- Debugger API
- JSONStream
- ObjectIdRing
- Profiler service
- Object JSON printing

Size of dart_bootstrap before: 5670365 bytes
Size of dart_bootstrap after: 5287631 bytes

Reduction in size: 382734 bytes.

R=rmacnak@google.com

Review URL: https://codereview.chromium.org/1660063002 .
2016-02-05 09:55:51 -08:00
John McCutchan 6f76e2af99 Add necessary support functions so that embedders can implemented pause on start and exit
- Add Dart_ShouldPauseOnStart, Dart_SetShouldPauseOnStart, Dart_IsPausedOnStart, Dart_SetPausedOnStart, Dart_ShouldPauseOnExit, Dart_SetShouldPauseOnExit, Dart_IsPausedOnExit, Dart_SetPausedOnExit to query and control pause on start / exit from outside of the default message handler.
- Add Dart_HandleMessages to process all regular messages from outside the default message handler.
- Allow per isolate overriding of pause on start / pause on exit flags.
- Set the resume_request bit when resuming from isolate start / exit.
- Clear the resume_request bit in the default message handler.
- Rename MessageHandler fields and accessors.
- Rename Isolate::Resume to Isolate::SetResumeRequest.

R=turnidge@google.com

Review URL: https://codereview.chromium.org/1665773004 .
2016-02-03 15:33:40 -08:00
Zachary Anderson 810a9fca13 Turn on shutdown
R=asiva@google.com

Review URL: https://codereview.chromium.org/1556373002 .
2016-01-05 10:17:28 -08:00
Zachary Anderson 18929970a0 Fixes for OSThread creation shutdown race.
Also, backs out bad change to the thread pool. The real fix is to
move the disable of OSThread creation until after the thread pool
shuts down.

R=asiva@google.com

Review URL: https://codereview.chromium.org/1557033002 .
2016-01-04 15:22:02 -08:00
Zachary Anderson a6818de006 Thread fixes for shutdown.
- Don't disable thread creation until isolates have shutdown.
- A thread-pool thread may try to start up after thread creation has
  been disabled. We must reap the Worker objects for these threads.
- A thread may try to start up after OSThread::thread_list_lock_ has
  been destroyed. Detect this.

R=asiva@google.com

Review URL: https://codereview.chromium.org/1555643002 .
2015-12-30 15:01:33 -08:00
Siva Annamalai b40775549f Fix for issue 25236
- Ensure that no new OSThreads are created once the VM is in shutdown mode
- Do not query thread_list_head_ without a lock (this leads to the race which causes two threads to delete the lock and TLS at the same time)

BUG=25236
R=zra@google.com

Review URL: https://codereview.chromium.org/1537543002 .
2015-12-18 10:16:28 -08:00
John McCutchan 7003c9686a Fix --print-metrics
Fixes #25037

R=rmacnak@google.com

Review URL: https://codereview.chromium.org/1531553002 .
2015-12-16 07:31:29 -08:00