- [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 .
- 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 .
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 .
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 .
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 .
- [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 .
- [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 .
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#26919R=johnmccutchan@google.com
Review URL: https://codereview.chromium.org/2186423002 .
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 .
- [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 .
- [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 .
- [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 .
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 .
- [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 .