Commit Graph

495 Commits

Author SHA1 Message Date
Zachary Anderson e29da6037b Small cleanups and linter fixes.
Review URL: https://codereview.chromium.org/2455983002 .
2016-10-27 05:02:20 -07:00
Florian Schneider 197d56d853 VM: Fix another dead-lock in background compiler.
Grabbing the lock must always take safepoints into account.

Observed as a flaky timeout on standalone/http_launch_test.

BUG=
R=asiva@google.com

Review URL: https://codereview.chromium.org/2426213002 .
2016-10-18 16:53:10 -07:00
John McCutchan 54619795aa Fix product build
BUG=

Review URL: https://codereview.chromium.org/2416913002 .
2016-10-13 07:57:08 -07:00
John McCutchan 2d0a08baf9 Make reloadSources service RPC public
- [x] Make `reloadSources` RPC public.
- [x] Add an optional 'pause' parameter to `reloadSources`. When set to true, the isolate will enter the debug pause loop immediately after reloading sources and before resuming execution. This makes it possible for debugger clients to set breakpoints before resuming.
- [x] Add reload_sources_test which tests pausing after reload.
- [x] Fix a bug in `GetVarDescriptors` where a null code object could be used.

R=turnidge@google.com

Review URL: https://codereview.chromium.org/2411153002 .
2016-10-13 07:45:56 -07:00
Ryan Macnak b85956e6d9 Make adding a pending deopt atomic.
Issue #27496

R=fschneider@google.com

Review URL: https://codereview.chromium.org/2395123003 .
2016-10-07 13:43:43 -07:00
Siva Annamalai 42c58c5c2d - fix some cases where we are using uninitialized memory
- use attribute 'no msan' on NativeEntry::ReturnValueIsError function
  as msan doesn't seem to track the return slot being set by a native
  function
- vsnprintf seems to have issues with msan so unpoison the allocated
  memory buffer everytime vsnprintf is used to suppress the error.

BUG=
R=fschneider@google.com

Review URL: https://codereview.chromium.org/2383293003 .
2016-10-05 16:54:18 -07:00
Ryan Macnak 763daa9d06 Reapply "Lazy deopt without code patching."
When throwing to a frame scheduled for lazy deopt, update the continuation pc for that frame to be the catch handler.

Weaken new assert that the deopt pc belongs to the frame's code as the deopt pc for the last eager deopt in a function lies outside the code, after the call to the deopt stub.

R=fschneider@google.com

Review URL: https://codereview.chromium.org/2392613002 .
2016-10-03 11:31:48 -07:00
Ryan Macnak 4e9a473746 Revert "Lazy deopt without code patching."
This reverts commit 6cff17c59a.

Review URL: https://codereview.chromium.org/2382953004 .
2016-09-30 18:04:58 -07:00
Ryan Macnak 6cff17c59a Lazy deopt without code patching.
Keep a side table that maps a fp back to a deopt pc.

R=fschneider@google.com

Review URL: https://codereview.chromium.org/2380403003 .
2016-09-30 16:53:29 -07:00
Florian Schneider cd05ee0c81 VM: Fix canonicalization of old-space allocated instances
Instances of objects allocated in old-space would not get canonicalized properly,
resulting in duplicates of these instances on the heap.

This can be e.g. argument descriptors allocated in the background compiler thread.

This also fixes the same issue occurring with isolate reload.

Also, add a NoSafepointScope for consistency.

BUG=#27364
R=asiva@google.com

Review URL: https://codereview.chromium.org/2351613005 .
2016-09-19 17:27:05 -07:00
John McCutchan 632c76942c Add Dart_GetStickyError
- [x] Add Dart_GetStickyError.
- [x] Change Dart_SetStickyError to allow for null and also not set the pause on exit bit.

BUG=
R=turnidge@google.com

Review URL: https://codereview.chromium.org/2350633003 .
2016-09-19 13:31:09 -07:00
John McCutchan b961fc01ad Fix bad commit of stale patch set of original CL "Make NoReloadScope thread safe" (https://codereview.chromium.org/2344193002/)
BUG=

Review URL: https://codereview.chromium.org/2344263002 .
2016-09-16 11:33:43 -07:00
John McCutchan d113638891 Make NoReloadScope thread safe
Fixes #27366

BUG=
R=fschneider@google.com

Review URL: https://codereview.chromium.org/2344193002 .
2016-09-16 11:18:36 -07:00
Ryan Macnak bff1351a22 Address additional comments re class id sorting.
R=asiva@google.com

Review URL: https://codereview.chromium.org/2305493002 .
2016-08-31 17:38:20 -07:00
Ryan Macnak e46b3cd994 Treat background finalization as another GC task so it won't run in parallel with the marker.
Prevents a race between the marker and finalizer when the handle is freed (fixes #27029).

Disallow creating weak handles for immediate objects. We don't distinguish these from free handles, so their callbacks are never run.

Don't report freed handles over the vm service.

R=asiva@google.com

Review URL: https://codereview.chromium.org/2281193002 .
2016-08-29 16:47:56 -07:00
Ryan Macnak 6a5a868a4e AOT: Reassign class ids so class hierarchies have contiguous ranges.
R=fschneider@google.com

Review URL: https://codereview.chromium.org/2281263002 .
2016-08-26 16:17:05 -07:00
John McCutchan d8eb5ffb57 Do not allow a hot reload if the isolate has a sticky error
BUG=
R=turnidge@google.com

Review URL: https://codereview.chromium.org/2278613002 .
2016-08-24 11:31:46 -07:00
Carlo Bernaschina af269a5d9c Avoid to send _tagCounters if the profiler is disabled
R=rmacnak@google.com

Review URL: https://codereview.chromium.org/2256863002 .
2016-08-17 14:07:31 -07:00
Ryan Macnak 6b5f29fb70 Reload: Don't free the saved class table while another thread may be reading it.
Fixes #27016.

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

Review URL: https://codereview.chromium.org/2240283002 .
2016-08-12 16:12:25 -07:00
John McCutchan 800b1352ce Add an API for setting the sticky error
BUG=
R=asiva@google.com

Review URL: https://codereview.chromium.org/2223913002 .
2016-08-08 12:14:33 -07:00
Siva Annamalai 99baa3de32 Fix for issue 27019 (Safepoint assertion failure in Flutter)
BUG=27019
R=rmacnak@google.com

Review URL: https://codereview.chromium.org/2215523002 .
2016-08-04 13:56:04 -07:00
Ryan Macnak ecbf3f7b31 Disable canonical verifier for precompiled.
Issue #27003

TBR=asiva@google.com

Review URL: https://codereview.chromium.org/2201163004 .
2016-08-03 13:43:06 -07:00
John McCutchan a6114c23cd Simplify reload error reporting
- [x] Rationalize the load failure code path.
- [x] Remove support for reload to be aborted via a callback.
- [x] If a reload fails due to an unwind error, ignore it as the isolate is dead anyway.
- [x] Move more allocations into the zone.

Review URL: https://codereview.chromium.org/2208553002 .
2016-08-02 16:11:30 -07:00
John McCutchan 059470cf85 Make all reload zone allocations use the same zone
- [x] Use a single outer zone for all zone allocations done during a reload. This fixes an issue where we were allocating  objects in different zones that were destroyed before we expected them to be.
- [x] Rename some methods.
- [x] Made most methods on IsolateReloadContext private.

R=rmacnak@google.com

Review URL: https://codereview.chromium.org/2201093002 .
2016-08-02 09:36:46 -07:00
Siva Annamalai 714cd8ee6b Trun on canonical objects verification after reload (still have one workaround for immutable arrays, which is related to the enum issue).
R=johnmccutchan@google.com

Review URL: https://codereview.chromium.org/2201473002 .
2016-08-01 17:07:43 -07:00
John McCutchan 501c9896c1 Refactor how we report reload results
- [x] Give the IsolateReloadContext a JSONStream.
- [x] Remove the sticky reload error from the isolate.
- [x] Print all reasons for cancelling when we fail.

R=turnidge@google.com

Review URL: https://codereview.chromium.org/2196723002 .
2016-08-01 12:30:39 -07:00
Todd Turnidge 1166f83bf6 Only reload libraries when they may have been modified.
We now check all of the scripts which make up a library.  If any
script is modified, then we consider that library to be modified.  We
also consider any library which imports a modified library to be
modified.  To propagate this info efficiently, we build and discard
the imported-by graph when beginning a reload.

The embedder must provide a FileModifiedCallback in order to support
the detection of modified scripts.

In order to detect changes to package: libraries, we have modified the
embedder interface to provide the resolved url when possible, so that
we don't need to re-resolve package uris when checking for reload.
This change is incompatible and all embedders will need to be updated.

We now support a "force" flag when reloading sources.  This causes all
libraries to be reloaded regardless of whether the underlying scripts
have been updated.

Closes #26919

R=johnmccutchan@google.com

Review URL: https://codereview.chromium.org/2186423002 .
2016-07-29 11:23:18 -07:00
Siva Annamalai b78aeee6f2 Fix race condition with HasMutatorThread that was being used without a lock.
R=fschneider@google.com

Review URL: https://codereview.chromium.org/2191723002 .
2016-07-28 18:32:52 -07:00
Siva Annamalai bd1895017b Add a verification step which iterates over the heap and verifies that all canonical objects are consistent (i.e canonicalizing the object returns the object).
Review URL: https://codereview.chromium.org/2160953002 .
2016-07-25 14:35:13 -07:00
John McCutchan d0ebc78d68 Peturb the reload points on the reload bot
BUG=
R=rmacnak@google.com

Review URL: https://codereview.chromium.org/2183533002 .
2016-07-25 13:34:04 -07:00
Ryan Macnak 2c7983a1d1 vm-service: Include pauseEvent even when running without debugger support.
Pausing the isolate at event boundries, such as --pause-isolates-on-start, doesn't require debugger support.

Fix crash in getStack RPC when running the JIT with --support-debugger=false.

R=johnmccutchan@google.com

Review URL: https://codereview.chromium.org/2180613002 .
2016-07-25 09:24:30 -07:00
Ryan Macnak fd63b906c0 Include an empty breakpoints list on the Isolate response when the debugger is disabled.
The protocol documentation claims this field is non-nullable and at least two clients assume it as well.

BUG=http://dartbug.com/26938
R=johnmccutchan@google.com

Review URL: https://codereview.chromium.org/2172683003 .
2016-07-21 14:33:24 -07:00
Florian Schneider 25070b85b1 Fix for use-after-free of reload context
Delete the reload context after the last use. My first attempt did not work
with our unit test framework for reload cc tests.  When running unit tests
the reload context is needed for longer, and deleted separately.

BUG=#26895
R=johnmccutchan@google.com

Review URL: https://codereview.chromium.org/2164703003 .
2016-07-19 18:28:56 -07:00
Florian Schneider daea7e69ca Revert "Fix use-after-free in isolate reload."
This reverts commit 16e577741d.

TBR=johnmccutchan@google.com,

BUG=

Review URL: https://codereview.chromium.org/2162113002 .
2016-07-19 10:44:58 -07:00
Florian Schneider 16e577741d Fix use-after-free in isolate reload.
The reload context may still be used if an error is reported.

BUG=#26895
R=johnmccutchan@google.com

Review URL: https://codereview.chromium.org/2159923003 .
2016-07-19 10:25:02 -07:00
John McCutchan 0e550aed71 Do not reload isolates if we are in the process of shutting down the VM
BUG=
R=zra@google.com

Review URL: https://codereview.chromium.org/2151253003 .
2016-07-15 11:17:59 -07:00
Siva Annamalai e0164a0ceb More guarding of code under #ifndef PRODUCT ... #endif
R=rmacnak@google.com

Review URL: https://codereview.chromium.org/2147363002 .
2016-07-14 17:44:24 -07:00
Ryan Macnak 2d9087648d More ifndef PRODUCT.
R=asiva@google.com

Review URL: https://codereview.chromium.org/2153593002 .
2016-07-14 15:30:32 -07:00
Siva Annamalai aaa0867567 More changes to use #ifndef PRODUCT ... #endif explicitly instead of relying on compiler magic.
R=rmacnak@google.com

Review URL: https://codereview.chromium.org/2146713004 .
2016-07-14 11:13:13 -07:00
John McCutchan 2cb555c7dd Have --print-metrics use stderr to work around issue with analyzer_cli
BUG=
R=rmacnak@google.com

Review URL: https://codereview.chromium.org/2148613002 .
2016-07-13 08:52:53 -07:00
John McCutchan 24a0988df6 Hot reload fixes for isolate tests
- [x] Bump maximum number of vm arguments (fixes a bunch of reload crashes....)
- [x] Only check that an isolate has reload if it was ever runnable.
- [x] Skip some isolate tests that use deferred libraries or are checking for closure identity.

R=rmacnak@google.com

Review URL: https://codereview.chromium.org/2141763002 .
2016-07-11 13:58:26 -07:00
John McCutchan ef71bc1834 Improve hot reload test mode
- [x] Start reloading even earlier.
- [x] Keep the value of FLAG_reload_every per-isolate (so spawned isolates reload eagerly too).
- [x] Adjust the reload every back off curve to be linear in the beginning.
- [x] Cap the reload every threshold at 1,000,000
- [x] Test status file updates.
- [x] Stop disabling the background compiler / OSR when running tests.
- [x] Skip multi tests with compilation errors when reloading.

BUG=
R=rmacnak@google.com

Review URL: https://codereview.chromium.org/2133823002 .
2016-07-11 12:29:13 -07:00
Siva Annamalai 56fba25f0f Allow for recursive invocation of SafepointOperationScopes.
R=fschneider@google.com

Review URL: https://codereview.chromium.org/2126413002 .
2016-07-07 15:27:49 -07:00
John McCutchan 621ce4e2fd Add --hot-reload-test-mode flag to embedder and wire it up to test.py
- [x] Add --hot-reload-test-mode to standalone embedder.
- [x] Have test.py pass `--hot-reload-test-mode` instead of specific flags.
- [x] Add --reload_every_back_off flag to control exponential backof off reloads.
- [x] Add --check_reloaded flag to ensure that an isolate has reloaded at least once before exiting.

BUG=
R=rmacnak@google.com

Review URL: https://codereview.chromium.org/2118923002 .
2016-07-01 14:26:25 -07:00
Florian Schneider 858ee49cea Separate mutex for megamorphic cache tables lookup in the background compiler.
Lookup and updates to the megamorphic cache tables should be protected by a
separate mutex - using isolate->mutex() can cause a dead lock if the background
compiler holds this lock while it's being stopped by the mutator thread.

BUG=#26808
R=asiva@google.com

Review URL: https://codereview.chromium.org/2118813003 .
2016-07-01 12:43:20 -07:00
Zachary Anderson a503570e3a Fuchsia: Initial check-in.
Instructions to build and run are in README.fuchsia.

R=asiva@google.com

Review URL: https://codereview.chromium.org/2117593002 .
2016-07-01 12:42:05 -07:00
Ryan Macnak 103e316f6a Reapply "Background finalization."
- Fix double-finalization by marking handles that are in a finalization queue.
 - Remember external size in words instead of bytes.
 - Add SlowFinalizer test.

R=asiva@google.com

Review URL: https://codereview.chromium.org/2084193003 .
2016-06-22 16:26:49 -07:00
Ryan Macnak ae94be3f4d Revert "Background finalization."
This reverts commit d265a3db53.

Review URL: https://codereview.chromium.org/2088923002 .
2016-06-21 13:15:12 -07:00
Ryan Macnak d265a3db53 Reapply "Background finalization."
This reverts commit 7d9e75e0b6.

R=asiva@google.com

Review URL: https://codereview.chromium.org/2080353002 .
2016-06-21 09:27:23 -07:00
John McCutchan 51ace86544 Bug fixes for hot reload
- [x] Report the reload error synchronously from the _reloadSources RPC.
- [x] Add sticky reload error to an isolate so we can report the error.
- [x] Remove redundant 'OnStackReload'.
- [x] Fix a bug where a class could have a field added but we wouldn't reject it.
- [x] Add unit test for above bug fix.
- [x] Enable reload via the service protocol with a live stack.

R=fschneider@google.com

Review URL: https://codereview.chromium.org/2070873002 .
2016-06-16 11:02:35 -07:00