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
kmillikin@chromium.org [Mon, 8 Jun 2009 14:39:50 +0000 (14:39 +0000)]
Simplify the IA32 exception handler block by removing the unused code
pointer and parameter pointer slots.
Review URL: http://codereview.chromium.org/118383
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2123
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mikhail.naganov@gmail.com [Mon, 8 Jun 2009 13:39:48 +0000 (13:39 +0000)]
Add log compression ability.
This is a trivial per-row compression:
- short aliases are introduced for events and code creation tags;
- in tick events, offsets are used instead of absolute addresses;
- removed 'code-allocation' event, as it seems not used.
The first two options are depend on the new flag: 'compress-log', which is off by default.
On benchmarks run w/o snapshot, this gives 45% log size reduction.
Review URL: http://codereview.chromium.org/119304
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2122
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Mon, 8 Jun 2009 11:03:04 +0000 (11:03 +0000)]
Prepare push of V8 version 1.2.7 to trunk. Now working on version 1.2.8.
Review URL: http://codereview.chromium.org/118378
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2120
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Mon, 8 Jun 2009 10:47:49 +0000 (10:47 +0000)]
Add more debugging information to scripts compiled through eval.
Scripts now have a compilation type which can be host, eval or JSON. Host scripts are compiled through the API, eval scripts are compiled through call to evan and JSON scripts are compiled as a result of calling JSON.parse.
For scripts scripts compiled through eval the JavaScript function in top of the stack and the pc offset into the code is stored in the script object. This makes it possible to calculate the source position of the eval call later when requested. This information can be obtained through the script mirror object and is part of the script mirror JSON serialization for the debugger protocol.
Moved the enumeration ScripType into class Script and remamed to Type. The new compilation type enumeration is also inside the class Script.
This information is now shown when using the scripts command in he developer shell debugger.
Review URL: http://codereview.chromium.org/119108
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2119
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Mon, 8 Jun 2009 09:46:09 +0000 (09:46 +0000)]
Introduce an API to force the deletion of a property ignoring
interceptors and dont-delete attributes.
Minor change to the behavior of eval: throw exception when calling
eval in a context for which the global has been detached. This
matches the behavior of both Firefox and Safari post navigation in the
browser.
Review URL: http://codereview.chromium.org/118374
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2118
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Mon, 8 Jun 2009 08:51:35 +0000 (08:51 +0000)]
Fix compilation on FreeBSD. Thanks to Ryan Dahl for patch.
http://codereview.chromium.org/113897
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2117
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kasperl@chromium.org [Mon, 8 Jun 2009 08:03:58 +0000 (08:03 +0000)]
Lower the number of generations in the script compilation
cache to 5 (down from 8). Generations 5, 6, and 7 are
rarely hit in real browsing sessions (~2% in the best case)
so it seems better to lower the size to avoid carrying around
too many compiled scripts in the cache.
Review URL: http://codereview.chromium.org/119301
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2116
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Mon, 8 Jun 2009 07:16:04 +0000 (07:16 +0000)]
Change handle creation to use Object*, to comply with strict aliasing rules.
Review URL: http://codereview.chromium.org/119177
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2115
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Fri, 5 Jun 2009 17:14:06 +0000 (17:14 +0000)]
Fix x64 build.
TBR=whesse@chromium.org,lrn@chromium.org
Review URL: http://codereview.chromium.org/118310
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2114
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mikhail.naganov@gmail.com [Fri, 5 Jun 2009 15:49:37 +0000 (15:49 +0000)]
Add an ability to explicitly specify path to d8 shell to linux-tick-processor.
Review URL: http://codereview.chromium.org/118306
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2113
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Fri, 5 Jun 2009 14:16:32 +0000 (14:16 +0000)]
Simplify the processing of deferred code in the code generator. Our
deferred code snippets are highly stylized. They always make a call
to a stub or the runtime and then return. This change takes advantage
of that.
Creating a deferred code object now captures a snapshot of the
registers in the virtual frame. The registers are automatically saved
on entry to the deferred code and restored on exit.
The clients of deferred code must ensure that there is no change to
the registers in the virtual frame (eg, by allocating which can cause
spilling) or to the stack pointer. That is currently the case.
As a separate change, I will add either code to verify this constraint
or else code to forbid any frame effect.
The deferred code itself does not use the virtual frame or register
allocator (or even the code generator). It is raw macro assembler
code.
Review URL: http://codereview.chromium.org/118226
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2112
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
antonm@chromium.org [Fri, 5 Jun 2009 13:42:29 +0000 (13:42 +0000)]
Revert r2110 as it introduces performance regressions.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2111
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
antonm@chromium.org [Fri, 5 Jun 2009 10:50:36 +0000 (10:50 +0000)]
Don't do local lookup on global object as those (currently) are not JITed anyway.
Review URL: http://codereview.chromium.org/119048
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2110
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kasperl@chromium.org [Fri, 5 Jun 2009 08:07:15 +0000 (08:07 +0000)]
Revert revision 2108. This brings back the changes
submitted in revisions 2093, 2094, 2099, and 2106.
There's no evidence that supports that these changes
should be the cause of the unexplained performance
regressions on the intl2 and DHTML page cyclers.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2109
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kasperl@chromium.org [Fri, 5 Jun 2009 06:57:30 +0000 (06:57 +0000)]
Experimental revert of revisions 2093, 2094, 2099, and
2106 to try to isolate a performance regression on the
page cyclers.
I'll roll the changes back in if this doesn't fix the
regression.
TBR=antonm@chromium.org
Review URL: http://codereview.chromium.org/118302
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2108
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kasperl@chromium.org [Fri, 5 Jun 2009 06:20:30 +0000 (06:20 +0000)]
Patch by Craig Schlenter. See codereview.chromium.org/118153
Change stack alignment on linux to 16 bytes to keep gcc 4.4 happy.
This fixes the mksnapshot segfault without requiring -fno-tree-vectorize
which just avoided the problem by not generating code with movdqa.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2107
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
antonm@chromium.org [Thu, 4 Jun 2009 19:19:53 +0000 (19:19 +0000)]
Fix the issue with layout tests.
The problem was I incorrectly treated NULL result as failure to fetch
a property with a getter. However, if getter returns zero, it is
manifested as NULL pointer (see added test case).
Good news: that gives another boost as before this CL if getter returned
0, I did another slow lookup.
Review URL: http://codereview.chromium.org/119172
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2106
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Thu, 4 Jun 2009 12:01:55 +0000 (12:01 +0000)]
Clean up the AST pretty printer by adding some missing newlines and
indentation.
Review URL: http://codereview.chromium.org/118234
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2105
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Thu, 4 Jun 2009 11:54:14 +0000 (11:54 +0000)]
X64: JSEntry Stub
Review URL: http://codereview.chromium.org/118115
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2104
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Thu, 4 Jun 2009 11:20:03 +0000 (11:20 +0000)]
Fix formatting of one line.
Review URL: http://codereview.chromium.org/119171
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2103
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Thu, 4 Jun 2009 11:09:17 +0000 (11:09 +0000)]
Declare register names as static constants rather than external globals.
Review URL: http://codereview.chromium.org/119082
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2102
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mikhail.naganov@gmail.com [Thu, 4 Jun 2009 09:20:27 +0000 (09:20 +0000)]
Profiler cleanup: removed another piece that is only needed for DevTools profiler.
Review URL: http://codereview.chromium.org/118229
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2101
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Thu, 4 Jun 2009 09:18:39 +0000 (09:18 +0000)]
Added more output on timeout failures to test runner.
Review URL: http://codereview.chromium.org/119112
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2100
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
antonm@chromium.org [Wed, 3 Jun 2009 16:09:43 +0000 (16:09 +0000)]
Store lookup index in ARM stubs as well (see r2093 and 2094 for more info).
Review URL: http://codereview.chromium.org/118163
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2099
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Wed, 3 Jun 2009 13:30:31 +0000 (13:30 +0000)]
Add multiplication and division to x64 assembler. Add emit_modrm() function.
Review URL: http://codereview.chromium.org/119078
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2098
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Wed, 3 Jun 2009 12:21:54 +0000 (12:21 +0000)]
Rename misnamed test file.
Review URL: http://codereview.chromium.org/119081
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2097
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Wed, 3 Jun 2009 12:20:56 +0000 (12:20 +0000)]
Refactor IA32 shift operations to simplify moving the right operand
into the ecx register and to ensure that there is no frame effect
between the first entry to the deferred code and binding its exit.
Review URL: http://codereview.chromium.org/118157
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2096
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Wed, 3 Jun 2009 12:09:52 +0000 (12:09 +0000)]
Fix flakyness in tests: make sure to garbage collect temporary test
external strings so that they are not disposed when running other
tests that rely on only one external string being disposed during its
run.
TBR=kasperl
Review URL: http://codereview.chromium.org/118158
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2095
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
antonm@chromium.org [Wed, 3 Jun 2009 12:04:53 +0000 (12:04 +0000)]
Follow up to r2093: forgotten files and changes.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2094
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
antonm@chromium.org [Wed, 3 Jun 2009 11:25:34 +0000 (11:25 +0000)]
In case of holder with fast properties that allows to fetch the property
immediately if holder has this property or saves binary search on holder if
property doesn't belong to holder. Of course, in the cases when named getter
returns nothing.
That gives ~20% for dom benchmark/Document Object String Get, speeds up overall
dom_perf (not dramatically) and overall score for peacekeeper. Strange, but DOM
part of peacekeepr runs somewhat slower.
Review URL: http://codereview.chromium.org/118118
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2093
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mikhail.naganov@gmail.com [Wed, 3 Jun 2009 11:21:23 +0000 (11:21 +0000)]
Make tickprocessor's ProfileView extensible and move out DevTools-only stuff.
Review URL: http://codereview.chromium.org/119076
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2092
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Wed, 3 Jun 2009 10:30:50 +0000 (10:30 +0000)]
X64: Added implementations of Set(..., Immediate) to macro assembler.
Removed duplicates comments in assembler-x64.cc.
Review URL: http://codereview.chromium.org/119035
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2091
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Tue, 2 Jun 2009 20:11:26 +0000 (20:11 +0000)]
As a simplification, manually inline the function
DeferredInlineBinaryOperation::GenerateInlineCode and remove its
definition. It was only called from one site and was the only
deferred code object that was split that way into fast-case inline and
slow-case stub.
Review URL: http://codereview.chromium.org/119037
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2090
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Tue, 2 Jun 2009 13:40:52 +0000 (13:40 +0000)]
Add miscellaneous operations to x64 assembler.
Review URL: http://codereview.chromium.org/113997
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2089
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Tue, 2 Jun 2009 11:43:26 +0000 (11:43 +0000)]
Add shift operations to x64 assembler.
Review URL: http://codereview.chromium.org/118107
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2088
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Tue, 2 Jun 2009 11:18:41 +0000 (11:18 +0000)]
Factor out the code for emitting the IA32 binary operations div and
mod so they do not share code with the other binary operations. They
now preallocate their fixed registers (eax and edx). There is now no
frame effect between entries to the deferred call to the stub.
Review URL: http://codereview.chromium.org/118110
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2087
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mikhail.naganov@gmail.com [Tue, 2 Jun 2009 09:33:17 +0000 (09:33 +0000)]
Fix determining of JS lower stack bottom used in profiler's JS stack tracer to work with Chromium.
My assumption that log initialization happens somewhere near the stack's bottom is true for V8's sample shell but isn't true for Chromium, causing many otherwise valid stack addresses to be thrown out. The solution proposed is to save stack pointer value for the outermost JS function in ThreadLocalTop similar to c_entry_fp.
Implemented only for IA-32. Currently I'm not dealing with profiling on ARM and x86-64 anyway.
Review URL: http://codereview.chromium.org/112082
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2086
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Tue, 2 Jun 2009 07:21:05 +0000 (07:21 +0000)]
X64: Added jmp and call and nop(n) to X64 assembler.
Review URL: http://codereview.chromium.org/115920
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2085
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Fri, 29 May 2009 19:17:48 +0000 (19:17 +0000)]
Add a couple of parenthesis to improve readability and please certain
GCC version.
BUG=364
TBR=sgjesse@chromium.org
Review URL: http://codereview.chromium.org/118016
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2083
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mikhail.naganov@gmail.com [Fri, 29 May 2009 15:33:02 +0000 (15:33 +0000)]
Fix wait interval calculation in ProfLazyMode test.
Also, add a small delay to be sure that all ticks are logged prior to leaving CheckThatProfilerWorks function.
Review URL: http://codereview.chromium.org/114062
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2082
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Fri, 29 May 2009 12:14:54 +0000 (12:14 +0000)]
Change RelocInfo to write 64-bit data field on x64 architecture.
Review URL: http://codereview.chromium.org/115860
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2081
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Fri, 29 May 2009 10:52:00 +0000 (10:52 +0000)]
Prepare for push to trunk. We are now working on 1.2.7.
Review URL: http://codereview.chromium.org/113994
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2079
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mikhail.naganov@gmail.com [Fri, 29 May 2009 09:33:53 +0000 (09:33 +0000)]
Use uint in ProfLazyMode test when measuring time delta.
While testing ProfLazyMode stability I encountered a situation when the cycle supposed to run for 200 ms started to run "infinitely" because delta between two int64_t values became negative.
Review URL: http://codereview.chromium.org/115918
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2078
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mikhail.naganov@gmail.com [Fri, 29 May 2009 09:00:39 +0000 (09:00 +0000)]
fix embedded vector copy constructor and assignment.
Thanks to Tobias Kaes, an issue with default copy constructor and assignment operator is found and fixed.
BUG=http://code.google.com/p/v8/issues/detail?id=358
Review URL: http://codereview.chromium.org/113992
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2077
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Fri, 29 May 2009 08:56:31 +0000 (08:56 +0000)]
Add test, neg, and not instructions to x64 assembler
Review URL: http://codereview.chromium.org/112066
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2076
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Fri, 29 May 2009 08:50:05 +0000 (08:50 +0000)]
Removed unused variable to fix Linux build.
TBR=erik.corry@gmail.com
Review URL: http://codereview.chromium.org/115917
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2075
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Fri, 29 May 2009 08:42:02 +0000 (08:42 +0000)]
Change the handling of the debug break stack guard. The debug break is no longer ignored when hit inside "system" JavaScript. The reason for this is twofold:
* Running "system" JavaScript with the debug break flag active leads to slow running code while waiting for the break in non "system" JavaScript (one exception to this it is to try to avoid breaks in the clear mirror cache JavaScript code called when leaving the debugger).
* If this happens while processing RegExp running in native code an infinite loop is created as the stack guard handler for RegExp does not move execution forward
Fixed a GC bug in the interrupt handling for RegExp running in native code.
Added test of debug break while in debug message handler callback and debug break while executing a RegExp.
Review URL: http://codereview.chromium.org/115262
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2074
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mikhail.naganov@gmail.com [Fri, 29 May 2009 06:56:23 +0000 (06:56 +0000)]
Two simple profiler changes: 1) log sampling rate, 2) check current state before pausing & resuming.
Review URL: http://codereview.chromium.org/113961
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2073
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mikhail.naganov@gmail.com [Thu, 28 May 2009 13:56:32 +0000 (13:56 +0000)]
Handle filling up of memory buffer to make log processing in DevTools Profiler easier.
When profiler's memory buffer is filled up, profiling is stopped and it is ensured that the last record in the buffer is "profiler,\"pause\"" thus making the end of profiling session explicit. Otherwise DevTools Profiler would need to guess whether the current profiling session has been stopped.
Tested with Chromium.
Review URL: http://codereview.chromium.org/115859
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2072
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Thu, 28 May 2009 11:30:54 +0000 (11:30 +0000)]
Improve debugger property lookup.
before performing debugger property lookup make sure the current context is set to the context active before the debugger was entered.
Make the use of the LookupResult GC safe in debugger property lookup.
Review URL: http://codereview.chromium.org/115855
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2071
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Thu, 28 May 2009 10:06:48 +0000 (10:06 +0000)]
Add more arithmetic to x64 assembler.
Review URL: http://codereview.chromium.org/115857
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2070
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Thu, 28 May 2009 09:18:17 +0000 (09:18 +0000)]
Add immediate operands and arithmetic operations to the x64 assembler.
Review URL: http://codereview.chromium.org/115816
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2069
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00