Skip to content

Commit

Permalink
Upgrade V8 to 2.2.21
Browse files Browse the repository at this point in the history
  • Loading branch information
ry committed Jul 3, 2010
1 parent 94cd83e commit 2072925
Show file tree
Hide file tree
Showing 54 changed files with 1,486 additions and 347 deletions.
15 changes: 15 additions & 0 deletions deps/v8/ChangeLog
@@ -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).

Expand Down
12 changes: 9 additions & 3 deletions deps/v8/benchmarks/README.txt
Expand Up @@ -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.
40 changes: 30 additions & 10 deletions deps/v8/benchmarks/base.js
Expand Up @@ -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));
}


Expand All @@ -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
Expand All @@ -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() {
Expand Down
2 changes: 1 addition & 1 deletion deps/v8/benchmarks/crypto.js
Expand Up @@ -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)
]);
Expand Down
8 changes: 4 additions & 4 deletions deps/v8/benchmarks/deltablue.js
Expand Up @@ -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"
Expand Down Expand Up @@ -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;
}
Expand Down
2 changes: 1 addition & 1 deletion deps/v8/benchmarks/earley-boyer.js
@@ -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(); })
]);
Expand Down
2 changes: 1 addition & 1 deletion deps/v8/benchmarks/raytrace.js
Expand Up @@ -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)
]);

Expand Down
2 changes: 1 addition & 1 deletion deps/v8/benchmarks/regexp.js
Expand Up @@ -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)
]);

Expand Down
13 changes: 9 additions & 4 deletions deps/v8/benchmarks/revisions.html
Expand Up @@ -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>

Expand Down
2 changes: 1 addition & 1 deletion deps/v8/benchmarks/richards.js
Expand Up @@ -35,7 +35,7 @@
// Martin Richards.


var Richards = new BenchmarkSuite('Richards', 34886, [
var Richards = new BenchmarkSuite('Richards', 20687, [
new Benchmark("Richards", runRichards)
]);

Expand Down
2 changes: 1 addition & 1 deletion deps/v8/benchmarks/run.html
Expand Up @@ -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>
Expand Down
21 changes: 18 additions & 3 deletions deps/v8/benchmarks/splay.js
Expand Up @@ -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)
]);

Expand Down Expand Up @@ -230,9 +230,24 @@ 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()) {
Expand All @@ -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);
Expand Down
12 changes: 12 additions & 0 deletions deps/v8/src/arm/assembler-arm.cc
Expand Up @@ -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.
Expand Down
3 changes: 3 additions & 0 deletions deps/v8/src/arm/assembler-arm.h
Expand Up @@ -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);
Expand Down

0 comments on commit 2072925

Please sign in to comment.