vegorov@chromium.org [Thu, 27 May 2010 12:30:45 +0000 (12:30 +0000)]
Cardmarking writebarrier.
Reapply r4715 with fixes reviewed in http://codereview.chromium.org/2276002.
Review URL: http://codereview.chromium.org/2255004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4743
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Thu, 27 May 2010 12:23:46 +0000 (12:23 +0000)]
Revert try-commit.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4742
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Thu, 27 May 2010 12:22:23 +0000 (12:22 +0000)]
To be reverted.
Add extra checks for bad stack content in X64 RE-macro-assembler,
to check for crash that is only reproducible with the buildbot and
only in release mode.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4741
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
antonm@chromium.org [Thu, 27 May 2010 11:16:04 +0000 (11:16 +0000)]
Move assertions to not take case to check that it's safe to omit CheckPrototypes in this case.
Review URL: http://codereview.chromium.org/2279005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4740
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Thu, 27 May 2010 10:25:33 +0000 (10:25 +0000)]
X64: Many small tweaks and more usages of "load smi as int32".
Review URL: http://codereview.chromium.org/2266003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4739
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ricow@chromium.org [Thu, 27 May 2010 07:43:43 +0000 (07:43 +0000)]
Add support for getOwnPropertyDescriptor on array indices (fixes issue 599).
This fix adds support for retriving a property descriptor on elements. The
new version supports both fast and slow case elements. In the fast case
we always default configurable, writable, enumerable to true (we don't have
PropertyDetails for fast elements).
A few new tests are added to get-own-property-descriptor.js, I will
add a lot more to object-define-property when I add support for indices in
Object.defineProperty.
Review URL: http://codereview.chromium.org/2278002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4738
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Thu, 27 May 2010 07:31:10 +0000 (07:31 +0000)]
ARM: Default to use unaligned accesses in the simulator
Support building with or without unaligned accesses by using scons flag simulatorunalignedaccesses.
$ scons simulator=arm simulatorunalignedaccesses=off
$ scons simulator=arm simulatorunalignedaccesses=on
If simulatorunalignedaccesses is not specified (or specified as default) the default is to use unaligned accesses.
Review URL: http://codereview.chromium.org/2218003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4737
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Thu, 27 May 2010 06:38:53 +0000 (06:38 +0000)]
Implement OS::ReleaseStore for Solaris
Review URL: http://codereview.chromium.org/2282003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4736
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vitalyr@chromium.org [Wed, 26 May 2010 16:11:30 +0000 (16:11 +0000)]
Fix: make string indexing work with Infinity.
NumberToUint32 that I was trying to use maps -0 to +0 (as desired) but
also maps +/-Infinity to +0, which made +/-Infinity a valid string
index. I fixed it by introducing a new runtime function with the right
semantics.
TEST=LayoutTests/fast/js/char-at.html,mjsunit/string-charat.js
Review URL: http://codereview.chromium.org/2223003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4734
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vitalyr@chromium.org [Wed, 26 May 2010 14:23:19 +0000 (14:23 +0000)]
Custom call IC-s for String.prototype.{charAt,charCodeAt}.
These string methods can be composed from two basic blocks: charCodeAt
and fromCharCode, both of which have fast cases for certain types of
inputs. In this patch these two blocks are refactored to allow
generating the fast cases without having to jump around the slow
cases. In the slow cases since they can now be invoked both from
inline runtime functions and from IC stubs we either have to
save/restore state of the current frame or enter/leave a new internal
frame. This is handled by new RuntimeCallHelper interface. Its
implementation for virtual frame is based on FrameRegisterState class
extracted from DeferredCode class.
Review URL: http://codereview.chromium.org/2087009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4733
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
antonm@chromium.org [Wed, 26 May 2010 14:04:37 +0000 (14:04 +0000)]
Various refactorings in interceptor calling and loading.
1) do not push receiver early---that simplifies tail call preparation
on ia32/x64 and renders special cleanup unnecessary;
2) do not do second map check if interceptor's and cached holder
are the same;
3) do not push/pop receiver if receiver and holder registers are the same
(means that receiver is interceptor's holder);
4) do batch pushes on arm;
5) minor cosmetic improvements.
Review URL: http://codereview.chromium.org/2282001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4732
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Wed, 26 May 2010 12:39:50 +0000 (12:39 +0000)]
Prepare push to trunk. Now working on version 2.2.13.
Review URL: http://codereview.chromium.org/2280001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4729
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Wed, 26 May 2010 11:38:33 +0000 (11:38 +0000)]
Refactor x64 named loads to agree with ia32 implementation. Remove dead code and flag is_global from x64 keyed loads.
Review URL: http://codereview.chromium.org/2121022
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4728
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Wed, 26 May 2010 11:28:14 +0000 (11:28 +0000)]
Update comment in the API to explicitly state that the handle returned
from Context::New is persistent and has to be disposed at some point
in order to allow garbage collecting the context.
Review URL: http://codereview.chromium.org/2220003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4727
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Wed, 26 May 2010 11:19:39 +0000 (11:19 +0000)]
ARM: Add Ldrd/Strd to the macro assembler
The macro assembler now checks for ARMv7 support and generates instructions for Ldrd/Strd accordingly. INstructions ldrd/strd in the assembler requires ARMv7 support enabled. This removes the a check for CAN_USE_ARMV7_INSTRUCTIONS making the ARMv7 support in the simulator fully controled by the --enable-armv7 flag.
Review URL: http://codereview.chromium.org/2226003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4726
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Wed, 26 May 2010 10:02:07 +0000 (10:02 +0000)]
X64: Make smi memory operations work directly on the embedded value.
Adds Operand-relative Operand constructor.
Review URL: http://codereview.chromium.org/2242002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4725
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Wed, 26 May 2010 09:43:54 +0000 (09:43 +0000)]
Make ldrd and strd instructions take two register arguments
Review URL: http://codereview.chromium.org/2122021
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4724
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vegorov@chromium.org [Wed, 26 May 2010 09:24:44 +0000 (09:24 +0000)]
Revert r4715.
TBR=ager@chromium.org
Review URL: http://codereview.chromium.org/2274001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4723
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Wed, 26 May 2010 08:40:11 +0000 (08:40 +0000)]
Refactoring of codegen-arm.cc to use the VirtualFrame API.
This is a commit for Rodolph Perfetta.
http://codereview.chromium.org/2159002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4722
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Wed, 26 May 2010 08:34:07 +0000 (08:34 +0000)]
The way reloc entries are visited by the ObjectVisitor is architecture
dependent, so we push it down to the architecture dependent files.
Currently all architectures visit in almost the same way, but this is
about to change on ARM with movw/movt.
Review URL: http://codereview.chromium.org/2218002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4721
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ricow@chromium.org [Wed, 26 May 2010 08:31:57 +0000 (08:31 +0000)]
Fix issue 720 making Object.defineProperty handle existing writable flags correctly.
The existing version will overwrite the existing writable flag with
false even in the case where no new value is given and the existing
writable flag is true.
The reason for the issue is that there is no check to see if the
provided descriptor actually has a writable attribute. This causes us
to use the default value (false) even in the case where nothing was
provided. In addition, the existing tests makes wrong assumptions (that writable is always set to false if not provided) and has been changed to follow the specification.
Review URL: http://codereview.chromium.org/2271001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4720
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
yurys@chromium.org [Wed, 26 May 2010 08:20:44 +0000 (08:20 +0000)]
Fix v8_base.vcproj: add dtoa.cc and fixed-dtoa.cc to dtoa project.
Review URL: http://codereview.chromium.org/2086024
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4719
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Tue, 25 May 2010 18:50:31 +0000 (18:50 +0000)]
Minor FreeBSD compile fix from Ry:
http://codereview.chromium.org/2098019/show
Should fix http://code.google.com/p/v8/issues/detail?id=716
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4718
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
antonm@chromium.org [Tue, 25 May 2010 14:59:11 +0000 (14:59 +0000)]
Comment the code for loading and calling with interceptor.
Review URL: http://codereview.chromium.org/2124021
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4717
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Tue, 25 May 2010 14:08:17 +0000 (14:08 +0000)]
ARM: Update the full compiler to handle all code
The full compiler is now complete on ARM as well. The syntax checker is still used to determine whether to use it for top level code or not during normal execution. When debugging is enabled all code will be compiled with the full compiler.
This change removes the temporary flag --force-full-compiler and now the flag --always-full-compiler enables the full compiler for all code on all platforms.
This also fixes building on Intel platform without debugger support (ENABLE_DEBUGGER_SUPPORT not defined) and adds full check for the full compiler for lazily compiled code.
Review URL: http://codereview.chromium.org/2163006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4716
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vegorov@chromium.org [Tue, 25 May 2010 13:15:16 +0000 (13:15 +0000)]
Cardmarking writebarrier.
- New сardmarking write 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).
- 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.
Review URL: http://codereview.chromium.org/2144006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4715
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
antonm@chromium.org [Tue, 25 May 2010 12:14:49 +0000 (12:14 +0000)]
Allow to define accessors on objects.
Currently one can only define accessors on object templates. This patch
allows to create accessors on the fly.
These accessors could control access to elements as well. This element
support is somewhat rudimentary and may require future work (for example,
we probably don't want to convert index into a string.)
Review URL: http://codereview.chromium.org/2123012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4714
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ricow@chromium.org [Tue, 25 May 2010 10:35:55 +0000 (10:35 +0000)]
Refactor the samevalue internal method and add tests for this method.
Noticing that the only difference between samevalue and strict equality is on
numbers we can simplify SameValue.
The old version did not return a correct answer if called on two strings since
StringEquals (from runtime.cc) returns an answer that is the negated value
(if treated as a boolean).
Review URL: http://codereview.chromium.org/2136024
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4713
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Tue, 25 May 2010 09:18:08 +0000 (09:18 +0000)]
Fix GC issue
A raw pointer was used while collecting a stack trace. This was not safe as the code collecting the stack trace allocated memory.
Review URL: http://codereview.chromium.org/2147005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4712
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Tue, 25 May 2010 06:43:13 +0000 (06:43 +0000)]
Fix lint issue and compile error.
TBR=erik.corry@gmail.com
Review URL: http://codereview.chromium.org/2157006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4711
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Tue, 25 May 2010 06:38:19 +0000 (06:38 +0000)]
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
ricow@chromium.org [Tue, 25 May 2010 06:35:03 +0000 (06:35 +0000)]
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
ricow@chromium.org [Tue, 25 May 2010 06:25:27 +0000 (06:25 +0000)]
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
mikhail.naganov@gmail.com [Sat, 22 May 2010 06:35:27 +0000 (06:35 +0000)]
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
mikhail.naganov@gmail.com [Sat, 22 May 2010 05:27:19 +0000 (05:27 +0000)]
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
dimich@chromium.org [Fri, 21 May 2010 20:52:19 +0000 (20:52 +0000)]
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
vegorov@chromium.org [Fri, 21 May 2010 17:37:47 +0000 (17:37 +0000)]
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
vegorov@chromium.org [Fri, 21 May 2010 15:52:38 +0000 (15:52 +0000)]
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
mikhail.naganov@gmail.com [Fri, 21 May 2010 13:46:35 +0000 (13:46 +0000)]
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
whesse@chromium.org [Fri, 21 May 2010 12:58:02 +0000 (12:58 +0000)]
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
erik.corry@gmail.com [Fri, 21 May 2010 11:22:03 +0000 (11:22 +0000)]
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
erik.corry@gmail.com [Fri, 21 May 2010 09:23:33 +0000 (09:23 +0000)]
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
lrn@chromium.org [Fri, 21 May 2010 09:08:14 +0000 (09:08 +0000)]
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
ager@chromium.org [Fri, 21 May 2010 09:01:19 +0000 (09:01 +0000)]
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
erik.corry@gmail.com [Thu, 20 May 2010 19:58:05 +0000 (19:58 +0000)]
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
erik.corry@gmail.com [Thu, 20 May 2010 19:30:35 +0000 (19:30 +0000)]
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
yurys@chromium.org [Thu, 20 May 2010 17:15:46 +0000 (17:15 +0000)]
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
whesse@chromium.org [Thu, 20 May 2010 15:09:21 +0000 (15:09 +0000)]
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
whesse@chromium.org [Thu, 20 May 2010 14:56:49 +0000 (14:56 +0000)]
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
erik.corry@gmail.com [Thu, 20 May 2010 14:37:42 +0000 (14:37 +0000)]
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
ager@chromium.org [Thu, 20 May 2010 14:33:02 +0000 (14:33 +0000)]
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
vegorov@chromium.org [Thu, 20 May 2010 14:02:51 +0000 (14:02 +0000)]
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
erik.corry@gmail.com [Thu, 20 May 2010 13:54:31 +0000 (13:54 +0000)]
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
ager@chromium.org [Thu, 20 May 2010 13:50:09 +0000 (13:50 +0000)]
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
vegorov@chromium.org [Thu, 20 May 2010 13:10:38 +0000 (13:10 +0000)]
- 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
vitalyr@chromium.org [Thu, 20 May 2010 09:01:39 +0000 (09:01 +0000)]
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
ager@chromium.org [Thu, 20 May 2010 08:59:36 +0000 (08:59 +0000)]
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
sgjesse@chromium.org [Thu, 20 May 2010 08:03:01 +0000 (08:03 +0000)]
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
sgjesse@chromium.org [Wed, 19 May 2010 10:29:19 +0000 (10:29 +0000)]
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
sgjesse@chromium.org [Wed, 19 May 2010 09:07:33 +0000 (09:07 +0000)]
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
sgjesse@chromium.org [Wed, 19 May 2010 08:36:14 +0000 (08:36 +0000)]
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
lrn@chromium.org [Wed, 19 May 2010 08:16:52 +0000 (08:16 +0000)]
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
erik.corry@gmail.com [Wed, 19 May 2010 07:36:25 +0000 (07:36 +0000)]
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
sgjesse@chromium.org [Wed, 19 May 2010 07:32:32 +0000 (07:32 +0000)]
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
vegorov@chromium.org [Tue, 18 May 2010 16:50:17 +0000 (16:50 +0000)]
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
whesse@chromium.org [Tue, 18 May 2010 15:18:23 +0000 (15:18 +0000)]
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
mikhail.naganov@gmail.com [Tue, 18 May 2010 14:19:33 +0000 (14:19 +0000)]
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
erik.corry@gmail.com [Tue, 18 May 2010 13:39:16 +0000 (13:39 +0000)]
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
whesse@chromium.org [Tue, 18 May 2010 11:19:34 +0000 (11:19 +0000)]
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
fschneider@chromium.org [Tue, 18 May 2010 08:43:08 +0000 (08:43 +0000)]
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
sgjesse@chromium.org [Tue, 18 May 2010 06:59:23 +0000 (06:59 +0000)]
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
sgjesse@chromium.org [Tue, 18 May 2010 06:57:12 +0000 (06:57 +0000)]
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
sgjesse@chromium.org [Tue, 18 May 2010 06:38:42 +0000 (06:38 +0000)]
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
mark@chromium.org [Mon, 17 May 2010 15:41:35 +0000 (15:41 +0000)]
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
mark@chromium.org [Mon, 17 May 2010 15:41:16 +0000 (15:41 +0000)]
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
antonm@chromium.org [Mon, 17 May 2010 14:14:34 +0000 (14:14 +0000)]
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
erik.corry@gmail.com [Mon, 17 May 2010 11:19:10 +0000 (11:19 +0000)]
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
erik.corry@gmail.com [Mon, 17 May 2010 10:51:41 +0000 (10:51 +0000)]
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
vegorov@chromium.org [Mon, 17 May 2010 09:01:39 +0000 (09:01 +0000)]
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
kasperl@chromium.org [Mon, 17 May 2010 05:59:20 +0000 (05:59 +0000)]
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
peter.rybin@gmail.com [Fri, 14 May 2010 19:20:07 +0000 (19:20 +0000)]
Remove tabs
Review URL: http://codereview.chromium.org/2132003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4657
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
peter.rybin@gmail.com [Fri, 14 May 2010 15:24:25 +0000 (15:24 +0000)]
Add listbreakpoints command to protocol
Review URL: http://codereview.chromium.org/2050007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4656
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Fri, 14 May 2010 13:53:26 +0000 (13:53 +0000)]
Modified codegen-arm.cc to no longer use V8_NATIVE_REGEXP, but to use
V8_INTERPRETED_REGEXP (as per Issue 1635001).
BUG=none
TEST=Ran v8 tests, as well as against current Chromium browser.
Review URL: http://codereview.chromium.org/2078005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4655
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vitalyr@chromium.org [Fri, 14 May 2010 10:00:24 +0000 (10:00 +0000)]
Add stack traces to mjsunit tests.
Review URL: http://codereview.chromium.org/2094005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4654
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Thu, 13 May 2010 12:13:27 +0000 (12:13 +0000)]
Simplified replace JS.
Refactored code so global/non-global regexps are handled in separate functions.
Inlined ApplyReplaceFunction at its only call point.
Review URL: http://codereview.chromium.org/1994019
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4653
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
antonm@chromium.org [Wed, 12 May 2010 16:42:51 +0000 (16:42 +0000)]
Remove unused labels.
TBR=sgjesse@chromium.org
Review URL: http://codereview.chromium.org/2033009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4652
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
peter.rybin@gmail.com [Wed, 12 May 2010 14:46:09 +0000 (14:46 +0000)]
Apply "Update mjsunit.status rules for LiveEdit test" again
Review URL: http://codereview.chromium.org/2015017
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4651
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
antonm@chromium.org [Wed, 12 May 2010 12:44:00 +0000 (12:44 +0000)]
Initialize jsfunction caches earlier.
If --nolazy is on, we compile ArraySort which requires these caches
to be set up.
Review URL: http://codereview.chromium.org/2025006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4650
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
antonm@chromium.org [Wed, 12 May 2010 12:22:09 +0000 (12:22 +0000)]
Properly process arrays with overridden prototype in various Array's functions.
Bailout to JS Array builtins if array's prototype is different from
Array.prototype. Otherwise there might be inherited elements coming
from this prototype.
Review URL: http://codereview.chromium.org/2037008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4649
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Wed, 12 May 2010 11:16:35 +0000 (11:16 +0000)]
X64: Made bit-fiddling fallback for double-to-int32 conversion.
Review URL: http://codereview.chromium.org/2048007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4648
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ricow@chromium.org [Wed, 12 May 2010 11:15:55 +0000 (11:15 +0000)]
Fix arm debug build.
Review URL: http://codereview.chromium.org/2054010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4647
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Wed, 12 May 2010 09:20:58 +0000 (09:20 +0000)]
Build fix. Remove unused variable.
TBR=erik.corry@gmail.com
Review URL: http://codereview.chromium.org/2058005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4646
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Wed, 12 May 2010 09:12:23 +0000 (09:12 +0000)]
Refactor the fast-case code for loading local/global variables and
arguments in the presence of eval to avoid code duplication. Almost
the same code was duplicated for loading properties and calling
properties.
Review URL: http://codereview.chromium.org/2053003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4645
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Wed, 12 May 2010 09:00:29 +0000 (09:00 +0000)]
ARM: Fix jumptargets to actually merge virtual frames.
Make use of the new functionality to make ++ and --
non-spilled operations.
Review URL: http://codereview.chromium.org/2041010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4644
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Tue, 11 May 2010 12:38:30 +0000 (12:38 +0000)]
ia32: Helper function for getting an element of a fixed array from object pointer and smi index.
Review URL: http://codereview.chromium.org/1990012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4643
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Tue, 11 May 2010 08:32:13 +0000 (08:32 +0000)]
Optimize loading the global object for a named load on x64.
This is a port of r3911 to x64.
Review URL: http://codereview.chromium.org/1983005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4642
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Tue, 11 May 2010 08:27:56 +0000 (08:27 +0000)]
ARM: Optimize shifts by constant integers, especially
shifts by zero or arithmetic shifts. Updated to also
eliminate ASR followed by LSL as per part two of
http://codereview.chromium.org/1987008/show
Review URL: http://codereview.chromium.org/2054007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4641
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Tue, 11 May 2010 08:07:42 +0000 (08:07 +0000)]
Made format string match arguments for GenericBinaryOpStub::GetName.
Review URL: http://codereview.chromium.org/2014010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4640
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Tue, 11 May 2010 07:29:10 +0000 (07:29 +0000)]
RegExp: Remove use of 16-bit immediates on ia32/x64.
Also check more than one character at a time.
16-bit immediates requires a prefix that changes the length of the instruction.
This causes predecoder mispredictions and subsequent pipeline stalls.
Also removed redundant "atStart" local variable which is equivalent to startIndex == 0.
Review URL: http://codereview.chromium.org/1988009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4639
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Tue, 11 May 2010 07:04:42 +0000 (07:04 +0000)]
Move __C99FEATURES__ define to compile for Solaris
Patch from ry.
http://codereview.chromium.org/1990010/show
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4638
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00