Commit Graph

350 Commits

Author SHA1 Message Date
mikhail.naganov@gmail.com
1f56c4c7af Update MSVS and Xcode projects to make V8 compilable.
MSVS: define ENABLE_VM_STATE_TRACKING
Xcode: add missing files, sort project

BUG=673

TBR=sgjesse@chromium.org

Review URL: http://codereview.chromium.org/1650005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4406 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-14 08:31:37 +00:00
mikhail.naganov@gmail.com
d4e436d0ad Try to fix WebKit bot: add 'circular-queue.h' and 'circular-queue-inl.h' to v8.gyp
TBR=ricow@chromium.org

Review URL: http://codereview.chromium.org/1523021

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4383 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-12 07:52:40 +00:00
mikhail.naganov@gmail.com
6f3f2f1c42 Allow new CPU profiling subsystem to coexist nicely with the old one.
This is to make possible enabling usage of the new profiling subsystem
in Chromium without much hassle. The idea is pretty simple: unless the
new profiling API is used, all works as usual, as soon as Chromium
starts to use the new API, it will work too.

Review URL: http://codereview.chromium.org/1635005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4382 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-12 07:23:43 +00:00
ricow@chromium.org
88be99e9c0 Fix the gyp file to include the ENABLE_VMSTATE_TRACKING
Review URL: http://codereview.chromium.org/1564021

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4369 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-09 07:29:58 +00:00
mikhail.naganov@gmail.com
c520e28dcb Make VM state tracking to be independent of logging and profiling.
Also pull out VMState into its own set of source files.

Review URL: http://codereview.chromium.org/1519027

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4361 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-08 13:37:39 +00:00
mikhail.naganov@gmail.com
070ee02057 Add include/v8-profiler.h into manually maintained project files.
Sorry, forgot about it. No need to change v8.gyp because it only
references the whole 'include' directory.

TBR=sgjesse@chromium.org

Review URL: http://codereview.chromium.org/1610009

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4350 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-06 17:15:19 +00:00
erik.corry@gmail.com
77fb69b6dc Committing http://codereview.chromium.org/1543003 for pvalchev and sprewell
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4341 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-06 09:27:09 +00:00
whesse@chromium.org
75003d7e76 Change a TypeInfo function from inline to non-inline, reducing stack usage during code compilation.
Review URL: http://codereview.chromium.org/1369003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4297 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-03-26 11:34:00 +00:00
kmillikin@chromium.org
70bbac9c56 Move flow graph and helper classes to their own file.
The FlowGraph, FlowGraphBuilder, and flow graph node classes are moved
to src/flow-graph.cc.

Review URL: http://codereview.chromium.org/1253009

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4287 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-03-25 16:22:48 +00:00
erik.corry@gmail.com
6a8398cffa Fix my fast-codegen.cc gyp file stupidity.
Review URL: http://codereview.chromium.org/1207007

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4277 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-03-25 13:56:29 +00:00
erik.corry@gmail.com
d20232096f Gyp causing me gyp.
Review URL: http://codereview.chromium.org/1323003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4274 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-03-25 13:31:19 +00:00
erik.corry@gmail.com
f5523ecc6a Split the virtual frame into heavy and light versions.
The heavy version is for x86 and x64.  The light version
is for ARM and MIPS.  Remove the elements_ array from the
virtual frame in the light version.  More simplifications
to come, followed by light register allocation.
Review URL: http://codereview.chromium.org/1164002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4272 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-03-25 13:18:00 +00:00
fschneider@chromium.org
0737ec8dcb Rename NumberInfo to TypeInfo.
Since we add more type (StringType, PrimitiveType) the name
NumberInfo does not make sense anymore.

Review URL: http://codereview.chromium.org/1207006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4268 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-03-25 12:44:15 +00:00
fschneider@chromium.org
51495beb78 Store type information with constants.
Instead of testing the value of a constant frame element to determine
the type we compute its type information at construction time.

This speeds up querying the type information during code generation.

This change also adds support for Integer32 constants and sets 
the type information accordingly.

Review URL: http://codereview.chromium.org/1277001

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4256 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-03-24 15:29:41 +00:00
sgjesse@chromium.org
b278895d28 Update Visual Studio project files.
Review URL: http://codereview.chromium.org/1111011

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4225 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-03-23 13:09:33 +00:00
kasperl@chromium.org
7d6a3b433f Merge the partial_snapshots branch back into bleeding_edge. For
now, the custom call generator stuff is disabled.
Review URL: http://codereview.chromium.org/1094014

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4217 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-03-23 11:40:38 +00:00
mikhail.naganov@gmail.com
89b040894e Add a few tests to ProfilerEventsProcessor.
Review URL: http://codereview.chromium.org/1084009

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4197 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-03-19 13:51:01 +00:00
floitschV8@gmail.com
05beab6b1f Rename files containing underscores.
Review URL: http://codereview.chromium.org/1102002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4191 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-03-19 12:15:24 +00:00
mikhail.naganov@gmail.com
9582645a02 Add basic C++ implementation of CPU profiler.
Review URL: http://codereview.chromium.org/1079006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4189 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-03-19 09:46:53 +00:00
floitschV8@gmail.com
9e84308722 Rename grisu to fast-dtoa. Get rid of template.
Review URL: http://codereview.chromium.org/1032007

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4181 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-03-18 13:19:59 +00:00
floitschV8@gmail.com
74b4ad0e69 Fix arm compilation. DiyFp multiplications are now in a separate procedure.
Review URL: http://codereview.chromium.org/971006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4171 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-03-17 15:57:26 +00:00
mikhail.naganov@gmail.com
d2188658ca Re-apply r4159 now with working test on x64
TBR=sgjesse@chromium.org

Review URL: http://codereview.chromium.org/979005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4164 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-03-17 13:15:42 +00:00
fschneider@chromium.org
9f318feb93 Revert r4159 because of x64 test failures.
Review URL: http://codereview.chromium.org/1049003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4162 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-03-17 13:04:07 +00:00
mikhail.naganov@gmail.com
ce9298029d Implement circular queues for the C++ version of CPU profiler.
Circular queues serve as a transport for communicating between
VM, stack sampler and analyzer threads. Logging requirements
for VM and stack sampler are completely different, that's why
I introduced two different versions of CQs.

Review URL: http://codereview.chromium.org/1047002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4159 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-03-17 12:25:10 +00:00
mikhail.naganov@gmail.com
12d252eb81 Start migrating profiles processing to C++.
Adding code for maintaining (address -> name) mapping and building
call trees.

Review URL: http://codereview.chromium.org/910002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4131 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-03-15 14:11:19 +00:00
floitschV8@gmail.com
8814064337 Fast double-to-ascii conversion.
Review URL: http://codereview.chromium.org/866002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4106 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-03-11 14:49:35 +00:00
floitschV8@gmail.com
088afd03a6 Revert grisu commits.
Review URL: http://codereview.chromium.org/804005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4092 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-03-10 21:26:32 +00:00
floitschV8@gmail.com
c5eea7fee2 Fast algorithm for double->string conversion.
Review URL: http://codereview.chromium.org/619005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4090 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-03-10 20:49:14 +00:00
kmillikin@chromium.org
bce8d2ebae Remove unneeded variable usage analysis.
A variable usage analysis pass was run on toplevel and lazily-compiled
code but never used.  Remove this pass and the data structures it
builds.

The representation of variable usage for Variables has been changed
from a struct containing a (weighted) count of reads and writes to a
simple flag.  VariableProxies are always used, as before.  The unused
"object uses" is removed.

Review URL: http://codereview.chromium.org/669270

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4052 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-03-08 13:01:24 +00:00
peter.rybin@gmail.com
77d63cc29e Basic implementation of liveedit feature
Review URL: http://codereview.chromium.org/652027

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4045 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-03-05 22:08:58 +00:00
fschneider@chromium.org
893637a057 Inlining a few virtual frame functions.
Introducing a virtual-frame-inl.h file containing some platform-independent
virtual frame function which are small enough to be inlined.

Removed unnecessary #include of virtual-frame.h from register-allocator-inl.h
and added the necessary explicit includes in a number of files.

Review URL: http://codereview.chromium.org/660104

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3962 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-02-26 09:32:48 +00:00
sgjesse@chromium.org
dfb73e9508 Remove inheritance of chromium flags
Review URL: http://codereview.chromium.org/570022

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3936 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-02-24 08:30:12 +00:00
fschneider@chromium.org
226769d8bf Temporarily move the ia32 fast code generator into the platform-specific directory.
This allows us to make changes to one platform without affecting the others.


Review URL: http://codereview.chromium.org/646019

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3907 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-02-19 09:17:37 +00:00
peter.rybin@gmail.com
3849f08ade Add central bridge for liveedit support
Review URL: http://codereview.chromium.org/607004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3891 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-02-17 20:37:08 +00:00
fschneider@chromium.org
dbe99e405a Introduce number type information in the virtual frame.
Each frame element gets a new attribute with number type information. A frame element can be: 

- smi 
- heap number 
- number (i.e. either of the above) 
- or something else. 

The type information is propagated along with all virtual frame operations. 
Results popped from the frame carry the number information with them.

Two optimizations in the code generator make use of the new 
information: 
- GenericBinaryOpSyub omits map checks if input operands are numbers. 
- Boolean conversion for numbers: Emit inline code for converting a number (smi or heap number) to boolean. Do not emit call to ToBoolean stub in this case.


Review URL: http://codereview.chromium.org/545007

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3861 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-02-15 14:24:38 +00:00
mikhail.naganov@gmail.com
5ebc1a68ef Fix tests after r3811.
TBR=sgjesse@chromium.org

Review URL: http://codereview.chromium.org/574027

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3813 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-02-08 08:55:01 +00:00
mikhail.naganov@gmail.com
f332ab9615 Profiler tick processor: exploit d8's readline to avoid reading
entire file prior to parsing it. This allows processing of huge
log files (over 200 MB.)

Review URL: http://codereview.chromium.org/574015

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3811 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-02-08 08:15:18 +00:00
mikhail.naganov@gmail.com
e51a05f338 Fix issue 597: builtins and stubs are missing in profiler log when using snapshots.
After this fix, profiles of non-snapshotted VMs are now equivalent to
profiles of snapshotted VMs (having that --log-snapshot-positions is used,
and mksnapshot's log is given to the tick processor script.)

BUG=597

Review URL: http://codereview.chromium.org/574005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3802 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-02-04 21:34:03 +00:00
kmillikin@chromium.org
41865cd677 Implement simple fast-path code for functions containing this property stores and global variables.
Code is specialized to the initial receiver.

Review URL: http://codereview.chromium.org/553149

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3760 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-02-01 17:01:58 +00:00
mikhail.naganov@gmail.com
0867927b4b Rewrite CsvParser.parseLine to make it simpler and gain some performance improvement.
Review URL: http://codereview.chromium.org/548198

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3746 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-01-29 13:32:32 +00:00
fschneider@chromium.org
88f6734ddb Add a pass for the fast compiler to label expression nodes.
This change adds a post-order numbering to AST nodes that
are relevant for the fast code generator. It is only invoked
together with the fast compiler. 

Also changed the ast printer to print the  numbering for 
testing purposes if it is present.

Review URL: http://codereview.chromium.org/553134

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3738 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-01-29 09:42:13 +00:00
sgjesse@chromium.org
f07a0230dc Updage Visual Studio project files
Add the new files for the fast compiler.

TBR=kmillikin@chromium.org
Review URL: http://codereview.chromium.org/557034

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3728 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-01-28 08:41:31 +00:00
sgjesse@chromium.org
5fe8bd9919 Fix 64-bit build on Windows and Visual Studio project files
64-bit version now builds on Windows again in both release and debug mode.

The Visual Studio project files have been updated so that all three configurations work (32-bit, 64-bit and 32-bit with ARM simulator). They all convert from Visual Studio 2005 to Visual Studio 2008.

TBR=lrn@chromium.org
Review URL: http://codereview.chromium.org/549174

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3722 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-01-27 16:18:58 +00:00
kmillikin@chromium.org
2b62886dab Refactor the selection of code generator and add the possibility of a
simpler backend for non-toplevel code.

Review URL: http://codereview.chromium.org/549158

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3721 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-01-27 15:23:48 +00:00
ager@chromium.org
cd51fcd35f Land patch to add Solaris platform support.
Patch by Erich Ocean and Ryan Dahl.

Review URL: http://codereview.chromium.org/545125

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3688 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-01-25 12:37:31 +00:00
mikhail.naganov@gmail.com
999e3fca90 Fix issue 553: function frame is skipped in profile when compare stub is called.
The problem appeared due to a fact that stubs doesn't create a stack
frame, reusing the stack frame of the caller function. When building
stack traces, the current function is retrieved from PC, and its
callees are retrieved by traversing the stack backwards. Thus, for
stubs, the stub itself was discovered via PC, and then stub's caller's
caller was retrieved from stack.

To fix this problem, a pointer to JSFunction object is now captured
from the topmost stack frame, and is saved into stack trace log
record. Then a simple heuristics is applied whether a referred
function should be added to decoded stack, or not, to avoid reporting
the same function twice (from PC and from the pointer.)

BUG=553
TEST=added to mjsunit/tools/tickprocessor

Review URL: http://codereview.chromium.org/546089

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3673 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-01-21 16:42:41 +00:00
kmillikin@chromium.org
1405258621 Rename the fast-codegen* files to full-codegen*.
Review URL: http://codereview.chromium.org/549109

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3662 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-01-20 16:28:21 +00:00
mikhail.naganov@gmail.com
37d3972429 Fix issue 571: display descriptive names for code objects from snapshot.
As this is only needed for internal profiling (not for DevTools),
the following approach had been chosen:

 - during snapshot creation, positions of serialized objects inside
   a snapshot are logged;

 - then during V8 initialization, positions of deserealized objects
   are logged;

 - those positions are used for retrieving code objects names from
   snapshot creation log, which needs to be supplied to tick processor
   script.

Positions logging is controlled with the new flag: --log_snapshot_positions.
This flag is turned off by default, and this adds no startup penalty.

To plug this fix to Golem, the following actions are needed:

 - logs created using 'mksnapshot' need to be stored along with VM images;

 - tick processor script needs to be run with '--snapshot-log=...' cmdline
   argument.

BUG=571

Review URL: http://codereview.chromium.org/551062

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3635 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-01-18 16:04:25 +00:00
antonm@chromium.org
40cef2dc6b Lift filtering of the test higher as otherwise we can get
empty list of tests to run after the filtering and
would actually die with division by 0.

And there was a type (|c| instead of |case|) which is fixed too.

Review URL: http://codereview.chromium.org/545080

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3629 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-01-18 13:17:38 +00:00
sgjesse@chromium.org
caf177c688 Fix ARM cross compiles generated from gyp.
Landing of http://codereview.chromium.org/549018.

TBR=piman@chromium.org


Review URL: http://codereview.chromium.org/546030

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3590 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-01-13 07:35:31 +00:00
ager@chromium.org
d73f2efcf3 Inline a number of simple date computations.
The minifier has been updated to have better recognition of regular
expressions.

Review URL: http://codereview.chromium.org/521057

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3565 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-01-08 07:49:07 +00:00
ricow@chromium.org
33079fb851 Added ES5 15.2.3.2 Object.getPrototypeOf.
Review URL: http://codereview.chromium.org/523124

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3555 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-01-07 10:01:24 +00:00
vitalyr@chromium.org
fce227ea77 stats-viewer.py: support passing test_shell pid.
Review URL: http://codereview.chromium.org/496010

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3464 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-12-14 17:05:38 +00:00
vitalyr@chromium.org
f83180a1eb Updated stats-viewer.py to work with chromium.
Review URL: http://codereview.chromium.org/473002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3463 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-12-14 16:13:52 +00:00
sgjesse@chromium.org
209035c996 Initial OpenBSD support
Patch by Peter Valchev <pvalchev@gmail.com>.

TBR=ager@chromium.org
Review URL: http://codereview.chromium.org/465002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3398 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-12-02 13:38:50 +00:00
mikhail.naganov@gmail.com
f2f00d0d09 A cache of MD5 sums of source file contents is now maintained. Cpplint is only invoked for new, changed, and files containing errors from the past lint check run.
As a result, repetitive presubmit checks now run in a blink of an eye, so we can include it as an obligatory pre-submit check to avoid frequent CB breakages on lint errors.

Review URL: http://codereview.chromium.org/440026

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3368 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-11-26 10:17:03 +00:00
mikhail.naganov@gmail.com
2af151ee63 Include getters and setters callbacks invocations in CPU profiler log.
Logging getters and setters from DOM API is extremely useful for web
developers as setting (and getting!) several properties can cause
page relayouts which take significant time.

Review URL: http://codereview.chromium.org/434074

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3363 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-11-25 16:39:18 +00:00
mikhail.naganov@gmail.com
eb299d5d18 Xcode project: add fast-codegen sources.
TBR=iposva@chromium.org

Review URL: http://codereview.chromium.org/440016

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3358 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-11-25 10:45:31 +00:00
ager@chromium.org
f6a5d4221f Land gyp change to remove -Os from C++ flags if it exists on Linux.
Review URL: http://codereview.chromium.org/439014

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3347 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-11-24 11:08:06 +00:00
lrn@chromium.org
931396e689 Ignore "sputniktests" subdirectory from presubmit checks.
Review URL: http://codereview.chromium.org/385067


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3290 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-11-12 12:11:40 +00:00
sgjesse@chromium.org
0fbfa2f8d2 Report both size and count from the heap profile processor
Added two options for controlling this --size and --count. Default is --size to match the original behaviour.
Review URL: http://codereview.chromium.org/385001

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3256 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-11-10 10:18:41 +00:00
christian.plesner.hansen@gmail.com
0ca9beb316 Added test runner for sputnik tests.
Review URL: http://codereview.chromium.org/372053


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3240 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-11-09 09:31:57 +00:00
erik.corry@gmail.com
6a3921fc0e Keep natives source code in external strings instead of putting
it in regular flat strings that are part of the snapshot.
After this change we don't need libraries-empty.cc any more.  In
this change libraries-empty.cc is just a the same as libraries.cc
and the scons build builds it but does not use it.  We can move
in stages to a situation where it is not generated at all for all
the build systems that we have.
Review URL: http://codereview.chromium.org/360050

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3238 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-11-06 13:48:33 +00:00
sgjesse@chromium.org
8f53c139d3 Enable mksnapshot on ARM when cross-compiling using gyp
Review URL: http://codereview.chromium.org/351019



git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3235 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-11-06 07:50:31 +00:00
kmillikin@chromium.org
d92fa03eca Move the Location class into the AST Expression class as a member.
Since it is (currently) only an enum, change it to an enum (for now).

Review URL: http://codereview.chromium.org/342035

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3181 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-10-30 08:36:46 +00:00
sgjesse@chromium.org
ebb735e317 Add snapshot option to test runner.
Passing option --snapshot to test.py has the same effect as passing -S snapshot=on.
Review URL: http://codereview.chromium.org/346004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3155 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-10-28 09:38:09 +00:00
erik.corry@gmail.com
d50fbb634e Fix bug that meant that dependent tests were never reported as
failing (though they could still crash).
(Cache the result of the test in the output object, not in the
test object which is reused from the prerequisite to the dependent.)
Review URL: http://codereview.chromium.org/321001

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3115 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-10-22 19:09:09 +00:00
kmillikin@chromium.org
339e49c0b2 Added first support for tracking locations of expressions in the
fast-mode code generator.

AST expression nodes are annotated with a location when doing the
initial syntactic check of the AST.  In the current implementation,
expression locations are 'temporary' (ie, allocated to the stack) or
'nowhere' (ie, the expression's value is not needed though it must be
evaluated for side effects).

For the assignment '.result = true' on IA32, we had before (with the
true value already on top of the stack):

32  mov eax,[esp]
35  mov [ebp+0xf4],eax
38  pop eax

Now:

32  pop [ebp+0xf4]


======== On x64, before:

37  movq rax,[rsp]
41  movq [rbp-0x18],rax
45  pop rax

Now:

37  pop [rbp-0x18]


======== On ARM, before (with the true value in register ip):

36  str ip, [sp, #-4]!
40  ldr ip, [sp, #+0]
44  str ip, [fp, #-12]
48  add sp, sp, #4

Now:

36  str ip, [fp, #-12]


Review URL: http://codereview.chromium.org/267118

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3076 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-10-15 16:42:22 +00:00
kmillikin@chromium.org
11d9e7ff51 Initial port of top-level code generator to ARM. For the constant
true at the top level we generate:

  0  stmdb sp!, {r1, r8, fp, lr}
  4  add fp, sp, #8
  8  ldr ip, [r10, #+4]
 12  ldr r2, [r10, #+0]
 16  str ip, [sp, #-4]!
 20  add lr, pc, #4
 24  cmp sp, r2
 28  ldrcc pc, [pc, #+68]        ;; code: STUB, StackCheck, minor: 0
 32  ldr ip, [pc, #+68]          ;; object: 0xf5bc4161 <true>
 36  str ip, [sp, #-4]!
 40  ldr ip, [sp, #+0]
 44  str ip, [fp, #-12]
 48  add sp, sp, #4
 52  ldr ip, [fp, #-12]
 56  str ip, [sp, #-4]!
 60  ldr r0, [sp], #+4
 64  mov sp, fp                  ;; js return
 68  ldmia sp!, {fp, lr}
 72  add sp, sp, #4
 76  bx lr
 80  ldr r0, [r10, #+4]
 84  mov sp, fp                  ;; js return
 88  ldmia sp!, {fp, lr}
 92  add sp, sp, #4
 96  bx lr
100  constant pool begin
104  constant
108  constant

Review URL: http://codereview.chromium.org/264067

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3073 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-10-15 12:42:16 +00:00
kmillikin@chromium.org
d664dfaf4b Port the initial fast code generator to x64. For the constant true in
top-level code we generate:

 0  push rbp
 1  movq rbp,rsp
 4  push rsi
 5  push rdi
 6  push [r13+0x8]
10  cmpq rsp,[r13+0x0]
14  jnc 25  (0x7ff2c378ff19)
20  call 0x7ff2c377d260     ;; code: STUB, StackCheck, minor: 0
25  movq r10,0x7ff2e8608199    ;; object: 0x7ff2e8608199 <true>
35  push r10
37  movq rax,[rsp]
41  movq [rbp-0x18],rax
45  pop rax
46  push [rbp-0x18]
50  pop rax
51  movq rsp,rbp      ;; js return
54  pop rbp
55  ret 0x8
58  int3
59  int3
60  int3
61  int3
62  int3
63  int3
64  movq rax,[r13+0x8]
68  movq rsp,rbp      ;; js return
71  pop rbp
72  ret 0x8
75  int3
76  int3
77  int3
78  int3
79  int3
80  int3

Review URL: http://codereview.chromium.org/264066

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3071 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-10-15 11:21:26 +00:00
mikhail.naganov@gmail.com
efb8cee324 Add initial semi-working producers profile.
Turned on with '--log-producers' flag, also needs '--noinline-new' (this is temporarily), '--log-code', '--log-gc'. Not all allocations are traced (I'm investigating.)

Stacks are stored using weak handles. Thus, when an object is collected, its allocation stack is deleted.

Review URL: http://codereview.chromium.org/267077

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3069 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-10-15 07:50:23 +00:00
kmillikin@chromium.org
0bcb8adfbf Fix GYP-based builds of V8.
TBR=iposva@chromium.org

Review URL: http://codereview.chromium.org/275020

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3068 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-10-14 19:47:22 +00:00
kmillikin@chromium.org
f74e723599 Initial infrastructure for fast compilation of top-level code. The
fast code generator is optimized for compilation time and code size.

Currently it is only implemented on IA32.  It is potentially triggered
for any code in the global scope (including code eval'd in the global
scope).  It performs a syntactic check and chooses to compile in fast
mode if the AST contains only supported constructs and matches some
other constraints.

Initially supported constructs are

* ExpressionStatement,
* ReturnStatement,
* VariableProxy (variable references) to parameters and
    stack-allocated locals,
* Assignment with lhs a parameter or stack-allocated local, and
* Literal

This allows compilation of literals at the top level and not much
else.

All intermediate values are allocated to temporaries and the stack is
used for all temporaries.  The extra memory traffic is a known issue.

The code generated for 'true' is:

 0  push ebp
 1  mov ebp,esp
 3  push esi
 4  push edi
 5  push 0xf5cca135             ;; object: 0xf5cca135 <undefined>
10  cmp esp,[0x8277efc]
16  jnc 27  (0xf5cbbb1b)
22  call 0xf5cac960             ;; code: STUB, StackCheck, minor: 0
27  push 0xf5cca161             ;; object: 0xf5cca161 <true>
32  mov eax,[esp]
35  mov [ebp+0xf4],eax
38  pop eax
39  mov eax,[ebp+0xf4]
42  mov esp,ebp                 ;; js return
44  pop ebp
45  ret 0x4
48  mov eax,0xf5cca135          ;; object: 0xf5cca135 <undefined>
53  mov esp,ebp                 ;; js return
55  pop ebp
56  ret 0x4

Review URL: http://codereview.chromium.org/273050

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3067 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-10-14 19:30:50 +00:00
iposva@chromium.org
3f1db0218e - Update Xcode project.
Review URL: http://codereview.chromium.org/268030

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3045 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-10-10 00:38:44 +00:00
sgjesse@chromium.org
1bb3f68904 Fix a file name in the Visual Studio project files.
Review URL: http://codereview.chromium.org/266004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3034 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-10-08 07:10:10 +00:00
kmillikin@chromium.org
2c2554ec3c Remove obsolete support for an experimental multipass compiler.
Review URL: http://codereview.chromium.org/255022

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2996 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-09-30 13:24:24 +00:00
ager@chromium.org
4c256c0691 Land gyp file change for gcc 4.4.
Review URL: http://codereview.chromium.org/230001.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2965 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-09-23 14:32:45 +00:00
erik.corry@gmail.com
9839092874 * Remove non-Open Source code from Douglas Crockford.
* Be more var-correct in JS files.
* Rename some JS variables to reflect the fact that they are instance
  variables on the global intrinsics object.
* Missing optimization in StringCharAt.
Review URL: http://codereview.chromium.org/215052

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2959 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-09-23 12:32:24 +00:00
christian.plesner.hansen@gmail.com
425cd77c40 Changed valgrind script to match changed output format
Review URL: http://codereview.chromium.org/214006


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2915 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-09-17 12:13:08 +00:00
mikhail.naganov@gmail.com
abc0bd46f6 Add initial version of retainers heap profile.
The profile is taken together with constructors profile. In theory, it
should represent a complete heap graph. However, this takes a lot of memory,
so it is reduced to a more compact, but still useful form. Namely:

 - objects are aggregated by their constructors, except for Array and Object
   instances, that are too hetereogeneous;

 - for Arrays and Objects, initially every instance is concerned, but then
   they are grouped together based on their retainer graph paths similarity (e.g.
   if two objects has the same retainer, they are considered equal);

Review URL: http://codereview.chromium.org/200132

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2903 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-09-16 13:41:24 +00:00
mark@chromium.org
1b812fb3b4 Remove explicit include of Chromium's common.gypi from v8.gyp.
Explicit includes of common.gypi are being deprecated.  Chromium will include
the .gypi files that it needs by asking GYP to force-include them into each
.gyp file that it loads.  See http://codereview.chromium.org/206006.
Review URL: http://codereview.chromium.org/193114

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2895 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-09-15 18:03:12 +00:00
sgjesse@chromium.org
f2f69625a0 Add definition of ENABLE_DEBUGGER_SUPPORT to v8 gyp file.
This reflects the change in r2875 (http://code.google.com/p/v8/source/detail?r=2875) where ENABLE_DEBUGGER_SUPPORT is not longer defined automatcally in v8.h.
Review URL: http://codereview.chromium.org/196120

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2883 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-09-15 11:07:26 +00:00
sgjesse@chromium.org
3dd74076d1 Control profiling/debugger support from build script.
The SCons build now has the options profilingsupport and debuggersupport for controlling the setting of the defines ENABLE_LOGGIGN_AND_PROFILING and ENABLE_DEBUGGER_SUPPORT. By default both are set to true.

The changes to the XCode project have not been tested.
Review URL: http://codereview.chromium.org/195061

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2875 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-09-11 12:26:15 +00:00
sgjesse@chromium.org
f5864d08af Use local cpplint.py if it exists.
If there is a local cpplint.py in the tools directory use this instead of any cpplint in the path. This makes it possible to run presubmit checks on Windows by downloading cpplint.py from http://code.google.com/p/google-styleguide/.
Review URL: http://codereview.chromium.org/194039

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2874 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-09-11 12:21:48 +00:00
sgjesse@chromium.org
291c541b62 Add option --build-only to the test runner.
This new option is convenient for cross-compilation as actually running the targets build does not make sense.
Review URL: http://codereview.chromium.org/200077

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2871 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-09-10 12:59:49 +00:00
sgjesse@chromium.org
3546e91bbc Refactor the register to name mapping in the ARM simulator.
Review URL: http://codereview.chromium.org/195024

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2847 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-09-09 07:01:20 +00:00
sgjesse@chromium.org
abbe98b959 Use different output directories when building using the Visual Studion solution.The different Visual Studio solutions for building for the different architures ia32, x64 and arm (simulator) now use separate output directories. Debug/Release for ia32, Debug64/Release64 for x64 and DebugArm/ReleaseArm for arm (simulator).It was required to duplicate all the project files for arm to avoid output from ia32 and arm to get mixed.
Review URL: http://codereview.chromium.org/199006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2835 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-09-07 10:47:31 +00:00
mikhail.naganov@gmail.com
c8d358aa91 Fix issue 434: make OS::LogSharedLibraryAddresses work on x64 Mac.
Also, enable tick processor to process 64-bit profiler logs on Mac.

BUG=http://code.google.com/p/v8/issues/detail?id=434

Review URL: http://codereview.chromium.org/180063

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2810 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-09-02 08:18:27 +00:00
ager@chromium.org
3fe0bc0436 Remove asserts that do not hold when lazily compiling extension code.
Add checks for the use of eval and with in natives files to the js2c
script.

Review URL: http://codereview.chromium.org/175009

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2786 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-31 15:02:54 +00:00
lrn@chromium.org
9230ad29eb ARM native regexps.
Review URL: http://codereview.chromium.org/173567


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2785 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-31 12:40:37 +00:00
christian.plesner.hansen@gmail.com
af6c6a5533 Api inlining. Made some core functionality available in the api and
made inline versions of some hot functions.  Changed api to use
internal Object pointers rather than void pointers.

Speeds up getElementById by ~7%.
Review URL: http://codereview.chromium.org/173348

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2761 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-26 10:33:11 +00:00
whesse@chromium.org
830de0f73f X64: Set target machine for Visual Studio projects to x64.
Review URL: http://codereview.chromium.org/174137

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2742 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-24 09:12:07 +00:00
mark@chromium.org
dfcfacf1f9 Enable -fstrict-aliasing in the GYP build of V8 for the Mac in Release mode.
-fstrict-aliasing is enabled by mainline gcc at -O2 and higher, but in Apple
gcc, it must be enabled explicitly.  This results in a 1.5% improvement in V8
benchmark scores.

This also removes the -fno-exceptions and -fno-rtti settings from v8.gyp for
the Mac, and removes -fno-rtti from v8.gyp for Linux, because these settings
have become part of Chromium's common.gypi, included here, as of r23304 at the
latest.  The settings in v8.gyp have become redundant.
Review URL: http://codereview.chromium.org/174154

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2734 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-20 19:12:59 +00:00
mark@chromium.org
b77e2354cc Don't use -fomit-frame-pointer to build Mac V8. The Chrome crash reporting
system can't currently process stacks produced by gcc -fomit-frame-pointer
properly.  The drawback outweighs the 2% performance improvement.  Once
the crash reporting system is able to handle this optimization, it should be
revisited.
Review URL: http://codereview.chromium.org/173123

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2733 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-20 14:48:52 +00:00
kasperl@chromium.org
43da36aa08 Experimental change to omit frame pointers from V8 on Mac
built through the v8.gyp file. The optimization flags for
Mac and Linux (both gcc-based) builds are now much closer.
Review URL: http://codereview.chromium.org/173117

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2731 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-20 11:37:56 +00:00
kasperl@chromium.org
6d11b96067 Try compiling V8 for Mac with -O3 when using the v8.gyp file.
Review URL: http://codereview.chromium.org/174138

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2730 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-20 11:13:51 +00:00
sgjesse@chromium.org
b9f39307be Create a set of x64 Visual studio project files and corresponding solution.
These files will make it possible to start working with the 64-bit version on Windows.

The GUID's of the x64 project files are the same as their ia32 counterparts, but that does not matter as they will never be used in the same solution.

Added a temporary #error when building 64-bit version on Windows.
Review URL: http://codereview.chromium.org/171111

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2711 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-19 07:32:48 +00:00
mikhail.naganov@gmail.com
d87f83c5f8 Fix issue 427: JS tick processor now works out-of-the-box for Chromium on Windows.
MSVS names '.map' file using only module's name, so both 'a.exe' and 'a.dll' will have 'a.map' file. To distinguish an originating module, we're now checking for image base which is always 00400000 for .exe files, and not 00400000 for .dlls.

Verified that windows-tick-processor can now process logs from Chromium using .map file generated for 'chrome.dll', an that it still works for V8's 'shell.exe'.

Review URL: http://codereview.chromium.org/172044

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2699 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-17 13:45:03 +00:00
mikhail.naganov@gmail.com
910b5ef31a Fix issue 420: accept truncated log files.
http://code.google.com/p/v8/issues/detail?id=420

Review URL: http://codereview.chromium.org/171038

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2695 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-17 09:31:58 +00:00
lrn@chromium.org
166cf2e4ad Fix typo in v8.gyp
Review URL: http://codereview.chromium.org/164555


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2691 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-14 12:39:48 +00:00