Samir Jindel
39c93a2b19
Revert "Revert "[vm/kernel] Expression execution through Kernel."
...
This reverts commit b5154dd01e .
Original revision is in patchset 1.
Change-Id: Ic0776011c6fdbd64c025086535351474a9a88b6e
Reviewed-on: https://dart-review.googlesource.com/54407
Commit-Queue: Samir Jindel <sjindel@google.com >
Reviewed-by: Alexander Aprelev <aam@google.com >
2018-05-15 12:03:22 +00:00
Samir Jindel
b5154dd01e
Revert "[vm/kernel] Expression execution through Kernel.
...
This reverts commit afd0a52a5a .
Reason for revert: Breaks kernel-a32 and kernel-rbc bots
Original change's description:
> [vm/kernel] Expression execution through Kernel.
>
> Change-Id: Id90c91cb3b71f9ce703e21fe48147b86a7764d34
> Reviewed-on: https://dart-review.googlesource.com/42562
> Reviewed-by: Ryan Macnak <rmacnak@google.com >
> Reviewed-by: Alexander Aprelev <aam@google.com >
> Commit-Queue: Samir Jindel <sjindel@google.com >
TBR=aam@google.com ,rmacnak@google.com ,sjindel@google.com
Change-Id: If1ecad6145aeab81d5d3581798a628ead0265c38
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://dart-review.googlesource.com/54420
Reviewed-by: Samir Jindel <sjindel@google.com >
Commit-Queue: Samir Jindel <sjindel@google.com >
2018-05-09 12:41:00 +00:00
Samir Jindel
afd0a52a5a
[vm/kernel] Expression execution through Kernel.
...
Change-Id: Id90c91cb3b71f9ce703e21fe48147b86a7764d34
Reviewed-on: https://dart-review.googlesource.com/42562
Reviewed-by: Ryan Macnak <rmacnak@google.com >
Reviewed-by: Alexander Aprelev <aam@google.com >
Commit-Queue: Samir Jindel <sjindel@google.com >
2018-05-09 10:27:52 +00:00
Ryan Macnak
9174a627f5
[vm, gc] Ensure BackgroundCompiler can't be deleted during a safepoint.
...
Previously, the background compiler was deleted by the thread pool, which could have raced ahead of the mutator clearing its reference. Now it is deleted by the mutator.
Change-Id: Id353a96022f699131ee60fe31156cd0404dfd285
Reviewed-on: https://dart-review.googlesource.com/24342
Commit-Queue: Ryan Macnak <rmacnak@google.com >
Reviewed-by: Siva Annamalai <asiva@google.com >
2017-11-30 22:59:51 +00:00
Vyacheslav Egorov
8a179fb953
[VM, Compiler] Move compiler to a separate folder.
...
New folder structure (nested under vm/):
- compiler/
- jit/ - JIT specific code
- aot/ - AOT specific code
- backend/ - all middle-end and back-end code (IL, flow graph)
- assembler/ - assemblers and disassemblers
- frontend/ - front ends (AST -> IL, Kernel -> IL)
compiler/README.md would be the documentation root for the compiler
pipeline
Bug: https://github.com/dart-lang/sdk/issues/30575
Change-Id: I2dfd9688793bff737f7632ddc77fca766875ce36
Reviewed-on: https://dart-review.googlesource.com/2940
Reviewed-by: Vyacheslav Egorov <vegorov@google.com >
Commit-Queue: Vyacheslav Egorov <vegorov@google.com >
2017-09-04 15:15:18 +00:00
Zachary Anderson
6cd8a79078
VM: Re-format to use at most one newline between functions
...
R=asiva@google.com
Review-Url: https://codereview.chromium.org/2974233002 .
2017-07-13 08:08:37 -07:00
Ben Konyi
f2fd150ea0
Added new type of unit test, RAW_UNIT_TEST_CASE, which is used for tests that can be flaky if run while the VM is alive. Tests created using the RAW_UNIT_TEST_CASE macro will run after the VM has shutdown to avoid having any worker threads contaminating the test results.
...
BUG=
R=johnmccutchan@google.com
Review-Url: https://codereview.chromium.org/2666133002 .
2017-01-31 15:16:38 -08:00
Ryan Macnak
cbf3eaeb90
Fix various memory leaks in unit tests detected by a new version of ASAN.
...
R=zra@google.com
Review-Url: https://codereview.chromium.org/2620413002 .
2017-01-11 11:12:40 -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
Srdjan Mitrovic
4465fc3492
Address Siva's comments from https://codereview.chromium.org/1877973002/
...
BUG=
R=asiva@google.com
Review URL: https://codereview.chromium.org/1880233002 .
2016-04-12 15:44:50 -07:00
Ivan Posva
5be5d54529
- Refactor Symbol allocation to expect a thread parameter.
...
- Preallocate all tokens as symbols to avoid repeated lookups.
- Pass thread/zone where useful while doing this change.
- Avoid allocating symbols for error messages.
BUG=
R=fschneider@google.com
Review URL: https://codereview.chromium.org/1870343002 .
2016-04-11 16:28:29 -07:00
Ryan Macnak
87e8bc2c96
VM: Evaluate-in-frame should happen in the scope of the method class, not the receiver class.
...
BUG=http://dartbug.com/26161
R=hausner@google.com
Review URL: https://codereview.chromium.org/1854243002 .
2016-04-04 15:22:57 -07: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
Florian Schneider
d8677964a3
Move precompilation-related flags to flags list.
...
They become compile-time constants in the precompiled runtime, and in product mode.
In precompiled product mode, the precompiled value has precedence.
BUG=
R=rmacnak@google.com
Committed: https://github.com/dart-lang/sdk/commit/5c9f18c6c87284395564051a052cc4acc9b6f59a
Review URL: https://codereview.chromium.org/1731743003 .
2016-02-25 07:53:39 -08:00
Ryan Macnak
bd85deaf4e
Revert "Move precompilation-related flags to flags list."
...
The default value of print_stop_message was architecture specific.
TBR=fschneider@google.com
Review URL: https://codereview.chromium.org/1739593002 .
2016-02-24 18:08:01 -08:00
Florian Schneider
5c9f18c6c8
Move precompilation-related flags to flags list.
...
They become compile-time constants in the precompiled runtime, and in product mode.
In precompiled product mode, the precompiled value has precedence.
BUG=
R=rmacnak@google.com
Review URL: https://codereview.chromium.org/1731743003 .
2016-02-24 17:31:08 -08:00
Siva Annamalai
e72c1fb47d
Implement safepointing of threads :
...
- uses thread execution status transition to track when a thread is in a safepoint or needs to block for a safepoint
- introduces a monitor per Thread object
- uses a per thread safepoint handshake between the thread requesting a safepoint and the requested thread.
The ThreadRegistry class now contains only the thread list for an isolate and the functionality of scheduling a thread onto an Isolate and unscheduling it from teh isolate. We could fold this functionality into the Isolate class in a different CL.
R=rmacnak@google.com , zra@google.com
Review URL: https://codereview.chromium.org/1541073002 .
2016-02-01 10:57:34 -08:00
Srdjan Mitrovic
1b17e78f38
Create code and instruction object, and install them in the background compilation thread while bringing mutator thread to a saferpoint.
...
BUG=
R=asiva@google.com
Review URL: https://codereview.chromium.org/1454553004 .
2015-11-18 11:32:17 -08:00
Srdjan Mitrovic
44ccbb5e29
Copy ICData descriptors when starting background compilation, so that they do not change while compiling
...
BUG=
R=asiva@google.com
Review URL: https://codereview.chromium.org/1414933006 .
2015-10-28 10:19:35 -07:00
Srdjan Mitrovic
772ee329c4
Make ICData changes thread safe (first compute array, then set it). Install code in the main thread instead of in the background compilation thread.
...
BUG=
R=asiva@google.com
Review URL: https://codereview.chromium.org/1410363005 .
2015-10-26 15:12:29 -07:00
Srdjan Mitrovic
e520dd567f
Remove isolate argument from handle allocation: Part I
...
BUG=
R=hausner@google.com
Review URL: https://codereview.chromium.org/1393373003 .
2015-10-12 11:32:08 -07:00
Daniel Andersson
6636b92090
Only test optimizing compilation in helper thread compilation test.
...
Also fix a couple of old handles (leaving the bulk of them for a separate CL).
BUG=
R=srdjan@google.com
Review URL: https://codereview.chromium.org//1302623002 .
2015-08-19 09:42:56 -07:00
Daniel Andersson
b96076eba4
Test running compiler on a helper thread with mutator paused.
...
This test currently fails on new-space allocation, etc., and is meant to be used as a milestone in TDD towards a fully concurrent optimizing compiler.
(This is analogous to https://codereview.chromium.org/1289153002/
which does pass.)
BUG=
R=srdjan@google.com
Review URL: https://codereview.chromium.org//1297663003 .
2015-08-17 13:27:57 -07:00
Florian Schneider
8d38a58c18
Make array allocation stub shared between isolates.
...
This allows to make the last explicitly named stubs shared between isolates.
When sharing code stubs, we can't do patching at their entry anymore.
Therefore, I had to remove patching support of the array allocation stub.
Is this a functionality we want to keep?
The change is mostly performance-neutral because optimized code has an inlined fast
path for array allocation and only uses the stub for the slow-case.
The only isolate-specific stubs left are object allocation stubs which are
associated with their Class are per-isolate.
Since this CL removes any isolate-specific stubs from StubCode, it becomes AllStatic.
BUG=
R=koda@google.com
Review URL: https://codereview.chromium.org//1247783002 .
2015-07-23 12:56:16 +02:00
Ryan Macnak
b8bad6725c
Expand the class id to 32 bits and size field to 16 bits on 64-bit platforms.
...
Remove misleading suffix from disassembly of some ia32 immediate ops.
R=asiva@google.com , srdjan@google.com
Review URL: https://codereview.chromium.org//1174173007 .
2015-06-12 16:42:40 -07:00
Ivan Posva
f5e3f94019
Fix http://dartbug.com/23578 :
...
- Complete revamp of isolate-specific flags.
- Associate flags with the isolate on creation.
- Dart_CreateIsolate and associate callback do take an
extra flags argument.
- Make sure to clear IC data array when clearing code.
BUG=23578
Review URL: https://codereview.chromium.org//1162033005
2015-06-07 17:57:34 +02:00
rmacnak@google.com
26548a2f3d
Remove some duplication in code that extracts the source for a function.
...
R=asiva@google.com
Review URL: https://codereview.chromium.org//1071703002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@45145 260f80e4-7a28-3924-810f-c04153c831b5
2015-04-14 19:41:38 +00:00
koda@google.com
60b12996ec
Track references to allocation stubs via static_calls_table, instead of keeping two referencers alive.
...
(Verbatim copy of srdjan's https://codereview.chromium.org/609893002/ )
TBR=srdjan@google.com
Review URL: https://codereview.chromium.org//608913002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@40738 260f80e4-7a28-3924-810f-c04153c831b5
2014-09-26 20:17:53 +00:00
srdjan@google.com
30e77079e9
Fix x64 patching of asllocation stub: the pool pointer must be set-up before patching jump is executed.
...
R=koda@google.com , zra@google.com
Review URL: https://codereview.chromium.org//574843002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@40358 260f80e4-7a28-3924-810f-c04153c831b5
2014-09-16 23:14:54 +00:00
srdjan@google.com
4bb01949bc
Fix to allocation stub invalidation: we cannot just remove it as it will be collected even though code still may reference it. Since we should probably have two different allocation stubs, keep two in the class and switch between them. Future work will put intelligence in the allocation stub selection. Added Daniel's test flag & code.
...
R=koda@google.com
Review URL: https://codereview.chromium.org//566853005
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@40327 260f80e4-7a28-3924-810f-c04153c831b5
2014-09-16 17:01:17 +00:00
srdjan@google.com
dd9c0ef25e
Allow invalidation and recompilation of instance allocation stubs. Requested in order to implement better pretenuring strategy.
...
R=zra@google.com
Review URL: https://codereview.chromium.org//557913002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@40168 260f80e4-7a28-3924-810f-c04153c831b5
2014-09-11 17:56:42 +00:00
rmacnak@google.com
a9db9d480c
Fix handle leak in EvalExpressionExhaustCIDs test.
...
BUG=http://dartbug.com/20056
R=asiva@google.com
Review URL: https://codereview.chromium.org//396403002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@38315 260f80e4-7a28-3924-810f-c04153c831b5
2014-07-16 22:25:46 +00:00
rmacnak@google.com
0c7531c941
Implement Evaluate without creating temp classes by storing an eval function's script in the function's data field.
...
This means Evaluate doesn't burn through CIDs, mitigating the problem where class table entries are treated as strong references. More generally the whole tangle of objects created during eval is collectable, and running eval in a loop doesn't lead to heap growth.
http://dartbug.com/18284
R=hausner@google.com
Review URL: https://codereview.chromium.org//379353003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@38140 260f80e4-7a28-3924-810f-c04153c831b5
2014-07-10 23:23:01 +00:00
zra@google.com
7d0b680f95
Adds Simulator Longjmp and enables many tests for arm64.
...
R=regis@google.com
Review URL: https://codereview.chromium.org//264753002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@35603 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-30 23:07:47 +00:00
zra@google.com
8796a5c32e
More stubs and instructions for arm64.
...
Also, more tests enabled.
R=regis@google.com
Review URL: https://codereview.chromium.org//254673007
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@35554 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-29 23:18:37 +00:00
hausner@google.com
3f40651e3a
Support evaluation of expressions in context of a stack frame
...
This change adds a debugger API function to evaluate an expression
in the context of a particular stack frame. The expression can
refer to local variables accessible in the frame, but it cannot
alter the variables.
R=regis@google.com
Review URL: https://codereview.chromium.org//249533003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@35340 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-23 22:56:23 +00:00
zra@google.com
2fe51715e5
Begins work on ARM64, first assembler test.
...
Most new code is in constants_arm64.h and
{assembler,disassembler,simulator}_arm64.{h,cc}
The rest of the CL just #def's out tests, modifies status files,
and adds UNIMPLEMENTED functions, etc.
R=regis@google.com
Review URL: https://codereview.chromium.org//221133002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@34654 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-02 17:39:32 +00:00
fschneider@google.com
16857e0b13
Revert r32930 (Add more timing information in the VM to track time...)
...
It caused severe performance regressions that should be addressed.
TBR=asiva@google.com
Review URL: https://codereview.chromium.org//177733002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32959 260f80e4-7a28-3924-810f-c04153c831b5
2014-02-24 12:15:55 +00:00
asiva@google.com
6d313d3797
Add more timing information in the VM to track time spent is dart code Vs native code.
...
R=johnmccutchan@google.com , turnidge@google.com
Review URL: https://codereview.chromium.org//137483010
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32930 260f80e4-7a28-3924-810f-c04153c831b5
2014-02-21 21:30:29 +00:00
srdjan@google.com
3274f92827
Rename FinalizeTypeHierarchy to ProcessPendingClasses.
...
R=regis@google.com
Review URL: https://codereview.chromium.org//83983004
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@30688 260f80e4-7a28-3924-810f-c04153c831b5
2013-11-27 00:11:32 +00:00
srdjan@google.com
3485989ae7
Do not eagerly finalize classes in CHA, instead regard unfinalized classes as ’non-existent’ and only invalidate optimized code at finalization of the class.
...
Rename FinalizePendingClasses to FinalizePendingClassInterfaces as the class finalization occurs lazily.
TODO: add dependency information to deoptimize/remove only relevant optimized code.
R=regis@google.com
Review URL: https://codereview.chromium.org//81333003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@30582 260f80e4-7a28-3924-810f-c04153c831b5
2013-11-22 17:59:23 +00:00
johnmccutchan@google.com
70483ee91e
Add ability for Function to generate source
...
BUG=
R=hausner@google.com
Review URL: https://codereview.chromium.org//60993002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@30239 260f80e4-7a28-3924-810f-c04153c831b5
2013-11-13 18:09:41 +00:00
hausner@google.com
fd57843900
Update handling of ambiguous name references
...
Update VM to latest spec. Referencing a name that is imported
from more than one library is no longer a compile-time error.
If one of the sources of an ambiguous reference is a dart library,
the dart library declaration is automatically hidden.
Also fixes a bug where looking up a getter name in a library
found the getter even though the name is filtered out in the
'hide' combinator.
Long-term we should fix the need for repeatedly convert between
the mangled getter and setter names and the untangled name.
Fixes 12915, 12913, 12724.
R=regis@google.com
Review URL: https://codereview.chromium.org//23484020
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@27312 260f80e4-7a28-3924-810f-c04153c831b5
2013-09-09 21:52:40 +00:00
hausner@google.com
d62ea57f8e
Evaluate expression in context of an object
...
This is the core functionality needed for the debugger.
Review URL: https://codereview.chromium.org//23067006
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@26328 260f80e4-7a28-3924-810f-c04153c831b5
2013-08-19 22:17:09 +00:00
regis@google.com
9581071936
Refactor resolution code in the vm to properly handle ambiguity errors.
...
Add test.
R=asiva@google.com
Review URL: https://codereview.chromium.org//19662003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@25324 260f80e4-7a28-3924-810f-c04153c831b5
2013-07-23 00:19:39 +00:00
regis@google.com
51276c7a29
Remove obsolete #ifdefs excluding MIPS target.
...
R=zra@google.com
Review URL: https://codereview.chromium.org//18153002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24556 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-27 21:51:55 +00:00
hausner@google.com
8e29370a1b
BREAKING CHANGE: enforce part of directive
...
For historical reasons, the VM is currently too lenient when parsing library parts. Files that get loaded through a 'part' directive must start with a 'part of libraryname;' clause. The VM so far has not reported an error if the clause is missing.
This change enforces the grammar as the Spec mandates it. Library parts that do not start with 'part of' will no longer compile.
R=srdjan@google.com
Review URL: https://codereview.chromium.org//14791005
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22278 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-01 20:46:48 +00:00
regis@google.com
7b5a610084
Make allocation of Dart parameters and local variables architecture independent.
...
Enable a couple more vm tests on ARM.
Fix function usage counter access on ARM.
Review URL: https://codereview.chromium.org//12776006
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@20048 260f80e4-7a28-3924-810f-c04153c831b5
2013-03-14 21:33:03 +00:00
asiva@google.com
ec7f44f025
Create frequently used symbols in the vm isolate
...
- Avoids the need for doing a NewSymbol on these everytime
- saves space as they get shared by isolates
Review URL: https://chromiumcodereview.appspot.com//10783035
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@9834 260f80e4-7a28-3924-810f-c04153c831b5
2012-07-24 00:01:50 +00:00
asiva@google.com
ef67b96777
Rename some of the enum definitions inside classes to avoid conflict with the ObjectKind enum.
...
Review URL: https://chromiumcodereview.appspot.com//10808064
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@9792 260f80e4-7a28-3924-810f-c04153c831b5
2012-07-20 22:24:49 +00:00