Commit Graph

3779 Commits

Author SHA1 Message Date
ager@chromium.org
ab6055d85d Landing patch by tonyg@chromium.org:
Changing ScriptData API to serialize its internal representation to a
const char* array.

This decouples the API from the internal representation and avoids the need for
callers to serialize themselves.

As a side-effect, ScriptData::New() no longer assumes ownership of its input.
This shouldn't matter as typical usage patterns for the old API would have
required a copy prior to calling ScriptData::New().

Review URL: http://codereview.chromium.org/2118010/show


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4710 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-25 06:38:19 +00:00
ricow@chromium.org
0328e0cf3a Fix presubmit error (a tab in v8natives.js)
Review URL: http://codereview.chromium.org/2132025

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4709 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-25 06:35:03 +00:00
ricow@chromium.org
fb58bc06c6 Fixes issue 712 causing non-configurable accessors to be overwritable by using
Object.defineProperty with empty property descriptor.

The issue is fixed by implementing step 5 and 6 from DefineOwnProperty in the
specification (ES5 8.12.9).

This also fixes a bug in SameValue when used on boolean values (it
would priorly return a number - not a boolean).

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4708 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-25 06:25:27 +00:00
mikhail.naganov@gmail.com
6caca4e885 Fix tests on ARM simulator.
TBR=sgjesse@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4707 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-22 06:35:27 +00:00
mikhail.naganov@gmail.com
decd0fed78 CPU profiler: make code events handling scalable.
I changed the implementation of a queue between the VM and processor
thread to be unbounded and lock-free, using Herb Sutter's example from
DDJ article: http://www.ddj.com/high-performance-computing/210604448
This had brought back profiling overhead to a minimum for the page
from Chromium's issue 16184.

BUG=714

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4706 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-22 05:27:19 +00:00
dimich@chromium.org
2c48283185 Include check for execution termination into bailout check.
This prevents re-entry into JS during stack unwinding caused by TerminateExecution().

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4705 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-21 20:52:19 +00:00
vegorov@chromium.org
2241d2af45 Reverting r4703.
TBR=ager@chromium.org
Review URL: http://codereview.chromium.org/2073018

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4704 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-21 17:37:47 +00:00
vegorov@chromium.org
8879691793 Cardmarking writebarrier.
Reapplication of r4685 (reviewed http://codereview.chromium.org/2101002) with minor modifications:

- Fix compilation problems on Win64.
- Improve heap verification pass: search for garbage pointers to new space not only in dirty regions but in all regions.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4703 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-21 15:52:38 +00:00
mikhail.naganov@gmail.com
80838928f4 Fix teardown order.
As TokenEnumerator cleans up global handles posessed, it's owner --
CpuProfiler must be shut down prior to global handles.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4702 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-21 13:46:35 +00:00
whesse@chromium.org
d2c390b03c Revert change 3849. On ia32, LoadFromSlot again returns its result on the top of the expression stack, not as a Result return value.
Review URL: http://codereview.chromium.org/2121014

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4700 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-21 12:58:02 +00:00
erik.corry@gmail.com
134d1feec0 Prepare push to trunk. Now working on version 2.2.12.
Review URL: http://codereview.chromium.org/2080018

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4699 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-21 11:22:03 +00:00
erik.corry@gmail.com
d0241c98c5 Remove the fledgling Thumb2 support since we are concentrating
on other ways to make ARM code more compact.
Review URL: http://codereview.chromium.org/2080017

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4698 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-21 09:23:33 +00:00
lrn@chromium.org
74c01fdc50 X64: Added inline conversion of double to smi for LikelySmiBinaryOp shifts.
Review URL: http://codereview.chromium.org/2078028

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4697 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-21 09:08:14 +00:00
ager@chromium.org
b3f545f2e5 Guard VMState trakcing with ENABLE_VMSTATE_TRACKING instead of
ENABLE_HEAP_PROTECTION.

TBR=mnaganov@chromium.org
Review URL: http://codereview.chromium.org/2098017

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4696 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-21 09:01:19 +00:00
erik.corry@gmail.com
43d56e95c3 Cosmetic fix to avoid operator precedence warning on newer gcc.
Review URL: http://codereview.chromium.org/2088011

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4695 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-20 19:58:05 +00:00
erik.corry@gmail.com
3752fdbbfa ARM cleanup: Remove lea, swap, swapb instrutions. This is a commit
of http://codereview.chromium.org/2064012/show for Rodolph Perfetta.


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4694 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-20 19:30:35 +00:00
yurys@chromium.org
f6a2ccf6b4 Provide debug event listener with access to the debuggee context. Also introduce new event listener setter that allows to set a callback that accepts single parameter encapsulating all debug event details so that additional information can later be passed to the listener without breaking compatibility with existing clients.
Review URL: http://codereview.chromium.org/2108024

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4693 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-20 17:15:46 +00:00
whesse@chromium.org
ac60f498d2 Change keyed store IC interface on x64 to take value, key, and receiver in registers rather than on the stack.
Review URL: http://codereview.chromium.org/2111011

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4692 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-20 15:09:21 +00:00
whesse@chromium.org
c5859a09dd Fix formatting in last change, file x64/full-codegen-x64.cc.
Review URL: http://codereview.chromium.org/2081014

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4691 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-20 14:56:49 +00:00
erik.corry@gmail.com
e45be79319 Add parentheses to clarify operator precedence.
Review URL: http://codereview.chromium.org/2095019

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4690 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-20 14:37:42 +00:00
ager@chromium.org
1d5eb6517f Reapply r4686: Complete version of full codegen for x64.
Already reviewed at: http://codereview.chromium.org/2078022/show

TBR=vegorov@chromium.org
Review URL: http://codereview.chromium.org/2137008

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4689 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-20 14:33:02 +00:00
vegorov@chromium.org
955828e437 Reverting r4685, r4686, r4687
TBR=ager@chromium.org
Review URL: http://codereview.chromium.org/2071020

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4688 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-20 14:02:51 +00:00
erik.corry@gmail.com
52cef3f0e1 Orthogonalize the byte codes used for the snapshot so that
the issue of how the pointee is found and how the pointer
is encoded are separated out.  This will make it simpler to
support various pointers from and to code in the future.
Review URL: http://codereview.chromium.org/2069013

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4687 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-20 13:54:31 +00:00
ager@chromium.org
355d3166e1 Complete the full codegenerator on x64.
Review URL: http://codereview.chromium.org/2078022

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4686 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-20 13:50:09 +00:00
vegorov@chromium.org
b38a0a719a - Changes to enable oldspaces iteration without maps decoding:
-- layout change for FixedArrays: length is stored as a smis (initial patch by Kevin Millikin)
-- layout change for SharedFunctionInfo: integer fields are stored as smi on arm, ia32 and rearranged on x64.
-- layout change for String: meaning of LSB bit is fliped (1 now means hash not computed); on x64 padding is added.
-- layout of maps is _not_ changed. Map space is currently iterated in a special way.
- Cardmarking write barrier. New barrier handles large objects and normal objects in a similar fashion (no more additional space for pointer tracking is required, no conditional branches in WB code).

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4685 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-20 13:10:38 +00:00
vitalyr@chromium.org
91cbd98dfc Try flattening strings before comparing for equality.
Review URL: http://codereview.chromium.org/2076010

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4684 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-20 09:01:39 +00:00
ager@chromium.org
af70ad5fdc Fix buffer overflow in liveedit.
Make sure that there is always room for RelocInfoWriter::kMaxSize
bytes in the buffer before writing to it. We only ensured space for 8
bytes, but relocation information can be up to 16 bytes in x64.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4683 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-20 08:59:36 +00:00
sgjesse@chromium.org
393a26b17e Mark Mozilla test as possible timeout
The Mozilla test ecma/Date/15.9.5.10-2 have been timing out a couple of times on the ARM simulator in debug mode.
Review URL: http://codereview.chromium.org/2070018

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4682 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-20 08:03:01 +00:00
sgjesse@chromium.org
e90d8314fa ARM: Don't require the receiver on the stack for load IC
Previously the receier was passed in both r0 and on the stack for a load IC. With this change the receiver is in r0 only.
Review URL: http://codereview.chromium.org/2119007

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4681 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-19 10:29:19 +00:00
sgjesse@chromium.org
209711201d IA32: Use the full compiler when debugging
The full compiler will now be used for all code compiler when debugging is active. As the code generated by the full compiler is much simpler it will be easier to make debugging work better when using that code.

To ensure that all code debugged is from the full compiler all functions will have to be recompiled when starting debugging. Initialing debugging already turns off the code cache.
Review URL: http://codereview.chromium.org/2120009

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4680 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-19 09:07:33 +00:00
sgjesse@chromium.org
df49b2915e ARM: Fix porting bug
The port to ARM of a tail call wrongly kept the scheme of pushing below the return address.

TBR=antonm@chromium.org
Review URL: http://codereview.chromium.org/2091013

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4679 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-19 08:36:14 +00:00
lrn@chromium.org
7410865adb X64: Make all arithmetic ops, and a few other, try to avoid rsp and r12 as base register.
Using rsp or r12 as the "base" register of the ModR/M byte forces a SIB byte,
even with no index register. Some operations can avoid this by using another,
equivalent, encoding that swaps the meaning of the base and register parts.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4678 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-19 08:16:52 +00:00
erik.corry@gmail.com
c5b8a2c9ec Fixes to Solaris build. signbit and StackWalker. This is a commit for
ry (coldredlemur@gmail.com).  See http://codereview.chromium.org/2092007


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4677 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-19 07:36:25 +00:00
sgjesse@chromium.org
19d98493fc Add complete implementation of full compiler for the ia32 architecture
This makes the full compiler handle all constructs on ia32. However the syntax checker for the full compiler is still the same so for both normal operation and with the flag --always-full-compiler the coverage of the full compiler will be the same.

This is on preparation for improving the debugger break point experience where the plan is to only use code from full code generator when debugging JavaScript.

Runs all tests on all three platforms in release and debug mode. The tests also run with both the following flags to the test runner

  --special-command="@ --nofull-compiler"
  --special-command="@ --always-full-compiler"

The changes to the x64 and ARM architectures are mainly structural due to the change to EmitVariableAssignment to handle initialization of const variables.
Review URL: http://codereview.chromium.org/1989012

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4676 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-19 07:32:32 +00:00
vegorov@chromium.org
8fbac01b2c Improved GC statistics.
Collect cumulative (--print-cumulative-gc-stat) and per collection (--trace-gc-nvp) GC statistics and output it in a machine-readable name=value format.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4675 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-18 16:50:17 +00:00
whesse@chromium.org
eb1317756f Fix x64 compilation error in r4673.
Review URL: http://codereview.chromium.org/2129010

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4674 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-18 15:18:23 +00:00
mikhail.naganov@gmail.com
3d7ce8ac19 CPU profiler: add secure profiles by filtering out functions using security tokens.
As several pages can run in a single V8 instance, it is possible to
have functions from different security contexts intermixed in a single
CPU profile.  To avoid exposing function names from one page to
another, filtering is introduced.

The basic idea is that instead of capturing return addresses from
stack, we're now capturing JSFunction addresses (as we anyway work
only with JS stack frames.)  Each JSFunction can reach out for
context's security token. When providing a profile to a page, the
profile is filtered using the security token of caller page. Any
functions with different security tokens are filtered out (yes, we
only do fast path check for now) and their ticks are attributed to
their parents.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4673 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-18 14:19:33 +00:00
erik.corry@gmail.com
73b2fc29b7 Remove unused relocation mode.
Review URL: http://codereview.chromium.org/2136012

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4672 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-18 13:39:16 +00:00
whesse@chromium.org
cd6afbc617 Spill arguments for a function call from the virtual frame as they are produced.
Review URL: http://codereview.chromium.org/2103007

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4671 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-18 11:19:34 +00:00
fschneider@chromium.org
b46757a4e1 Eliminate smi check using type information in x64 count operation.
Also simplify the assertion code for type information in the macro assembler.

Review URL: http://codereview.chromium.org/2130003/show



git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4670 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-18 08:43:08 +00:00
sgjesse@chromium.org
2b1e19fe45 Fix presubmit error.
TBR=ager@chromium.org
Review URL: http://codereview.chromium.org/2117010

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4669 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-18 06:59:23 +00:00
sgjesse@chromium.org
d25c36deee ARM: Pass arguments to keyed store IC in registers
The calling convention for keyed store IC on ARM is changed to receive the arguments value, key and receiver in registers r0, r1 and r2 instead of on the stack. When calling keyed store IC with a virtual frame the arguments are passed through the virtual frame and consumed by the call.

Changed the register usage in the IC code to postpone spilling the registers holding value, key and receiver to the stack until making  a call into the runtime system.

Runs all the tests with: 

  --special-command="@ --nofull-compiler"
  --special-command="@ --always-full-compiler"
  --special-command="@ --noenable-vfp3"
Review URL: http://codereview.chromium.org/2116003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4668 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-18 06:57:12 +00:00
sgjesse@chromium.org
02ca5fd8b2 ARM: Fix generating two ldr instructions in place of ldrd.
When ldrd is not available two ldr instructions are generated. This fixes these in the case where the register used in the memory operand is the same as the first register in the register pair receiving the values.

All tests now run on ARM with the flag --special-command="@ --noenable-vfp3". Running without VFP3 support in the simulator causes more ldrd instructions to be used, and the default build configuration does not utilize ldrd, but generated tow ldr instructions.
Review URL: http://codereview.chromium.org/2078013

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4667 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-18 06:38:42 +00:00
mark@chromium.org
e9b5d7855b Allow build-time selection between ia32 and x86_64 in the GYP/Xcode Mac
Chromium build.

v8.gyp no longer sets any V8_TARGET_ARCH_* macro on the Mac. Instead, the
proper V8_TARGET_ARCH_* macro will be set by src/globals.h in the same way as
the V8_HOST_ARCH_* macro when it detects that no target macro is currently
defined. The Mac build will attempt to compile all ia32 and x86_64 .cc files.
#ifdef guards in each of these target-specific source files prevent their
compilation when the associated target is not selected. For completeness,
these #ifdef guards are also provided for the arm and mips .cc files.

BUG=706
TEST=x86_64 Mac GYP/Xcode-based Chromium build (still depends on other changes)
Review URL: http://codereview.chromium.org/2133003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4666 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-17 15:41:35 +00:00
mark@chromium.org
6046ae7bcd Fix dtoa for the LP64 model on 64-bit systems, where long is 64 bits.
dtoa.c:69 states: #define Long int on machines with 32-bit ints and 64-bit
longs. This change was made in Chromium's version of dtoa in r21901. I don't
know why this apparently hasn't caused a problem in v8 until now. I was
unable to build a snapshot on x86_64 Mac without this change.

BUG=706
TEST=x86_64 Mac GYP/Xcode-based Chromium build (still depends on other changes)


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4665 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-17 15:41:16 +00:00
antonm@chromium.org
c7b2af37ba Use direct loop when filling small arrays.
r3995 (http://code.google.com/p/v8/source/detail?r=3995) introduce performance
regression for the case when arrat size is small (think new Array(4)).

It turns out that in those cases rep stos is slower than plain loop (apprently
due to ecx increment, but I didn't check this hypothesis.)  The next thing
to try could be direct jump into right place of long sequence of stos'es.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4664 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-17 14:14:34 +00:00
erik.corry@gmail.com
a31c578f25 Push/pop is just one peephole optimization. Puth them all
under one flag.  Also other cosmetic changes to peephole
optimization.
Review URL: http://codereview.chromium.org/2104006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4663 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-17 11:19:10 +00:00
erik.corry@gmail.com
afe8c296a4 Better peephole optimization for ARM. This is a commit of
http://codereview.chromium.org/2004006 for Subrato De.


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4662 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-17 10:51:41 +00:00
vegorov@chromium.org
5e91f6fa2f Prepare push to trunk. We are now vorking on version 2.2.11.
Review URL: http://codereview.chromium.org/2108006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4659 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-17 09:01:39 +00:00
kasperl@chromium.org
c590fb94d6 Incorporate feedback from issue 679 and issue 690 into the
benchmark suite thus forming a new candidate benchmark revision:

  * Remove dead code from RayTrace benchmark.
  * Avoid repeated number-to-string conversion in Splay.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4658 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-17 05:59:20 +00:00