Skip to content
This repository has been archived by the owner on Sep 4, 2019. It is now read-only.

Commit

Permalink
Added experimental API support for allocating V8 symbols as external …
Browse files Browse the repository at this point in the history
…strings.

Fixed bugs in debugging support on ARM.

Changed eval implementation to correctly detect whether or not a call to eval is aliased.

Fixed bug caused by a combination of the compilation cache and dictionary probing in native code.  The bug caused us to sometimes call functions that had not yet been compiled.

Added platform support for FreeBSD.

Added support for building V8 on Windows with either the shared or static version of MSVCRT
        
Added the v8::jscre namespace around the jscre functions to avoid link errors (duplicate symbols) when building Google Chrome.

Added support for calling a JavaScript function with the current debugger execution context as its argument to the debugger interface.

Changed the type of names of counters from wchar_t to char.

Changed the Windows system call used to compute daylight savings time.  The system call that we used to use became four times slower on WinXP SP3.

Added support in the d8 developer shell for memory-mapped counters and added a stats-viewer tool.

Fixed bug in upper/lower case mappings (issue 149).


git-svn-id: https://v8.googlecode.com/svn/trunk@911 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
  • Loading branch information
ager@chromium.org committed Dec 3, 2008
1 parent 60bcecc commit 014258c
Show file tree
Hide file tree
Showing 141 changed files with 13,556 additions and 1,683 deletions.
1 change: 1 addition & 0 deletions AUTHORS
Expand Up @@ -11,3 +11,4 @@ Jay Freeman <saurik@saurik.com>
Daniel James <dnljms@gmail.com>
Paolo Giarrusso <p.giarrusso@gmail.com>
Daniel Andersson <kodandersson@gmail.com>
Alexander Botero-Lowry <alexbl@FreeBSD.org>
34 changes: 33 additions & 1 deletion ChangeLog
@@ -1,8 +1,40 @@
2008-11-26: Version 0.4.4.1
2008-12-03: Version 0.4.5

Added experimental API support for allocating V8 symbols as
external strings.

Fixed bugs in debugging support on ARM.

Changed eval implementation to correctly detect whether or not a
call to eval is aliased.

Fixed bug caused by a combination of the compilation cache and
dictionary probing in native code. The bug caused us to sometimes
call functions that had not yet been compiled.

Added platform support for FreeBSD.

Added support for building V8 on Windows with either the shared or
static version of MSVCRT

Added the v8::jscre namespace around the jscre functions to avoid
link errors (duplicate symbols) when building Google Chrome.

Added support for calling a JavaScript function with the current
debugger execution context as its argument to the debugger
interface.

Changed the type of names of counters from wchar_t to char.

Changed the Windows system call used to compute daylight savings
time. The system call that we used to use became four times
slower on WinXP SP3.

Added support in the d8 developer shell for memory-mapped counters
and added a stats-viewer tool.

Fixed bug in upper/lower case mappings (issue 149).


2008-11-17: Version 0.4.4

Expand Down
84 changes: 64 additions & 20 deletions SConstruct
Expand Up @@ -54,6 +54,9 @@ LIBRARY_FLAGS = {
'mode:release': {
'CCFLAGS': ['-O3', '-fomit-frame-pointer']
},
'os:freebsd': {
'LIBS': ['execinfo']
},
'wordsize:64': {
'CCFLAGS': ['-m32'],
'LINKFLAGS': ['-m32']
Expand All @@ -71,15 +74,27 @@ LIBRARY_FLAGS = {
'CCPDBFLAGS': ['/Zi']
},
'mode:debug': {
'CCFLAGS': ['/Od', '/Gm', '/MTd'],
'CCFLAGS': ['/Od', '/Gm'],
'CPPDEFINES': ['_DEBUG', 'ENABLE_DISASSEMBLER', 'DEBUG'],
'LINKFLAGS': ['/DEBUG']
'LINKFLAGS': ['/DEBUG'],
'msvcrt:static': {
'CCFLAGS': ['/MTd']
},
'msvcrt:shared': {
'CCFLAGS': ['/MDd']
}
},
'mode:release': {
'CCFLAGS': ['/O2', '/MT', '/GL'],
'CCFLAGS': ['/O2', '/GL'],
'LINKFLAGS': ['/OPT:REF', '/OPT:ICF', '/LTCG'],
'ARFLAGS': ['/LTCG']
}
'ARFLAGS': ['/LTCG'],
'msvcrt:static': {
'CCFLAGS': ['/MT']
},
'msvcrt:shared': {
'CCFLAGS': ['/MD']
}
},
}
}

Expand Down Expand Up @@ -186,6 +201,9 @@ SAMPLE_FLAGS = {
'LIBS': ['pthread'],
'LIBPATH': ['.']
},
'os:freebsd': {
'LIBS': ['execinfo']
},
'wordsize:64': {
'CCFLAGS': ['-m32'],
'LINKFLAGS': ['-m32']
Expand All @@ -209,12 +227,24 @@ SAMPLE_FLAGS = {
'LINKFLAGS': ['/MAP']
},
'mode:release': {
'CCFLAGS': ['/O2', '/MT'],
'LINKFLAGS': ['/OPT:REF', '/OPT:ICF', '/LTCG']
'CCFLAGS': ['/O2'],
'LINKFLAGS': ['/OPT:REF', '/OPT:ICF', '/LTCG'],
'msvcrt:static': {
'CCFLAGS': ['/MT']
},
'msvcrt:shared': {
'CCFLAGS': ['/MD']
}
},
'mode:debug': {
'CCFLAGS': ['/Od', '/MTd'],
'LINKFLAGS': ['/DEBUG']
'CCFLAGS': ['/Od'],
'LINKFLAGS': ['/DEBUG'],
'msvcrt:static': {
'CCFLAGS': ['/MTd']
},
'msvcrt:shared': {
'CCFLAGS': ['/MDd']
}
}
}
}
Expand All @@ -226,7 +256,6 @@ D8_FLAGS = {
'LIBS': ['readline']
}
},
'msvc': { }
}


Expand Down Expand Up @@ -264,7 +293,7 @@ SIMPLE_OPTIONS = {
'help': 'the toolchain to use'
},
'os': {
'values': ['linux', 'macos', 'win32'],
'values': ['freebsd', 'linux', 'macos', 'win32'],
'default': OS_GUESS,
'help': 'the os to build for'
},
Expand All @@ -288,6 +317,11 @@ SIMPLE_OPTIONS = {
'default': 'static',
'help': 'the type of library to produce'
},
'msvcrt': {
'values': ['static', 'shared'],
'default': 'static',
'help': 'the type of MSVCRT library to use'
},
'wordsize': {
'values': ['64', '32'],
'default': WORDSIZE_GUESS,
Expand Down Expand Up @@ -375,11 +409,18 @@ class BuildContext(object):
result = initial.copy()
self.AppendFlags(result, flags.get('all'))
toolchain = self.options['toolchain']
self.AppendFlags(result, flags[toolchain].get('all'))
if toolchain in flags:
self.AppendFlags(result, flags[toolchain].get('all'))
for option in sorted(self.options.keys()):
value = self.options[option]
self.AppendFlags(result, flags[toolchain].get(option + ':' + value))
return result

def AddRelevantSubFlags(self, options, flags):
self.AppendFlags(options, flags.get('all'))
for option in sorted(self.options.keys()):
value = self.options[option]
self.AppendFlags(result, flags[toolchain].get(option + ':' + value))
return result
self.AppendFlags(options, flags.get(option + ':' + value))

def GetRelevantSources(self, source):
result = []
Expand All @@ -392,12 +433,15 @@ class BuildContext(object):
if not added:
return
for (key, value) in added.iteritems():
if not key in options:
options[key] = value
if key.find(':') != -1:
self.AddRelevantSubFlags(options, { key: value })
else:
prefix = options[key]
if isinstance(prefix, StringTypes): prefix = prefix.split()
options[key] = prefix + value
if not key in options:
options[key] = value
else:
prefix = options[key]
if isinstance(prefix, StringTypes): prefix = prefix.split()
options[key] = prefix + value

def ConfigureObject(self, env, input, **kw):
if self.options['library'] == 'static':
Expand Down Expand Up @@ -541,7 +585,7 @@ def Build():
env.Alias('cctests', cctests)
env.Alias('sample', samples)
env.Alias('d8', d8s)

if env['sample']:
env.Default('sample')
else:
Expand Down
15 changes: 13 additions & 2 deletions benchmarks/base.js
Expand Up @@ -120,7 +120,7 @@ BenchmarkSuite.RunSuites = function(runner) {
}
if (runner.NotifyScore) {
var score = BenchmarkSuite.GeometricMean(BenchmarkSuite.scores);
runner.NotifyScore(Math.round(100 * score));
runner.NotifyScore(100 * score);
}
}
RunStep();
Expand Down Expand Up @@ -164,7 +164,7 @@ BenchmarkSuite.prototype.NotifyResult = function() {
var score = this.reference / mean;
BenchmarkSuite.scores.push(score);
if (this.runner.NotifyResult) {
this.runner.NotifyResult(this.name, Math.round(100 * score));
this.runner.NotifyResult(this.name, 100 * score);
}
}

Expand Down Expand Up @@ -219,3 +219,14 @@ BenchmarkSuite.prototype.RunStep = function(runner) {
}
return RunNext();
}


// Converts a score value to a string with at least three significant
// digits.
function formatScore(value) {
if (value > 100) {
return value.toFixed(0);
} else {
return value.toPrecision(3);
}
}
50 changes: 50 additions & 0 deletions benchmarks/revisions.html
@@ -0,0 +1,50 @@
<html>
<head>
<title>V8 Benchmark Suite Revisions</title>
<link type="text/css" rel="stylesheet" href="style.css"></link>
</head>
<body>
<div>
<div class="title"><h1>V8 Benchmark Suite Revisions</h1></div>
<table>
<tr>
<td class="contents">

<p>

The V8 benchmark suite is changed from time to time as we fix bugs or
expand the scope of the benchmarks. Here is a list of revisions, with
a description of the changes made. Note that benchmark results are
not comparable unless both results are run with the same revision of
the benchmark suite.

</p>

<div class="subtitle"><h3>Version 2 (<a href="http://v8.googlecode.com/svn/data/benchmarks/v2/run.html">link</a>)</h3></div>

<p>For version 2 the crypto benchmark was fixed. Previously, the
decryption stage was given plaintext as input, which resulted in an
error. Now, the decryption stage is given the output of the
encryption stage as input. The result is checked against the original
plaintext. For this to give the correct results the crypto objects
are reset for each iteration of the benchmark. In addition, the size
of the plain text has been increased a little and the use of
Math.random() and new Date() to build an RNG pool has been
removed. </p>

<p>Other benchmarks were fixed to do elementary verification of the
results of their calculations. This is to avoid accidentally
obtaining scores that are the result of an incorrect JavaScript engine
optimization.</p>

<div class="subtitle"><h3>Version 1 (<a href="http://v8.googlecode.com/svn/data/benchmarks/v1/run.html">link</a>)</h3></div>

<p>Initial release.</p>

</td><td style="text-align: center">
</td></tr></table>

</div>

</body>
</html>

0 comments on commit 014258c

Please sign in to comment.