Previous implementation changed input representation depending on the propagated type of the value which violated assumptions made by SelectRepresentations phase.
Instead of using tagged/mint input require unboxed Int32/Uint32 input and insert explicit truncating unboxing when building StoreIndexed operation in the optimizer. This also leads to strictly better code and opens possibilities for further optimizations.
Implement Int32/Uint32 representation support on all platforms. This includes boxing, unboxing and unboxed converter operations.
Merge BoxInt32/BoxUint32 and UnboxInt32/UnboxUint32 instruction sequences to minimize duplication.
Improve instruction sequences by utilizing CARRY flag set by smi untagging where possible (ARM, ia32, x86).
Enable all tests that were disabled by r40078, r40079.
BUG=http://dartbug.com/20875R=fschneider@google.com, johnmccutchan@google.com, srdjan@google.com, zra@google.com
Review URL: https://codereview.chromium.org//552303005
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@40143 260f80e4-7a28-3924-810f-c04153c831b5
BUG= http://dartbug.com/20809
The following files were not migrated, they used to be in platform.js
and are like polyfills, but are adding non-html spec functionality used
by polymer:
src/declaration/mdv.js
src/declaration/polymer.js
src/declaration/queue.js
src/declaration/styles.js
src/lib/dom.js
src/lib/lang.js
src/lib/loader.js
src/lib/styleloader.js
src/lib/url.js
src/system/compat.js
src/system/microtask.js
src/system/module.js
src/system/patches-mdv.js
src/system/unresolved.js
The following tests were not migrated. For the most part they are just
testing the features added by the files above:
test/html/loader-deduplicate.html
test/html/mdv-shadow.html
test/html/mdv-tests/polymer-expressions-tests.js
test/html/styling/recursive-style-import.html
test/html/url.html
test/js/bindMDV.js
test/js/oop.js
test/html/styling/rules/*
test/js/styling.js
test/js/register.js
test/js/utils.js
test/html/template-repeat-wrappers.html
R=sigmund@google.com
Review URL: https://codereview.chromium.org//558673004
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@40120 260f80e4-7a28-3924-810f-c04153c831b5
- switches polymer to use a messages type
- autogenerates an HTML page from the message list.
- use these messages on polymer transformers
- moves build_logger to code_Transformers, so we can also use this in other packages.
Still pending to do more, for example, find a permanent location and URI scheme for messages
so we can show them on the command-line, improve the UI to tak advantage of clustering, etc.
But I think it's good enough to get it in and iterate afterwards
R=jakemac@google.com, kathyw@google.com
Review URL: https://codereview.chromium.org//513023002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39884 260f80e4-7a28-3924-810f-c04153c831b5
* greatest common denominator
* modulo inverse
* modulo exponentiation
In addition, I implemented functions for least common multiple and extended gcd, as they are so closely related.
These functions are respectively named gcd(), invert(), modexp(), lcm(), gcdext(), provided in the math package,
and tested in the math package.
When passed arguments larger than 2^53, a javascript implementation of dart will yield unpredictable results,
as is true with all of the dart:int methods.
Some of the function names are arbitrary, as they go by different names in different languages:
* For modular multiplicative inverse, I chose "invert." It goes by "invert" in GMP [1], "modInverse" in Java and Go,
"invmod" in Julia, "PowerMod" in Mathematica, and "pow" in Python.
* For modular exponentiation, I chose "powmod." It goes by "powm" in GMP, "exp" in Go, "modPow" in Java,
"powermod" in Julia and Mathematica, and "pow" in Python (optional arg).
* For extended gcd, I chose "gcdext." It goes by "gcdext" in GMP, "gcd" in Go (optional return args), "gcdx" in Julia,
and "ExtendedGCD" in Mathematica.
BUG= https://code.google.com/p/dart/issues/detail?id=5991
[1] https://gmplib.org/R=lrn@google.com
Review URL: https://codereview.chromium.org//475463005
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39769 260f80e4-7a28-3924-810f-c04153c831b5
Having two separate packages doesn't really have any benefit, and has
the downside of forcing us to carefully avoid circular dependencies
between the two. It makes more sense to just combine them.
This is largely a mechanical change consisting of the following renames:
1. pkg/analysis_services/lib/src/* -> pkg/analysis_server/lib/src/services/*
2. pkg/analysis_services/lib/* -> pkg/analysis_server/lib/src/services/*
3. pkg/analysis_services/test/* -> pkg/analysis_server/test/services/*
There were 4 instances where 1 and 2 created a collision:
.../services/correction/assist.dart, .../services/correction/fix.dart,
.../services/refactoring/refactoring.dart, and
.../services/search/search_engine_internal.dart. To fix the
collision, the files coming from pkg/analysis_services/lib/src were
renamed to "..._internal.dart".
In addition, pkg/analysis_services/test/test_all.dart was modified to
call pkg/analysis_services/test/services/test_all.dart.
R=brianwilkerson@google.com, scheglov@google.com
Review URL: https://codereview.chromium.org//484733003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39349 260f80e4-7a28-3924-810f-c04153c831b5