Permalink
Browse files

Upgrade V8 to 2.2.21

  • Loading branch information...
1 parent 94cd83e commit 2072925f121fe8785dfd046eba24f8d18c59ae75 @ry ry committed Jul 3, 2010
Showing with 1,486 additions and 347 deletions.
  1. +15 −0 deps/v8/ChangeLog
  2. +9 −3 deps/v8/benchmarks/README.txt
  3. +30 −10 deps/v8/benchmarks/base.js
  4. +1 −1 deps/v8/benchmarks/crypto.js
  5. +4 −4 deps/v8/benchmarks/deltablue.js
  6. +1 −1 deps/v8/benchmarks/earley-boyer.js
  7. +1 −1 deps/v8/benchmarks/raytrace.js
  8. +1 −1 deps/v8/benchmarks/regexp.js
  9. +9 −4 deps/v8/benchmarks/revisions.html
  10. +1 −1 deps/v8/benchmarks/richards.js
  11. +1 −1 deps/v8/benchmarks/run.html
  12. +18 −3 deps/v8/benchmarks/splay.js
  13. +12 −0 deps/v8/src/arm/assembler-arm.cc
  14. +3 −0 deps/v8/src/arm/assembler-arm.h
  15. +358 −21 deps/v8/src/arm/codegen-arm.cc
  16. +96 −0 deps/v8/src/arm/codegen-arm.h
  17. +1 −1 deps/v8/src/arm/constants-arm.cc
  18. +4 −1 deps/v8/src/arm/disasm-arm.cc
  19. +1 −1 deps/v8/src/arm/ic-arm.cc
  20. +71 −4 deps/v8/src/arm/macro-assembler-arm.cc
  21. +45 −4 deps/v8/src/arm/macro-assembler-arm.h
  22. +8 −1 deps/v8/src/arm/simulator-arm.cc
  23. +1 −0 deps/v8/src/code-stubs.h
  24. +47 −14 deps/v8/src/debug-debugger.js
  25. +10 −0 deps/v8/src/handles.cc
  26. +6 −0 deps/v8/src/handles.h
  27. +9 −7 deps/v8/src/ia32/codegen-ia32.cc
  28. +1 −1 deps/v8/src/json.js
  29. +16 −2 deps/v8/src/jsregexp.cc
  30. +1 −1 deps/v8/src/objects.cc
  31. +1 −3 deps/v8/src/regexp-macro-assembler.cc
  32. +6 −6 deps/v8/src/regexp.js
  33. +29 −13 deps/v8/src/runtime.cc
  34. +8 −4 deps/v8/src/runtime.js
  35. +1 −1 deps/v8/src/type-info.h
  36. +1 −1 deps/v8/src/version.cc
  37. +3 −3 deps/v8/src/x64/assembler-x64.cc
  38. +32 −18 deps/v8/src/x64/codegen-x64.cc
  39. +13 −13 deps/v8/src/x64/disasm-x64.cc
  40. +9 −9 deps/v8/src/x64/macro-assembler-x64.cc
  41. +1 −1 deps/v8/src/x64/virtual-frame-x64.cc
  42. +2 −1 deps/v8/test/cctest/SConscript
  43. +126 −45 deps/v8/test/cctest/test-api.cc
  44. +35 −0 deps/v8/test/cctest/test-disasm-arm.cc
  45. +56 −0 deps/v8/test/cctest/test-type-info.cc
  46. +1 −1 deps/v8/test/es5conform/README
  47. +115 −102 deps/v8/test/es5conform/es5conform.status
  48. +8 −6 deps/v8/test/mjsunit/debug-setbreakpoint.js
  49. +15 −10 deps/v8/test/mjsunit/math-sqrt.js
  50. +53 −0 deps/v8/test/mjsunit/mod.js
  51. +36 −0 deps/v8/test/mjsunit/regress/regress-753.js
  52. +86 −0 deps/v8/test/mjsunit/to_number_order.js
  53. +43 −9 deps/v8/test/mozilla/mozilla.status
  54. +25 −13 deps/v8/tools/stats-viewer.py
View
@@ -1,3 +1,18 @@
+2010-06-30: Version 2.2.21
+
+ Fix bug in externalizing some ASCII strings (Chromium issue 47824).
+
+ Update JSON.stringify to floor the space parameter (issue 753).
+
+ Update the Mozilla test expectations to the newest version.
+
+ Update the ES5 Conformance Test expectations to the latest version.
+
+ Update the V8 benchmark suite.
+
+ Provide actual breakpoints locations in response to setBreakpoint
+ and listBreakpoints requests.
+
2010-06-28: Version 2.2.20
Fix bug with for-in on x64 platform (issue 748).
@@ -66,6 +66,12 @@ extensions enabled.
Changes from Version 5 to Version 6
===================================
-Removed dead code from the RayTrace benchmark and changed the Splay
-benchmark to avoid converting the same numeric key to a string over
-and over again.
+Removed dead code from the RayTrace benchmark and fixed a couple of
+typos in the DeltaBlue implementation. Changed the Splay benchmark to
+avoid converting the same numeric key to a string over and over again
+and to avoid inserting and removing the same element repeatedly thus
+increasing pressure on the memory subsystem.
+
+Furthermore, the benchmark runner was changed to run the benchmarks
+for at least a few times to stabilize the reported numbers on slower
+machines.
View
@@ -198,15 +198,33 @@ BenchmarkSuite.prototype.NotifyError = function(error) {
// Runs a single benchmark for at least a second and computes the
// average time it takes to run a single iteration.
-BenchmarkSuite.prototype.RunSingleBenchmark = function(benchmark) {
- var elapsed = 0;
- var start = new Date();
- for (var n = 0; elapsed < 1000; n++) {
- benchmark.run();
- elapsed = new Date() - start;
+BenchmarkSuite.prototype.RunSingleBenchmark = function(benchmark, data) {
+ function Measure(data) {
+ var elapsed = 0;
+ var start = new Date();
+ for (var n = 0; elapsed < 1000; n++) {
+ benchmark.run();
+ elapsed = new Date() - start;
+ }
+ if (data != null) {
+ data.runs += n;
+ data.elapsed += elapsed;
+ }
+ }
+
+ if (data == null) {
+ // Measure the benchmark once for warm up and throw the result
+ // away. Return a fresh data object.
+ Measure(null);
+ return { runs: 0, elapsed: 0 };
+ } else {
+ Measure(data);
+ // If we've run too few iterations, we continue for another second.
+ if (data.runs < 32) return data;
+ var usec = (data.elapsed * 1000) / data.runs;
+ this.NotifyStep(new BenchmarkResult(benchmark, usec));
+ return null;
}
- var usec = (elapsed * 1000) / n;
- this.NotifyStep(new BenchmarkResult(benchmark, usec));
}
@@ -220,6 +238,7 @@ BenchmarkSuite.prototype.RunStep = function(runner) {
var length = this.benchmarks.length;
var index = 0;
var suite = this;
+ var data;
// Run the setup, the actual benchmark, and the tear down in three
// separate steps to allow the framework to yield between any of the
@@ -241,12 +260,13 @@ BenchmarkSuite.prototype.RunStep = function(runner) {
function RunNextBenchmark() {
try {
- suite.RunSingleBenchmark(suite.benchmarks[index]);
+ data = suite.RunSingleBenchmark(suite.benchmarks[index], data);
} catch (e) {
suite.NotifyError(e);
return null;
}
- return RunNextTearDown;
+ // If data is null, we're done with this benchmark.
+ return (data == null) ? RunNextTearDown : RunNextBenchmark();
}
function RunNextTearDown() {
@@ -31,7 +31,7 @@
// The code has been adapted for use as a benchmark by Google.
-var Crypto = new BenchmarkSuite('Crypto', 203037, [
+var Crypto = new BenchmarkSuite('Crypto', 110465, [
new Benchmark("Encrypt", encrypt),
new Benchmark("Decrypt", decrypt)
]);
@@ -23,13 +23,13 @@
// more like a JavaScript program.
-var DeltaBlue = new BenchmarkSuite('DeltaBlue', 71104, [
+var DeltaBlue = new BenchmarkSuite('DeltaBlue', 30282, [
new Benchmark('DeltaBlue', deltaBlue)
]);
/**
- * A JavaScript implementation of the DeltaBlue constrain-solving
+ * A JavaScript implementation of the DeltaBlue constraint-solving
* algorithm, as described in:
*
* "The DeltaBlue Algorithm: An Incremental Constraint Hierarchy Solver"
@@ -349,13 +349,13 @@ function BinaryConstraint(var1, var2, strength) {
BinaryConstraint.inheritsFrom(Constraint);
/**
- * Decides if this constratint can be satisfied and which way it
+ * Decides if this constraint can be satisfied and which way it
* should flow based on the relative strength of the variables related,
* and record that decision.
*/
BinaryConstraint.prototype.chooseMethod = function (mark) {
if (this.v1.mark == mark) {
- this.direction = (this.v1.mark != mark && Strength.stronger(this.strength, this.v2.walkStrength))
+ this.direction = (this.v2.mark != mark && Strength.stronger(this.strength, this.v2.walkStrength))
? Direction.FORWARD
: Direction.NONE;
}
@@ -1,7 +1,7 @@
// This file is automatically generated by scheme2js, except for the
// benchmark harness code at the beginning and end of the file.
-var EarleyBoyer = new BenchmarkSuite('EarleyBoyer', 765819, [
+var EarleyBoyer = new BenchmarkSuite('EarleyBoyer', 280581, [
new Benchmark("Earley", function () { BgL_earleyzd2benchmarkzd2(); }),
new Benchmark("Boyer", function () { BgL_nboyerzd2benchmarkzd2(); })
]);
@@ -8,7 +8,7 @@
// untouched. This file also contains a copy of parts of the Prototype
// JavaScript framework which is used by the ray tracer.
-var RayTrace = new BenchmarkSuite('RayTrace', 932666, [
+var RayTrace = new BenchmarkSuite('RayTrace', 533115, [
new Benchmark('RayTrace', renderScene)
]);
@@ -35,7 +35,7 @@
// letters in the data are encoded using ROT13 in a way that does not
// affect how the regexps match their input.
-var RegRxp = new BenchmarkSuite('RegExp', 995230, [
+var RegRxp = new BenchmarkSuite('RegExp', 601250, [
new Benchmark("RegExp", runRegExpBenchmark)
]);
@@ -22,10 +22,15 @@
<div class="subtitle"><h3>Version 6 (<a href="http://v8.googlecode.com/svn/data/benchmarks/v6/run.html">link</a>)</h3></div>
-<p>Removed dead code from the RayTrace benchmark and changed the Splay
-benchmark to avoid converting the same numeric key to a string over
-and over again.
-</p>
+<p>Removed dead code from the RayTrace benchmark and fixed a couple of
+typos in the DeltaBlue implementation. Changed the Splay benchmark to
+avoid converting the same numeric key to a string over and over again
+and to avoid inserting and removing the same element repeatedly thus
+increasing pressure on the memory subsystem.</p>
+
+<p>Furthermore, the benchmark runner was changed to run the benchmarks
+for at least a few times to stabilize the reported numbers on slower
+machines.</p>
<div class="subtitle"><h3>Version 5 (<a href="http://v8.googlecode.com/svn/data/benchmarks/v5/run.html">link</a>)</h3></div>
@@ -35,7 +35,7 @@
// Martin Richards.
-var Richards = new BenchmarkSuite('Richards', 34886, [
+var Richards = new BenchmarkSuite('Richards', 20687, [
new Benchmark("Richards", runRichards)
]);
@@ -116,7 +116,7 @@
<li><b>RegExp</b><br>Regular expression benchmark generated by extracting regular expression operations from 50 of the most popular web pages
(<i>1614 lines</i>).
</li>
-<li><b>Splay</b><br>Data manipulation benchmark that deals with splay trees and exercises the automatic memory management subsystem (<i>379 lines</i>).</li>
+<li><b>Splay</b><br>Data manipulation benchmark that deals with splay trees and exercises the automatic memory management subsystem (<i>394 lines</i>).</li>
</ul>
<p>
@@ -33,7 +33,7 @@
// also has to deal with a lot of changes to the large tree object
// graph.
-var Splay = new BenchmarkSuite('Splay', 126125, [
+var Splay = new BenchmarkSuite('Splay', 21915, [
new Benchmark("Splay", SplayRun, SplaySetup, SplayTearDown)
]);
@@ -231,8 +231,23 @@ SplayTree.prototype.find = function(key) {
/**
+ * @return {SplayTree.Node} Node having the maximum key value.
+ */
+SplayTree.prototype.findMax = function(opt_startNode) {
+ if (this.isEmpty()) {
+ return null;
+ }
+ var current = opt_startNode || this.root_;
+ while (current.right) {
+ current = current.right;
+ }
+ return current;
+};
+
+
+/**
* @return {SplayTree.Node} Node having the maximum key value that
- * is less or equal to the specified key value.
+ * is less than the specified key value.
*/
SplayTree.prototype.findGreatestLessThan = function(key) {
if (this.isEmpty()) {
@@ -243,7 +258,7 @@ SplayTree.prototype.findGreatestLessThan = function(key) {
this.splay_(key);
// Now the result is either the root node or the greatest node in
// the left subtree.
- if (this.root_.key <= key) {
+ if (this.root_.key < key) {
return this.root_;
} else if (this.root_.left) {
return this.findMax(this.root_.left);
@@ -2112,6 +2112,18 @@ void Assembler::vmrs(Register dst, Condition cond) {
}
+
+void Assembler::vsqrt(const DwVfpRegister dst,
+ const DwVfpRegister src,
+ const Condition cond) {
+ // cond(31-28) | 11101 (27-23)| D=?(22) | 11 (21-20) | 0001 (19-16) |
+ // Vd(15-12) | 101(11-9) | sz(8)=1 | 11 (7-6) | M(5)=? | 0(4) | Vm(3-0)
+ ASSERT(CpuFeatures::IsEnabled(VFP3));
+ emit(cond | 0xE*B24 | B23 | 0x3*B20 | B16 |
+ dst.code()*B12 | 0x5*B9 | B8 | 3*B6 | src.code());
+}
+
+
// Pseudo instructions.
void Assembler::nop(int type) {
// This is mov rx, rx.
@@ -988,6 +988,9 @@ class Assembler : public Malloced {
const Condition cond = al);
void vmrs(const Register dst,
const Condition cond = al);
+ void vsqrt(const DwVfpRegister dst,
+ const DwVfpRegister src,
+ const Condition cond = al);
// Pseudo instructions
void nop(int type = 0);
Oops, something went wrong.

0 comments on commit 2072925

Please sign in to comment.