whesse@chromium.org [Mon, 22 Jun 2009 08:17:44 +0000 (08:17 +0000)]
X64 implementation: Add high_bit() and low_bits() to register methods.
Review URL: http://codereview.chromium.org/141032
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2231
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
bak@chromium.org [Mon, 22 Jun 2009 08:09:57 +0000 (08:09 +0000)]
Implemented a ContextSlotCache for compiled code.
Review URL: http://codereview.chromium.org/141038
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2230
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Mon, 22 Jun 2009 08:08:47 +0000 (08:08 +0000)]
X64 implementation: if-then-else
Review URL: http://codereview.chromium.org/141030
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2229
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Mon, 22 Jun 2009 07:41:15 +0000 (07:41 +0000)]
Fix issue 386, a bug in JSObject::ReplaceSlowProperty with constant transitions.
Review URL: http://codereview.chromium.org/141031
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2228
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mikhail.naganov@gmail.com [Mon, 22 Jun 2009 07:22:09 +0000 (07:22 +0000)]
Eliminate double offsetting of line numbers in profiler.
I didn't noticed that in r1481 GetScriptLineNumber was changed to perform line numbers offsetting by itself.
Review URL: http://codereview.chromium.org/131102
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2227
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Sat, 20 Jun 2009 17:57:09 +0000 (17:57 +0000)]
Fix regexp bug reported by Ian where [6-9] would match any digit.
Review URL: http://codereview.chromium.org/140021
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2226
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mikhail.naganov@gmail.com [Sat, 20 Jun 2009 12:54:02 +0000 (12:54 +0000)]
Two requested changes to tick processor.
1. If D8_PATH isn't specified, first try to locate 'd8' shell in path,
and if not found, fallback to the one in tools_path/..
2. Add '--nm=<nm_exec>' parameter to specify 'nm' executable to use.
Review URL: http://codereview.chromium.org/132021
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2225
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Fri, 19 Jun 2009 10:16:52 +0000 (10:16 +0000)]
X64 implementation: Local vars, nested function calls, assignment statements
Review URL: http://codereview.chromium.org/131050
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2224
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Fri, 19 Jun 2009 09:12:20 +0000 (09:12 +0000)]
Clarify precedence of operations involving bitwise and(&) in x64/assembler.
Review URL: http://codereview.chromium.org/131099
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2223
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kasperl@chromium.org [Fri, 19 Jun 2009 07:36:16 +0000 (07:36 +0000)]
Allow functions to have custom construct stubs that are called
when the function is instantiated.
Review URL: http://codereview.chromium.org/132063
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2222
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mikhail.naganov@gmail.com [Fri, 19 Jun 2009 07:08:31 +0000 (07:08 +0000)]
Fix 'nm' results parsing in tickprocessor.
Without an explicit check if a function belongs to shared library address space, "finishing" a library symbols processing with 'addPrevEntry(libEnd);' can cause emission of code entries which cover almost the entire address space, shadowing other code.
Review URL: http://codereview.chromium.org/131033
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2221
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
bak@chromium.org [Thu, 18 Jun 2009 14:06:36 +0000 (14:06 +0000)]
Changed allocation to allow large objects to be allocated in new space.
This avoids back-to-back mark-sweep collections.
Review URL: http://codereview.chromium.org/136001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2219
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Thu, 18 Jun 2009 14:04:04 +0000 (14:04 +0000)]
Fixed exception in debugger scripts request.
When collecting the result for a scripts request check that scripts compiled through eval actually have a script for the function they where eval'ed in before adding that informaiton to the response.
BUG=http://crbug.com/14388
TEST=none
Review URL: http://codereview.chromium.org/135001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2218
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Thu, 18 Jun 2009 11:46:38 +0000 (11:46 +0000)]
X64 implementation: Add function literals and function calls.
Review URL: http://codereview.chromium.org/131029
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2217
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mikhail.naganov@gmail.com [Thu, 18 Jun 2009 07:59:13 +0000 (07:59 +0000)]
Implemented processing of compressed log files.
- fixed address delta calculation;
- code creations are also compressed to be in sync with other events;
- factored out a base class from TickProcessor to reuse code in DevTools profiler.
Review URL: http://codereview.chromium.org/125256
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2216
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Thu, 18 Jun 2009 07:33:44 +0000 (07:33 +0000)]
Inline mod for integer powers of 2.
Review URL: http://codereview.chromium.org/126293
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2215
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kasperl@chromium.org [Thu, 18 Jun 2009 05:47:31 +0000 (05:47 +0000)]
Speculative fix for computing Math.pow(2, -1074) on win32 where
the overloaded pow(double, int) function from math.h produces the
wrong answer.
TBR=whesse@chromium.org
Review URL: http://codereview.chromium.org/131022
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2214
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
iposva@chromium.org [Thu, 18 Jun 2009 00:22:52 +0000 (00:22 +0000)]
Make some small Mac-specific modifications to V8 to make it work on MacOS X 10.4
rather than just 10.5 and up.
1: Set the right compile flags and predefines to get backward compatible Unix
system calls.
2: Explicitly weak import the functions in execinfo.h and check at runtime to
see if that library loaded before calling backtrace().
Original change submitted by maf@google.com and reviewed at http://codereview.chromium.org/126241.
Review URL: http://codereview.chromium.org/132002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2213
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Wed, 17 Jun 2009 19:26:01 +0000 (19:26 +0000)]
Don't strength reduce divisions by 1 or 2 as they can often be
handled by an optimistic inline idiv.
Review URL: http://codereview.chromium.org/125258
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2212
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Wed, 17 Jun 2009 14:14:24 +0000 (14:14 +0000)]
Fix lint error.
TBR=kasperl@chromium.org
Review URL: http://codereview.chromium.org/126276
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2210
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kasperl@chromium.org [Wed, 17 Jun 2009 14:05:00 +0000 (14:05 +0000)]
More debug mode tweaks to mozilla.status.
TBR=sgjesse@chromium.org
Review URL: http://codereview.chromium.org/125251
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2209
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kasperl@chromium.org [Wed, 17 Jun 2009 13:57:44 +0000 (13:57 +0000)]
Update Mozilla test expectations to better match the new handling
of tests that time out.
Review URL: http://codereview.chromium.org/126274
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2207
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Wed, 17 Jun 2009 13:14:51 +0000 (13:14 +0000)]
Fix unload debugger.
Add a missing handle scope when clearing the debug message handler.
BUG=none
TEST=cctest/test-debug/DebuggerUnload
Review URL: http://codereview.chromium.org/126271
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2206
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kasperl@chromium.org [Wed, 17 Jun 2009 12:19:51 +0000 (12:19 +0000)]
Make sure to treat tests that time out as having the
TIMEOUT outcome.
Review URL: http://codereview.chromium.org/125248
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2205
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Wed, 17 Jun 2009 12:16:59 +0000 (12:16 +0000)]
X64 Implementation: Make codegen load literals and assign to local variables.
Review URL: http://codereview.chromium.org/126198
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2204
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Wed, 17 Jun 2009 11:50:33 +0000 (11:50 +0000)]
X64: Implementation of a bunch of stubs, and some new opcodes.
Review URL: http://codereview.chromium.org/125185
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2203
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Wed, 17 Jun 2009 11:44:25 +0000 (11:44 +0000)]
Avoid needless creation of handles in regexp runtime routines and use
the stack instead.
Review URL: http://codereview.chromium.org/126268
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2202
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kasperl@chromium.org [Wed, 17 Jun 2009 11:06:32 +0000 (11:06 +0000)]
Optimize special cases of Math.pow().
Review URL: http://codereview.chromium.org/125245
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2201
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Wed, 17 Jun 2009 10:55:58 +0000 (10:55 +0000)]
Inline fast case of the method that ensures that an array has a
certain size.
Review URL: http://codereview.chromium.org/126265
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2200
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mikhail.naganov@gmail.com [Wed, 17 Jun 2009 08:27:19 +0000 (08:27 +0000)]
Include weak symbols from 'nm' report. This fixes "C++" part of profiling results.
Review URL: http://codereview.chromium.org/125243
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2199
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kasperl@chromium.org [Wed, 17 Jun 2009 06:47:15 +0000 (06:47 +0000)]
Revert change to LongRunningApply, but allow the test case to time
out for now.
Review URL: http://codereview.chromium.org/125241
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2197
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kasperl@chromium.org [Wed, 17 Jun 2009 06:18:10 +0000 (06:18 +0000)]
Make test-api/ApplyInterruption less likely to time out in debug
mode and on actual ARM hardware.
TBR=erik.corry@gmail.com
Review URL: http://codereview.chromium.org/125240
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2196
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
bak@chromium.org [Wed, 17 Jun 2009 06:07:49 +0000 (06:07 +0000)]
Reimplemented the KeyedLookupCache to speed up access.
Review URL: http://codereview.chromium.org/126262
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2195
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mikhail.naganov@gmail.com [Tue, 16 Jun 2009 18:57:26 +0000 (18:57 +0000)]
Fix the problem with JS entries in tickprocessor.
The main problem was due to the following: after Erik had fixed the logger to report library addresses, tickprocessor started to add to the code map entries that covered almost entire memory. This happened because tickprocessor contains a heuristic to bias addresses of functions from dynamic libraries:
if (funcInfo.start < libStart && funcInfo.start < libEnd - libStart) {
funcInfo.start += libStart;
}
And, as tickprocessor tried to process all symbols from the library, including data entries, which can be outside reported library addresses range, the second condition failed, and funcInfo.start remained unbiased.
Review URL: http://codereview.chromium.org/125192
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2194
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Tue, 16 Jun 2009 15:01:24 +0000 (15:01 +0000)]
Use >>> instead of >> in order to cover the full 32 bit range when
handling addresses.
Review URL: http://codereview.chromium.org/125187
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2193
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Tue, 16 Jun 2009 13:44:48 +0000 (13:44 +0000)]
Don't panic if tickprocessor can't find a shared library.
Don't swallow exceptions so we can't see where they are really
thrown.
Review URL: http://codereview.chromium.org/126200
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2192
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
bak@chromium.org [Tue, 16 Jun 2009 13:31:31 +0000 (13:31 +0000)]
- Changed fast case for computing object size based on usage histogram.
- Added fast case to String.prototype.split (Mads's idea).
- Made minor other optimizations in String.prototype.split.
Review URL: http://codereview.chromium.org/126201
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2191
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kasperl@chromium.org [Tue, 16 Jun 2009 12:54:07 +0000 (12:54 +0000)]
Add fast negative checks for symbol equality: If we're comparing
two symbols, they're only equal if the objects are identical.
Review URL: http://codereview.chromium.org/125184
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2188
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Tue, 16 Jun 2009 12:52:02 +0000 (12:52 +0000)]
Fix profiling for shared libraries on Linux loaded at negative addresses
(Android does this). Fix logging for executable mappings that have no
file associated. Be more consistent with use of uintptr_t.
Review URL: http://codereview.chromium.org/125183
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2187
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Tue, 16 Jun 2009 12:08:59 +0000 (12:08 +0000)]
Added utility scripts for running oprofile in tools/oprofile.
To profile running the JavaScript file test.js using the V8 release mode shell (assuming it is build passing prof=oprofile to the SCons build). The following commands can be used:
$ tools/oprofile/start
$ tools/oprofile/run test.js
$ tools/oprofile/report | less
$ tools/oprofile/annotate | less
$ tools/oprofile/shutdown
Here is a summary of the commands.
For all the commands taking an executable the executable is expected to be a binary using V8. If no executable is specified the release mode V8 shell is assumed.
By default the --session-dir=/tmp/oprofv8 is passed to all oprofile commands. This walue can be changed by setting environment variable OPROFILE_SESSION_DIR.
When using the defaulf executable (V8 shell in release mode) it is assumed to be located in ../.. relative from the oprofile utility scripts. This default location can be overridden using the V8_SHELL_DIR environment variable.
start
-----
Start the oprofiling daemon.
run [executable] [parameters]
-----------------------------
Profile a V8 executable. Running this will reset oprofile samples, run the command and do an oprofile dump to flush samples and write ELF binaries for the generated code. The parameters are passed to the executable together with the --oprofile option.
report [executable] [parameters]
--------------------------------
Print the report for a profile run. The parameters are passed to opreport. E.g report --callgraph.
annotate [executable] [parameters]
----------------------------------
Print annotated assembly for a profile run. The parameters are passed to opannotate. E.g annotate -threshold 1.
reset
-----
Reset oprofile samples.
dump
----
Flush oprofile samples and write ELF binaries for the generated code.
shutdown
--------
Shutdown oprofile daemon.
Added a warning which is printed if option --oprofile is passed to a V8 which has not been compiled with oprofile support.
Review URL: http://codereview.chromium.org/125181
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2186
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mikhail.naganov@gmail.com [Tue, 16 Jun 2009 11:47:00 +0000 (11:47 +0000)]
Fix issue 380.
Don't infer name for a function if a result of its call is assigned to a variable / property. E.g., in this case:
a = function() { ... } ();
the function must remain anonymous because 'a' doesn't receive a function reference, but instead a result of its call.
BUG=http://code.google.com/p/v8/issues/detail?id=380
TEST=cctest/test-func-name-inference/Issue380
Review URL: http://codereview.chromium.org/126195
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2185
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
antonm@chromium.org [Tue, 16 Jun 2009 10:06:24 +0000 (10:06 +0000)]
Review URL: http://codereview.chromium.org/126158
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2184
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Tue, 16 Jun 2009 09:50:37 +0000 (09:50 +0000)]
Remove the unused support for jump-table switch statements.
Review URL: http://codereview.chromium.org/126193
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2183
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Tue, 16 Jun 2009 09:49:29 +0000 (09:49 +0000)]
Avoid going into runtime system for round-towards-zero operations on ARM.
Review URL: http://codereview.chromium.org/126192
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2182
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Tue, 16 Jun 2009 09:33:17 +0000 (09:33 +0000)]
Prepare to push V8 version 1.2.8 to trunk.
Review URL: http://codereview.chromium.org/125177
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2180
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kasperl@chromium.org [Tue, 16 Jun 2009 08:29:31 +0000 (08:29 +0000)]
Make sure to invoke valueOf methods on both operands of & and >> -- even
when the left operand lets us shortcut the computation.
Review URL: http://codereview.chromium.org/125176
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2179
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Tue, 16 Jun 2009 08:25:08 +0000 (08:25 +0000)]
X64 implementation: Test Compiler::Compile by compiling and running a function.
Review URL: http://codereview.chromium.org/126191
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2178
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Tue, 16 Jun 2009 08:24:42 +0000 (08:24 +0000)]
X64 platform: Add more register allocator functions.
Review URL: http://codereview.chromium.org/125131
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2177
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kasperl@chromium.org [Tue, 16 Jun 2009 06:52:04 +0000 (06:52 +0000)]
Improve DST offset computation performance.
Review URL: http://codereview.chromium.org/126188
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2176
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
bak@chromium.org [Tue, 16 Jun 2009 06:44:09 +0000 (06:44 +0000)]
Implemented fast case for NumberToString where the result is a single character string.
Review URL: http://codereview.chromium.org/126189
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2175
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Mon, 15 Jun 2009 16:33:28 +0000 (16:33 +0000)]
Fix disassembly output from oprofile.
Only send the inscructions part of a code object to oprofile when reporting dynamically generated code. Before the code object header was also reported to oprofile as code which caused strange disassembly output when using opannotate.
Review URL: http://codereview.chromium.org/125126
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2174
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Mon, 15 Jun 2009 15:57:06 +0000 (15:57 +0000)]
Another attempt at fixing sine & cosine test.
TBR=kmillikin@chromium.org
Review URL: http://codereview.chromium.org/125129
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2173
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mikhail.naganov@gmail.com [Mon, 15 Jun 2009 15:49:03 +0000 (15:49 +0000)]
Fixed pointer vs. va_list overloading problem occuring in gcc 3.3 (used for ARM build).
It seems that when calling a method that has two overloaded versions like this:
f(char* format, ...)
f(char* format, va_list args)
with a second pointer argument: f("format", pointer), the second version is picked up.
I've found a description of a similar issue here: http://bugs.gentoo.org/63112
So, to resolve this ambiguity, I've named such LogMessageBuilder's Append functions differently.
Review URL: http://codereview.chromium.org/125125
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2172
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Mon, 15 Jun 2009 14:27:57 +0000 (14:27 +0000)]
Use the correct version of CallRuntime in the arm code generator.
This fixes assertion failures in debug mode tests.
Review URL: http://codereview.chromium.org/126128
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2171
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Mon, 15 Jun 2009 13:50:07 +0000 (13:50 +0000)]
Semirandom changes in the code generated by gcc -g mean we can't iterate quite
as deep on newer VMs in debug mode.
Review URL: http://codereview.chromium.org/126125
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2170
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Mon, 15 Jun 2009 13:18:51 +0000 (13:18 +0000)]
Modify regression test.
Because of varying floating-point precision, the slow case is hard to
test with explicit values. Instead, we check that sine and cosine do
not return the same value (the regression was that the slow case of
cosine accidentally did sine instead of cosine).
Review URL: http://codereview.chromium.org/126123
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2169
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kasperl@chromium.org [Mon, 15 Jun 2009 13:17:09 +0000 (13:17 +0000)]
Fix stack alignment issue with the new fast Math.random() code
under Mac OS.
Review URL: http://codereview.chromium.org/125123
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2168
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Mon, 15 Jun 2009 12:55:48 +0000 (12:55 +0000)]
Two small fixes for the Math.sin and Math.cos optimizations.
Review URL: http://codereview.chromium.org/125122
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2167
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Mon, 15 Jun 2009 12:06:48 +0000 (12:06 +0000)]
Optimize Math.sin and Math.cos by avoiding runtime calls.
Review URL: http://codereview.chromium.org/125121
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2166
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Mon, 15 Jun 2009 11:44:04 +0000 (11:44 +0000)]
Make young space smaller on ARM.
Review URL: http://codereview.chromium.org/126121
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2165
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Mon, 15 Jun 2009 10:27:52 +0000 (10:27 +0000)]
Optimize constant divisions by powers of 2.
Review URL: http://codereview.chromium.org/126116
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2164
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kasperl@chromium.org [Mon, 15 Jun 2009 09:49:17 +0000 (09:49 +0000)]
Optimize the slow case implementations of bit operations by
avoiding excessive ToNumber calls and by dealing with NaNs
in BIT_AND and SAR.
Review URL: http://codereview.chromium.org/125118
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2163
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mikhail.naganov@gmail.com [Mon, 15 Jun 2009 09:37:50 +0000 (09:37 +0000)]
Involve more log compression techniques.
Code addresses are now written as an offset from the previous address for ticks, code move and delete events. Employed backreference and RLE compression for code move and delete events. This gives additional 30% log size reduction for benchmarks run w/o snapshot.
Overall compression results (compared with the revision of V8 having no compression):
- V8: 70% size reduction for benchmarks run w/o snapshot (for reference, gzip gives 87%)
- Chromium: 65% size reduction for public html version of benchmarks (v4) (for reference, gzip gives 90%)
The one obvious opportunity for improving compression results in Chromium is to compress URLs of scripts.
Review URL: http://codereview.chromium.org/125114
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2162
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kasperl@chromium.org [Mon, 15 Jun 2009 08:27:38 +0000 (08:27 +0000)]
Avoid sign issues with the fast case code for Math.floor().
Review URL: http://codereview.chromium.org/126115
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2161
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kasperl@chromium.org [Mon, 15 Jun 2009 08:25:08 +0000 (08:25 +0000)]
Fix x64 build.
Review URL: http://codereview.chromium.org/126114
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2160
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kasperl@chromium.org [Mon, 15 Jun 2009 08:04:47 +0000 (08:04 +0000)]
Change the implementation of Math.random to use George
Marsaglia's multiply-with-carry instead of mixing the
bits obtained from calling the system random() twice.
This seems to be a bit faster and gives a better
distribution than the system random() in particular on
Windows.
Review URL: http://codereview.chromium.org/126113
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2159
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Mon, 15 Jun 2009 06:27:33 +0000 (06:27 +0000)]
Fix memory leak in regexp macro assembler. If the buffer has been
expanded the macro assembler owns the buffer and needs to dispose it
in the destructor.
Review URL: http://codereview.chromium.org/126111
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2158
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Fri, 12 Jun 2009 14:43:27 +0000 (14:43 +0000)]
Remove branching and binding with two arguments from the JumpTarget
class. Manually manage off-frame results at the two sites where they
were used.
Review URL: http://codereview.chromium.org/125048
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2157
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Fri, 12 Jun 2009 13:14:35 +0000 (13:14 +0000)]
X64: Call runtime function from JS stack frame.
Review URL: http://codereview.chromium.org/125049
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2156
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Fri, 12 Jun 2009 12:29:01 +0000 (12:29 +0000)]
X64: Remove restriction on using r12 as index register.
Review URL: http://codereview.chromium.org/126045
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2155
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Fri, 12 Jun 2009 11:25:15 +0000 (11:25 +0000)]
Implement more of x64 register allocator.
Review URL: http://codereview.chromium.org/126043
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2154
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Fri, 12 Jun 2009 11:25:13 +0000 (11:25 +0000)]
First round of JumpTarget simplification. Remove dead functions (jumps,
branches, and bind with more than two arguments). Remove unneeded
variable (the "watermark" on virtual frames).
Review URL: http://codereview.chromium.org/125045
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2153
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Fri, 12 Jun 2009 11:24:13 +0000 (11:24 +0000)]
Fix debugger after inlined keyed store change.
Make sure that the IC is always hit when debugging and make sure to
restore the fast case when leaving the debugger.
Review URL: http://codereview.chromium.org/125044
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2152
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
bak@chromium.org [Fri, 12 Jun 2009 11:11:04 +0000 (11:11 +0000)]
Changed the expansion of new space to depend on how much has survived scavenge.
This replaces the fixed expansion policy based on number of scavenges.
Increased the max new space size to 8MB (only reserved space).
Increased the defalt new space size to 512KB.
Review URL: http://codereview.chromium.org/125046
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2151
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Fri, 12 Jun 2009 10:25:05 +0000 (10:25 +0000)]
Move the default return handling to please some versions of gcc.
TBR=ager@chromium.org
Review URL: http://codereview.chromium.org/125043
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2150
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Fri, 12 Jun 2009 10:03:25 +0000 (10:03 +0000)]
Add scope chain information to the debugger.
For each frame it is now possible to request information on the scope chain. Each scope in the chain can have one of the types local, global, with and closure. For scopes of type global and with the mirror for the actual global or with object is available. For scopes of type local and closure a plain JavaScript object with the materialized content of the scope is created and its mirror is returned. Depending on the level of possible optimization the content of the materialized local and closure scopes might only contain the names which are actually used.
To iterate the scope chain an iterator ScopeIterator have been added which can provide the type of each scope for each part of the chain. This iterator creates an artificial local scope whenever that is present as the context chain does not include the local scope.
To avoid caching the mirror objects for the materialized the local and closure scopes transient mirrors have been added. They have negative handles and cannot be retrieved by subsequent lookup calls. Their content is part of a single response.
For debugging purposes an additional runtime function DebugPrintScopes is been added.
Added commands 'scopes' and 'scope' to the developer shell and fixed the dir command.
BUG=none
TEST=test/mjsunit/debug-scopes.js
Review URL: http://codereview.chromium.org/123021
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2149
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
antonm@chromium.org [Thu, 11 Jun 2009 19:44:48 +0000 (19:44 +0000)]
Lars spotted that Handle::operator -> and * are not inlined. That apparently buys us almost ~10%
speedup for some DOM operations.
Review URL: http://codereview.chromium.org/122038
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2148
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mikhail.naganov@gmail.com [Thu, 11 Jun 2009 14:08:34 +0000 (14:08 +0000)]
Implement tick events compression in a log file.
Two techniques are involved:
- compress repeated line ends (common stack beginnings) by using back references;
- do RLE compression of repeated tick events.
This gives only 5% size reduction on benchmarks run, but this is because tick events are only comprise 10% of file size. Under Chromium winnings are bigger because long repeated samples of idleness are now compressed into a single line.
Tickprocessor will be updated in the next patch.
Review URL: http://codereview.chromium.org/123012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2147
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Thu, 11 Jun 2009 13:51:46 +0000 (13:51 +0000)]
X64 implementation starts using virtual frame and register allocators.
Review URL: http://codereview.chromium.org/123018
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2146
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Thu, 11 Jun 2009 13:17:46 +0000 (13:17 +0000)]
X64: Create test JS-function and call it.
Review URL: http://codereview.chromium.org/123017
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2145
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Thu, 11 Jun 2009 13:17:26 +0000 (13:17 +0000)]
Inline keyed stores if the code is in a loop and the key is likely to
be a smi.
The inlined version works for stores to JSArrays where the key is a
smi that is within bounds of the array and the value is either
constant or a smi so we can skip the write-barrier.
Review URL: http://codereview.chromium.org/122035
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2144
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Thu, 11 Jun 2009 11:21:10 +0000 (11:21 +0000)]
X64: Adds zone scope before creating codegenerator for testing.
Review URL: http://codereview.chromium.org/122033
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2143
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Thu, 11 Jun 2009 10:46:28 +0000 (10:46 +0000)]
X64: Implemented InvokeFunction
Review URL: http://codereview.chromium.org/122030
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2142
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Thu, 11 Jun 2009 10:03:51 +0000 (10:03 +0000)]
Add x64 implementation test support for assembler and code generator.
Review URL: http://codereview.chromium.org/123014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2141
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Wed, 10 Jun 2009 16:32:15 +0000 (16:32 +0000)]
Fix fp code for mixed-endian ARM.
Review URL: http://codereview.chromium.org/119420
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2140
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Wed, 10 Jun 2009 15:53:46 +0000 (15:53 +0000)]
Add statistics operations and long calls and jumps to x64 macro assembler.
Remove unimplemented instructions from x64 assembler. Add operand-size
suffixes to add, sub, inc, dec, and cmp.
Review URL: http://codereview.chromium.org/118380
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2139
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Wed, 10 Jun 2009 15:33:31 +0000 (15:33 +0000)]
Make JSObjects with both indexed interceptors and indexed accessors work safely.
Review URL: http://codereview.chromium.org/118499
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2138
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Wed, 10 Jun 2009 15:08:25 +0000 (15:08 +0000)]
Get rid of the notion of "parameter pointer" that no longer exists in
the implementation but still lives on in comments and identifier
names.
Where it was used, it has been changed to "caller's stack pointer".
Review URL: http://codereview.chromium.org/118500
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2137
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kasperl@chromium.org [Wed, 10 Jun 2009 14:45:46 +0000 (14:45 +0000)]
Re-land patch r2110.
TBR=antonm@chromium.org
Review URL: http://codereview.chromium.org/118501
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2136
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Wed, 10 Jun 2009 12:41:57 +0000 (12:41 +0000)]
Fix a bug when shifting left by zero. Ensure that the left operand is
writable (non-aliased) so it can be used for the result in the slow
case.
Review URL: http://codereview.chromium.org/118496
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2134
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Wed, 10 Jun 2009 11:42:22 +0000 (11:42 +0000)]
Make Array.sort safely generic on JSObject types. Fix bug 346 code.google.com/p/v8/issues/detail?id=346
Review URL: http://codereview.chromium.org/119357
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2133
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Wed, 10 Jun 2009 11:42:13 +0000 (11:42 +0000)]
Add instanceof stub for ARM.
Review URL: http://codereview.chromium.org/119353
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2132
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Wed, 10 Jun 2009 10:20:37 +0000 (10:20 +0000)]
A bunch of changes to speed up math on ARM.
* Identify heap numbers that contain non-Smi int32s and do bit
ops on them without calling the fp hardware or emulation.
* Identify results that are non-Smi int32s and write them into
heap numbers without calling the fp hardware or emulation.
* Do unary minus on heap numbers without going into the runtime
system.
* On add, sub and mul if we have both Smi and heapnumber inputs
to the same operation then convert the Smi to a double and do
the op without going into runtime system. This also applies
if we have two Smi inputs but the result is not Smi.
Review URL: http://codereview.chromium.org/119241
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2131
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Wed, 10 Jun 2009 09:48:15 +0000 (09:48 +0000)]
X64: Implement CEntryStub and JSEntryTrampoline.
Still some supporting functions missing.
Review URL: http://codereview.chromium.org/114085
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2130
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Wed, 10 Jun 2009 09:00:07 +0000 (09:00 +0000)]
Cleanup of ARM exception handlers. Remove the unused code and
parameter pointer slots. Change it so that the handler address no
longer points into the middle of the handler.
Review URL: http://codereview.chromium.org/119414
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2129
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Wed, 10 Jun 2009 08:01:30 +0000 (08:01 +0000)]
Change the IA32 stack handler layout so that the handler address does
not point into the middle of the handler. Also remove top-of-stack
caching from MacroAssembler::PushTryHandler.
Review URL: http://codereview.chromium.org/119358
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2128
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Tue, 9 Jun 2009 09:26:53 +0000 (09:26 +0000)]
* Modify simulator and ARM code generator to avoid swi
instructions. The intention is that the snapshots generated
by the simulator should be usable on the hardware. Instead of
swi instructions we generate a branch to a swi instruction that
is not part of the snapshot. The call/jump is patched up in
the same way as other external references when the snapshot
is deserialized. This only works for EABI targets: on old ABI
targets we still emit some instructions not supported by the
simulator (fp coprocessor instructions).
Review URL: http://codereview.chromium.org/119036
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2127
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Tue, 9 Jun 2009 07:44:09 +0000 (07:44 +0000)]
Change IA32's CodeGenerator::GenerateFastCharCodeAt to eagerly
allocate and spill registers, so that the register reference counts
and virtual frame are unchanged in the main body.
This eliminates a few sites of magic branching or binding of
JumpTarget with arguments.
Review URL: http://codereview.chromium.org/119302
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2126
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Tue, 9 Jun 2009 07:03:21 +0000 (07:03 +0000)]
Change locationFromPosition() and locationFromLine() to use a binary search to locate line numbers from position numbers. Modify test debug-sourceinfo.js to include more tests, including error conditions.
Patch by Matt Hanselman, see http://codereview.chromium.org/118371.
BUG=213
TEST=test/mjsunit/debug-sourceinfo.js
Review URL: http://codereview.chromium.org/118425
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2125
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Tue, 9 Jun 2009 06:53:15 +0000 (06:53 +0000)]
Activate the debugger in the developer shell earlier.
This will support breaking in debugger statements in JavaScript files read from the command line.
Review URL: http://codereview.chromium.org/113998
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2124
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00