The call sequence is very similar to a classic IC call, except the guarded class and the target are loaded indirectly from the constant pool instead of as immediates. In the monomorphic case, we call directly to the expected target with a class check in the callee. In the unlinked, polymorphic and megamorphic cases, we call a stub; these case are now call-through instead of call-and-return.
Every code, except stubs involved in switchable calls, includes the class check sequence at the beginning. So we now distinguish between a checked and an unchecked entry point. Generated code except the switchable call continues to use the unchecked entry point.
PC offsets are calculated relative to the beginning of the instruction stream, rather than either entry point.
BUG=
R=fschneider@google.com
Review URL: https://codereview.chromium.org/2226893002 .
We can't do this for the binary operators because they must be writable and not shared for the fast Smi op stubs to record invocation counts.
Suspected to help avoid races, see Issue #26946.
Also remove some dead code and avoid TLS.
R=fschneider@google.com
Review URL: https://codereview.chromium.org/2217733002 .
- [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 .
- [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 .
- [x] Add an is static call bit to ICData
- [x] Rewrite the reset ICData iterators to rely on that bit rather than the function's ic data map
BUG=
Review URL: https://codereview.chromium.org/2064693003 .
table, this ensures that we do not linearly walk through
a large type list in the class calling the expensive
'Type::Equals' method (some applications have close to
1304 generic types in them)
- Use the stand hash table implementation for TypeArguments
canonicalization instead of a custom hash table
R=johnmccutchan@google.com, regis@google.com, rmacnak@google.com
Review URL: https://codereview.chromium.org/1965493004 .
This is a cut of the work that Todd and I collaborated on in the reload branch.
In this CL, we've dropped the loader port hacks, in other words, on stack reloading in the standalone embedder does not work yet.
- [x] Support for hot reloading of isolate source code
- [x] Unit test harness and many tests
- [x] Service protocol and Observatory support
- [x] Product build does not include support for hot reloading.
R=rmacnak@google.com
Review URL: https://codereview.chromium.org/1965823002 .