Vyacheslav Egorov
eb8c24e133
Reland "Merge more Kernel infrastructure from kernel_sdk SDK fork."
...
R=zra@google.com
BUG=
Review URL: https://codereview.chromium.org/2451623006 .
2016-10-27 10:09:22 +02:00
Vyacheslav Egorov
12968edb9c
Revert "Reland "Merge more Kernel infrastructure from kernel_sdk SDK fork.""
...
This reverts commit 4e7a31262e .
Windows bots are broken now.
R=zra@google.com
BUG=
Review URL: https://codereview.chromium.org/2451893004 .
2016-10-26 17:07:18 +02:00
Vyacheslav Egorov
4e7a31262e
Reland "Merge more Kernel infrastructure from kernel_sdk SDK fork."
...
This relands commit 2fed1c3905 with fixes to ensure that analyzer summaries are correctly created and XARM build does not try to use target binaries on the host.
R=zra@google.com
BUG=
Review URL: https://codereview.chromium.org/2453773002 .
2016-10-26 16:48:28 +02:00
Vyacheslav Egorov
cf7ff42e60
Revert "Merge more Kernel infrastructure from kernel_sdk SDK fork."
...
This reverts commit 2fed1c3905 .
SDK builds are failing
TBR=zra@google.com
Review URL: https://codereview.chromium.org/2455593002 .
2016-10-26 13:06:27 +02:00
Vyacheslav Egorov
2fed1c3905
Merge more Kernel infrastructure from kernel_sdk SDK fork.
...
- bring patched SDK generation scripts and VM patch tweaks that allow VM patch files to be parsed by analyzer front-end;
Patched SDK is an SDK with all VM patches spliced into it. Kernel compiler is based on the analyzer front-end which does
not have any patch files support/model so for it to produce Kernel files that match VM we need to generate a such patched SDKs.
- bring test script modifications that allow to test Kernel pipeline
BUG=
R=asiva@google.com , kmillikin@google.com , whesse@google.com , zra@google.com
Review URL: https://codereview.chromium.org/2434123003 .
2016-10-26 13:02:54 +02:00
Matthias Hausner
1a6d1eca32
Implement @patch annotation for patch class members
...
Allow members of patch classes to be annotated with @patch. The VM
ignores the annotation. I simply replaces the original method
if the name matches, or reports an error if field names match.
Adding a bit is_patched to members to do more checking remains a
TODO. There are currently no unused bits available, and I don’t want
to increase the size of Function objects for this.
BUG=
R=asiva@google.com
Review URL: https://codereview.chromium.org/2230383003 .
2016-08-10 12:54:57 -07:00
Matthias Hausner
e11ca24053
Use metadata annotation @patch for patch classes
...
Annotate patch classes and top-level patch functions with @patch
instead of the pseudo-keyword patch. This allows the analyzer
to read patch files, and matches the syntax that dart2js uses.
The deprecated syntax is still supported, but a warning is printed when detected.
BUG=
Review URL: https://codereview.chromium.org/2220883004 .
2016-08-09 09:48:03 -07:00
Lasse R.H. Nielsen
babcd4e9c0
Revert "Make EfficientLength public, as EfficientLengthIterable."
...
It's still not a good solution for detecting an Iterable with an efficient
length. It's not inherited by, e.g., a DelegatingIterable wrapper or similar
generic Iterable transformers.
Keep this as an internal optimization for quickly detecting the most common
efficient-length Iterable classes (List, Set, Queue, Map.keys/values), but
don't make it public.
A *real* solution would be adding a hasEfficientLength getter to Iterable, or
adding an efficientLength getter that may return null if it's not efficient.
This would something that a wrapper can attach to.
R=sgjesse@google.com
Review URL: https://codereview.chromium.org//1154263003
2015-05-29 12:52:45 +02:00
Daniel Andersson
ea46192ca3
VM-internalize the default Map implementation.
...
Make the compact linked hash map, which is the default implementation for Map
(including map literals), a VM-internal class.
This makes it easy to have more efficient serialization of maps (although for
now, the implementation is straight-forward).
Refactor the compact hash class hierarchy to enable the VM-internal class and
the rest (also the Set classes) to share a maximal amount of code, by using
two different bases for implicit/explicit fields.
Remove existing proof-of-concept, C++-based internal VM-class.
BUG=http://dartbug.com/22982
R=asiva@google.com
Review URL: https://codereview.chromium.org//1151523002
2015-05-28 09:32:54 -07:00
lrn@google.com
92c526b2a2
Make EfficientLength public, as EfficientLengthIterable.
...
R=iposva@google.com , sgjesse@google.com
Review URL: https://codereview.chromium.org//1104063002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@45556 260f80e4-7a28-3924-810f-c04153c831b5
2015-05-06 09:00:45 +00:00
koda@google.com
784c1e4f88
Replace Linked{Identity,Custom}Hash{Map,Set} with compact implementation; remove old code and flag.
...
R=iposva@google.com
Review URL: https://codereview.chromium.org//983703003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44294 260f80e4-7a28-3924-810f-c04153c831b5
2015-03-06 15:13:01 +00:00
koda@google.com
1d7ca12fdc
Compact LinkedHashMap/Set implementation.
...
Add GC-friendly replacement for default Map/Set:
* open-addressing hash table, avoiding the overhead of chained entries
* index separate from the keys/values, allowing more of it to fit in the cache
* new keys are always appended, to allow insertion-order iteration
* spare bits in index entries are used to store hashes
* index is typed data, so can be ignored by GC
Enable it with --use_compact_hash (disabled by default).
Reduces Dart2JS compilation time for huge codebase (N=200) by ~30%, due to reduced time in GC. Slightly slower for small maps and maps with deletions: json benchmarks regress by ~5%.
R=vegorov@google.com
Review URL: https://codereview.chromium.org//915323002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@43840 260f80e4-7a28-3924-810f-c04153c831b5
2015-02-18 13:58:32 +00:00
lrn@google.com
4d4c8a6332
Make Iterable.toSet say that it returns a Set with the same equality as the Iterable's contains method.
...
Let's consider whether this is really desirable once more.
It seems messy, but so does not doing it.
R=ajohnsen@google.com , floitsch@google.com
Review URL: https://codereview.chromium.org//451633003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@40893 260f80e4-7a28-3924-810f-c04153c831b5
2014-10-03 07:43:10 +00:00
koda@google.com
1cdcb12b4e
Add VM class for Map/LinkedHashMap.
...
Introduces a new internal class for the most common case, the default Map.
Passes all functionality tests.
Slow: Dart side simply calls into runtime for now.
Hidden behind "--use_internal_hash_map".
Add copies of hash map tests to exercise this implementation.
R=asiva@google.com
Review URL: https://codereview.chromium.org//380333002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@38588 260f80e4-7a28-3924-810f-c04153c831b5
2014-07-25 20:04:11 +00:00
kasperl@google.com
7087c8a7b6
Make the JSON decoder (parser) create Dart maps lazily when no reviver is provided (common case).
...
R=floitsch@google.com , lrn@google.com
BUG=http://dartbug.com/19649
Review URL: https://codereview.chromium.org//336863008
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@37858 260f80e4-7a28-3924-810f-c04153c831b5
2014-07-01 09:53:18 +00:00
fschneider@google.com
8621f8bda9
VM: Remove explicit field initialization with null from library classes.
...
It is redundant since fields are implicitly null-initialized.
R=ajohnsen@google.com
Review URL: https://codereview.chromium.org//333583003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@37261 260f80e4-7a28-3924-810f-c04153c831b5
2014-06-12 10:59:20 +00:00
lrn@google.com
e8247e4b4a
Add SetBase/SetMixin.
...
Depends on adding cloneEmpty method to Set class and toSet creating a clone.
R=sgjesse@google.com
Review URL: https://codereview.chromium.org//289353002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@36478 260f80e4-7a28-3924-810f-c04153c831b5
2014-05-22 09:48:24 +00:00
iposva@google.com
6a13da7d7d
- More incorrect types fixed.
...
Review URL: https://codereview.chromium.org//58063002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@29830 260f80e4-7a28-3924-810f-c04153c831b5
2013-11-04 18:17:22 +00:00
sigmund@google.com
7c2e6295aa
Fix type errors detected with --error-on-bad-type.
...
R=nweiz@google.com , regis@google.com
Review URL: https://codereview.chromium.org//35543006
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@29047 260f80e4-7a28-3924-810f-c04153c831b5
2013-10-22 23:41:05 +00:00
kevmoo@j832.com
cf134382a1
Set.add returns true if item has been added, otherwise false
...
BUG= https://code.google.com/p/dart/issues/detail?id=3546
R=floitsch@google.com
Review URL: https://codereview.chromium.org//26280002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@28863 260f80e4-7a28-3924-810f-c04153c831b5
2013-10-18 17:24:24 +00:00
lrn@google.com
8922b1065c
Add EfficientLength marker interface to some iterabels.
...
Use that in List.from and other methods to be more efficient when possible.
R=floitsch@google.com
Review URL: https://codereview.chromium.org//26681002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@28575 260f80e4-7a28-3924-810f-c04153c831b5
2013-10-14 10:40:00 +00:00
lrn@google.com
04c230b114
Add Set.lookup method to get the instance in the set.
...
R=floitsch@google.com
Review URL: https://codereview.chromium.org//26832002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@28499 260f80e4-7a28-3924-810f-c04153c831b5
2013-10-11 07:16:20 +00:00
lrn@google.com
12c9510193
Update implementations to use Object.identityHashCode for identity map/set
...
Update map/set constructors to have an .identity() constructor as well.
R=floitsch@google.com
Review URL: https://codereview.chromium.org//24267023
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@27869 260f80e4-7a28-3924-810f-c04153c831b5
2013-09-25 09:43:43 +00:00
lrn@google.com
63647b485d
Remove override of runtimeType from HashMap implementations.
...
BUG=
R=floitsch@google.com
Review URL: https://codereview.chromium.org//23902051
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@27702 260f80e4-7a28-3924-810f-c04153c831b5
2013-09-20 12:36:18 +00:00
lrn@google.com
6d49d9f1ac
Reapply "Convert HashSet, LinkedHashSet to factory methods and custom implementations."
...
R=floitsch@google.com , fschneider@google.com , kasperl@google.com
Review URL: https://codereview.chromium.org//24104003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@27610 260f80e4-7a28-3924-810f-c04153c831b5
2013-09-18 11:36:25 +00:00
lrn@google.com
18362b2cf4
Revert "Convert HashSet, LinkedHashSet to factory methods and custom implementations."
...
Triggers an error in html tests on dartium.
Review URL: https://codereview.chromium.org//23451045
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@27392 260f80e4-7a28-3924-810f-c04153c831b5
2013-09-11 16:19:45 +00:00
lrn@google.com
c5bb6f7b15
Convert HashSet, LinkedHashSet to factory methods and custom implementations.
...
R=floitsch@google.com
Review URL: https://codereview.chromium.org//23859008
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@27378 260f80e4-7a28-3924-810f-c04153c831b5
2013-09-11 12:35:57 +00:00
lrn@google.com
0f1e912d9d
Reapply "Make LinkedHashMap also have a factory constructor and be customizable""
...
The change was reverted due to failing Dartium tests that were not easily handelable on a Friday afternoon.
Review URL: https://codereview.chromium.org//23872008
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@27284 260f80e4-7a28-3924-810f-c04153c831b5
2013-09-09 10:49:32 +00:00
lrn@google.com
761f55b1b9
Revert "Make LinkedHashMap also have a factory constructor and be customizable"
...
Dartium expectations expects "LinkedHashMap" and gets "_LinkedHashMap".
Review URL: https://codereview.chromium.org//23890008
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@27250 260f80e4-7a28-3924-810f-c04153c831b5
2013-09-06 14:29:04 +00:00
lrn@google.com
64359158ab
Make LinkedHashMap also have a factory constructor and be customizable
...
R=floitsch@google.com
Review URL: https://codereview.chromium.org//23494027
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@27246 260f80e4-7a28-3924-810f-c04153c831b5
2013-09-06 13:01:54 +00:00
lrn@google.com
5d8f2cad4e
Reapply "Add custom equals and hashCode for HashMap implementation."
...
Review URL: https://codereview.chromium.org//23493017
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@27179 260f80e4-7a28-3924-810f-c04153c831b5
2013-09-05 08:29:26 +00:00
lrn@google.com
c288d7c951
Revert "Add custom equals and hashCode for HashMap implementation."
...
Review URL: https://codereview.chromium.org//23883003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@27111 260f80e4-7a28-3924-810f-c04153c831b5
2013-09-04 11:17:15 +00:00
lrn@google.com
76c0e79ff6
Add custom equals and hashCode for HashMap implementation.
...
R=floitsch@google.com
Review URL: https://codereview.chromium.org//23893002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@27106 260f80e4-7a28-3924-810f-c04153c831b5
2013-09-04 09:42:21 +00:00
lrn@google.com
eaf1021a87
Make HashMap constructor a factory.
...
Add optional parameters that aren't supported yet.
R=floitsch@google.com
Review URL: https://codereview.chromium.org//23513010
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@27044 260f80e4-7a28-3924-810f-c04153c831b5
2013-09-03 11:45:12 +00:00
lrn@google.com
788c569e9c
Convert HashMap and LinkedHashMap to closed addressing hash tables.
...
R=regis@google.com , sgjesse@google.com
Review URL: https://codereview.chromium.org//23056002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@26863 260f80e4-7a28-3924-810f-c04153c831b5
2013-08-29 12:13:32 +00:00
regis@google.com
9eb12ad303
Implement updated method overriding rules in the vm (issue 11495).
...
Introduce --error-on-bad-override flag and use it when generating snapshots.
Fix signature checking when patching methods.
Fix errors in patch files.
Fix receiver type of constructors.
Fix finalization of mixin application typedefs.
Update tests and status files.
R=asiva@google.com
Review URL: https://codereview.chromium.org//22685007
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@26027 260f80e4-7a28-3924-810f-c04153c831b5
2013-08-12 20:28:52 +00:00
karlklose@google.com
57f68eeb94
Convert null-marker in HashMap.forEach.
...
R=johnniwinther@google.com
Review URL: https://codereview.chromium.org//22561003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@25925 260f80e4-7a28-3924-810f-c04153c831b5
2013-08-08 13:49:13 +00:00
floitsch@google.com
48b1656690
Allow Object when doing lookups.
...
According to our typing rules a Set<Apple> is a Set<Fruit>. However, before this change, we couldn't use it as a Set<Fruit>:
===
bool foo(Set<Fruit> fruits) {
// Would yield a type-error since we actually got a Set<Apple>.
return fruits.contains(new Banana());
}
foo(new Set<Apple>());
===
R=ajohnsen@google.com , blois@google.com , lrn@google.com
Review URL: https://codereview.chromium.org//14246008
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24326 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-24 12:45:10 +00:00
floitsch@google.com
5d058bb0eb
Adding isNotEmpty property to collection and string.
...
BUG= http://dartbug.com/3074
R=floitsch@google.com
Review URL: https://codereview.chromium.org//15263004
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@23294 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-28 17:30:37 +00:00
lrn@google.com
485c8a5999
Move Iterable implementation to collection.
...
Add IterableMixin and IterableBase to dart:collection.
For now, the implementation is duplicated, because mixins and const
constructors don't mix. We hope that mixins will be improved in the
future to allow using the mixin to define the base class.
Review URL: https://codereview.chromium.org//14022007
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@21457 260f80e4-7a28-3924-810f-c04153c831b5
2013-04-15 14:32:16 +00:00
kasperl@google.com
57a82e9d05
Implement JS version of LinkedHashSet and move the various HashTable implementations to the VM collection library patch.
...
R=erikcorry@google.com ,lrn@google.com
BUG=
Review URL: https://codereview.chromium.org//13913005
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@21180 260f80e4-7a28-3924-810f-c04153c831b5
2013-04-10 07:12:50 +00:00
kasperl@google.com
06ce0c3ec3
Add JS implementation of LinkedHashMap.
...
R=erikcorry@google.com
BUG=
Review URL: https://codereview.chromium.org//13599005
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@21072 260f80e4-7a28-3924-810f-c04153c831b5
2013-04-08 13:51:07 +00:00
kasperl@google.com
caa4456595
Add a dart2js specific HashSet implementation that follows the HashMap implementation fairly closely.
...
I'd like to wait a bit with refactoring this more aggressively until
the linked variants have landed.
R=erikcorry@google.com
BUG=
Review URL: https://codereview.chromium.org//13715002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@20958 260f80e4-7a28-3924-810f-c04153c831b5
2013-04-05 10:23:37 +00:00
kasperl@google.com
f15b6960c0
Add a new implementation of HashMap that uses JS objects for its (multiple) hash tables.
...
I'll start refactoring the implementation to make it a bit more
maintainable, but I wanted to get your first impressions.
R=erikcorry@google.com ,lrn@google.com ,srdjan@google.com
BUG=
Review URL: https://codereview.chromium.org//12827018
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@20770 260f80e4-7a28-3924-810f-c04153c831b5
2013-04-02 11:51:36 +00:00