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
peter.rybin@gmail.com [Mon, 10 May 2010 17:57:42 +0000 (17:57 +0000)]
Revert "Update mjsunit.status rules for LiveEdit test"
Review URL: http://codereview.chromium.org/2019007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4637
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Mon, 10 May 2010 17:19:48 +0000 (17:19 +0000)]
Added Heap:: prefix to kFixedArrayMapRootIndex in ARM
codegenerator. The missing scoping breaks the build with some
compilers.
TBR=sgjesse@chromium.org
Review URL: http://codereview.chromium.org/2036007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4636
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
peter.rybin@gmail.com [Mon, 10 May 2010 17:09:38 +0000 (17:09 +0000)]
Update mjsunit.status rules for LiveEdit test
Review URL: http://codereview.chromium.org/1952001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4635
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Mon, 10 May 2010 13:23:42 +0000 (13:23 +0000)]
Support both TOS register combinations in inlined keyed load
When popping key and receiver for an inlined keyed load support either order of r0/r1. The possible swap to have key in r0 and receiver in r1 is postponed to the deferred code calling the keyed load IC.
Review URL: http://codereview.chromium.org/1992012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4634
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Mon, 10 May 2010 12:20:06 +0000 (12:20 +0000)]
Implement fast load and call of arguments in the presence of eval.
Load the arguments object from the context if there are no extensions
objects on the way. Then load the argument with a keyed load ic.
Review URL: http://codereview.chromium.org/2033004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4633
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Mon, 10 May 2010 11:38:58 +0000 (11:38 +0000)]
Make X64 double-to-int32 conversion use the 64-bit version of cvttsd2si.
Use type info to allow ia32 to use the 32-bit versions in some cases.
Remove sse3-specific code from X64 GenericBinaryOpStub.
Review URL: http://codereview.chromium.org/1992011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4632
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Mon, 10 May 2010 11:32:25 +0000 (11:32 +0000)]
First step towards making JumpTarget work on ARM. Instead
of having a list of virtual frame pointers in the jump
target we have one virtual frame, which is the frame that
all have to merge to to branch to that frame. The virtual
frame in the JumpTarget is inside the JumpTarget, rather than
being an allocated object that is pointed to. Unfortunately
this means that the JumpTarget class has to be able to see
the size of a VirtualFrame object to compile, which in turn
lead to a major reorganization of related .h files. The
actual change of functionality in this change is intended
to be minimal (we now assert that the virtual frames match
when using JumpTarget instead of just assuming that they do).
Review URL: http://codereview.chromium.org/1961004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4631
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Mon, 10 May 2010 11:29:07 +0000 (11:29 +0000)]
Add missing constant
Missed this file in last commit (r4629)
TBR=erik.corry@gmail.com
Review URL: http://codereview.chromium.org/2028007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4630
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Mon, 10 May 2010 10:45:18 +0000 (10:45 +0000)]
Fix inlined keyed property load on ARM
The change r4608 accidently disabled the inlined keyed load as the key/receiver registers was mixed up. Also make sure that the registers for the keyed load IC is not clobbered before bailout to deferred code. This adds one instriction to the inlined code path.
Review URL: http://codereview.chromium.org/2018005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4629
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sandholm@chromium.org [Mon, 10 May 2010 09:27:37 +0000 (09:27 +0000)]
One element cache for localtime.
Review URL: http://codereview.chromium.org/2023005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4628
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ricow@chromium.org [Mon, 10 May 2010 08:58:41 +0000 (08:58 +0000)]
Create IS_SPEC_OBJECT macro to simplify javescript code.
v8natives and runtime.js updated to use new macro and simplified when possible.
Review URL: http://codereview.chromium.org/2006008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4626
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Mon, 10 May 2010 07:04:43 +0000 (07:04 +0000)]
Prepare push to trunk. We are now vorking on version 2.2.10.
Review URL: http://codereview.chromium.org/1996011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4625
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Mon, 10 May 2010 06:24:18 +0000 (06:24 +0000)]
Export SetResourceConstraints so it can be used with
visibility=hidden.
Review URL: http://codereview.chromium.org/2050004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4624
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Mon, 10 May 2010 06:24:01 +0000 (06:24 +0000)]
Fixes bug with v8::StackTrace for non-zero script line offsets
Change by jaimeyap see http://codereview.chromium.org/1985004 for details.
Review URL: http://codereview.chromium.org/2049004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4623
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ricow@chromium.org [Sun, 9 May 2010 08:43:59 +0000 (08:43 +0000)]
Fixed issue 619 allowing Object.create to be called with a function.
This change allows Object.create to take a function as input in the
proto argument. The spec says that Type(O) for the proto argument
should be true but our IS_OBJECT does not check for this. I will make a
IS_SPEC_OBJECT in macros.py and refactor v8natives in another CL.
Review URL: http://codereview.chromium.org/2051001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4622
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Sat, 8 May 2010 14:45:32 +0000 (14:45 +0000)]
Fix typo in process sample. The initialization of the map template is
guarded by an IsEmpty check on the request template instead of the map
template.
TBR=ricow@chromium.org
Review URL: http://codereview.chromium.org/2036006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4621
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Sat, 8 May 2010 06:54:36 +0000 (06:54 +0000)]
Add friend declaration.
http://codereview.chromium.org/2024008/show
Committed for evan@chromium.org with apologies for getting
his email address wrong last time.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4620
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Fri, 7 May 2010 20:31:24 +0000 (20:31 +0000)]
Mark a function in assembler-x64-inl.h inline.
Without this annotation, it can be multiply-defined when it is
included in multiple source files. This is a commit for
evanm@chromium.org. See http://codereview.chromium.org/2044004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4619
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Fri, 7 May 2010 20:02:57 +0000 (20:02 +0000)]
Add ldrd and strd instructions to the ARM port. This is a
commit for zhangk@codeaurora.org. See
http://codereview.chromium.org/568029 and
http://codereview.chromium.org/2019003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4618
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Fri, 7 May 2010 14:06:55 +0000 (14:06 +0000)]
Add a flag to the ARM version of new space allocation in generated code
The flag SIZE_IN_WORDS indicate that the requested size is in words and not in bytes, The default is to specify the size in bytes.
Review URL: http://codereview.chromium.org/2047002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4617
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
antonm@chromium.org [Fri, 7 May 2010 12:48:18 +0000 (12:48 +0000)]
Moving more code to lookup an item from the native cache into code generator.
To bypass expensive invocation of JS functions from C++ and omit runtime
call overhead for searching the cache, more elaborate deferred code is generated.
Review URL: http://codereview.chromium.org/1695007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4616
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ricow@chromium.org [Fri, 7 May 2010 12:00:12 +0000 (12:00 +0000)]
Fix presubmit error.
Review URL: http://codereview.chromium.org/1998010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4615
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Fri, 7 May 2010 11:55:24 +0000 (11:55 +0000)]
Remove unused function in ia32 code generator
Review URL: http://codereview.chromium.org/1996006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4614
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ricow@chromium.org [Fri, 7 May 2010 11:53:20 +0000 (11:53 +0000)]
Correct issue 696 with Date.parse returning a value when called on a non date string.
The error was introduced in revision 4557 where support was added for
ES5 date time format strings. Because there was no check for a valid
year a random string starting with a non-digit character would be
parsed.
This change disallows ES5 formatted dates where there is no date
fraction (i.e., with only a timestamp). Since none of the other
browsers support Date.parse on only timestamps I have disabled this
totally instead of just correcting the parser.
Review URL: http://codereview.chromium.org/2017005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4613
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Fri, 7 May 2010 11:25:29 +0000 (11:25 +0000)]
Synchronizing Comparison codegen between X64 and ia32.
Review URL: http://codereview.chromium.org/2010007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4612
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Fri, 7 May 2010 11:24:04 +0000 (11:24 +0000)]
Fix virtual frame height on ARM
Bug introduced in r4608 where Dup2 increses the frame height with 4 instead of 2 when in a spilled scope.
Also removed a bogus ASSERT and used Push from macro assemler for double pushes.
TBR=erik.corry@gmail.com
Review URL: http://codereview.chromium.org/2005005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4611
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
antonm@chromium.org [Fri, 7 May 2010 10:56:22 +0000 (10:56 +0000)]
Turn {mov,add}q into {mov,add}l.
All the cases fixed are safe as registers hold 32-bit value, but that looks
safer to operate on proper sizes.
Review URL: http://codereview.chromium.org/2017002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4610
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Fri, 7 May 2010 10:25:11 +0000 (10:25 +0000)]
Implement fast calls of functions in the presence of eval (if the eval
calls do not introduce new bindings).
The infrastructure is already in place for fast loads from context
slots in the presence of eval. This change simply uses that
infrastructure for calls as well as loads.
Review URL: http://codereview.chromium.org/2027002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4609
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Fri, 7 May 2010 10:16:11 +0000 (10:16 +0000)]
Pass key and receiver in registers for keyed load IC on ARM
The calling convention for keyed load IC's on ARM now passes the key and receiver in registers r0 and r1.
The code path in the ARM full compiler for handling keyed property load now has the same structure as for ia32 where the keyed load IC is also called with key end receiver in registers.
This change have been tested with an exhaustive combinations of the flags
--special-command="@ --nofull-compiler"
--special-command="@ --always-full-compiler"
--special-command="@ --noenable-vfp3"
to the test runner.
Review URL: http://codereview.chromium.org/2024002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4608
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vitalyr@chromium.org [Thu, 6 May 2010 13:35:30 +0000 (13:35 +0000)]
Remove unused declarations.
Review URL: http://codereview.chromium.org/2040001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4607
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vitalyr@chromium.org [Thu, 6 May 2010 13:21:53 +0000 (13:21 +0000)]
Refactored custom call IC generators:
* All generators are listed in a single place.
* Generators are installed as a separate pass in the bootstrapper.
* Replaced pointers to generator functions with integer ids.
Review URL: http://codereview.chromium.org/1981002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4606
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
serya@chromium.org [Thu, 6 May 2010 12:57:11 +0000 (12:57 +0000)]
Fixing a performance bug introduced in r4581.
Review URL: http://codereview.chromium.org/1910005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4605
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Thu, 6 May 2010 12:49:12 +0000 (12:49 +0000)]
Allow unaligned memory accesses on ARM targets that support it.
The build process must add -DCAN_USE_UNALIGNED_ACCESSES=1 to the
C++ flags to activate the support. This is a commit for
Subrato of CodeAurora. See http://codereview.chromium.org/1731013
Small edits by Erik Corry to activate unaligned accesses by
default on the simulator and testing Android builds.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4604
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Thu, 6 May 2010 11:59:10 +0000 (11:59 +0000)]
Allocate the right number of fast context slots on X64 and ARM. Port from ia32.
This is ported from change 3505 on ia32.
Review URL: http://codereview.chromium.org/1992003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4603
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ricow@chromium.org [Thu, 6 May 2010 11:05:50 +0000 (11:05 +0000)]
Use Int32Value() instead of ToNumber()->Value() in test-api.cc.
This problem was introduced in revision 4597.
ToNumber()->Value() used as an int will throw a compile waring on
windows since it returns a double.
Review URL: http://codereview.chromium.org/2037001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4602
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
serya@chromium.org [Thu, 6 May 2010 10:50:22 +0000 (10:50 +0000)]
Inlined load of string.length and array.length.
http://compute1.aar:9013/golem/r4583-v8-serya-length-inlined-vs-4583-v8.html
Review URL: http://codereview.chromium.org/1917006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4601
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Thu, 6 May 2010 10:31:34 +0000 (10:31 +0000)]
X64: Skip smi-test on GenericBinaryOpStub if static type test says we have smis.
Review URL: http://codereview.chromium.org/2032001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4600
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Thu, 6 May 2010 09:35:18 +0000 (09:35 +0000)]
Add a single-element global positive and negative cache to
the implementation of instanceof.
Review URL: http://codereview.chromium.org/1765012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4599
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Thu, 6 May 2010 08:15:15 +0000 (08:15 +0000)]
Correct bug with left shift on X64 platform from change 4571 (code.google.com/p/v8/source/detail?r=4571). Speed up left shift with a constant left hand side on X64 platform. Add unit test for this bug. Remove unused failure target argument from MacroAssembler::SmiShiftLeft and MacroAssembler::SmiShiftLeftConstant.
Review URL: http://codereview.chromium.org/1934004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4598
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Thu, 6 May 2010 07:32:44 +0000 (07:32 +0000)]
Adds C++ API for retrieving a stack trace without running JavaScript
This API is extensible, and parameterized with flags so that callers can specify what subset of information they want to capture for each stack frame.
Patch by jaimeyap, see http://codereview.chromium.org/1694011 for details.
Review URL: http://codereview.chromium.org/2028001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4597
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
floitschV8@gmail.com [Wed, 5 May 2010 13:51:27 +0000 (13:51 +0000)]
Dtoa for fixed notation.
Review URL: http://codereview.chromium.org/1956005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4596
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
antonm@chromium.org [Wed, 5 May 2010 12:44:06 +0000 (12:44 +0000)]
Fix Mac OS build.
Remove a typo.
TBR=mnaganov@chromium.org
Review URL: http://codereview.chromium.org/1944003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4595
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
antonm@chromium.org [Wed, 5 May 2010 12:39:21 +0000 (12:39 +0000)]
Fix windows build.
SmartPointer doesn't have -> operator and conversion to bool.
This a quick fix, I'll try to add -> operator with a separate CL.
TBR=mnaganov@chromium.org
Review URL: http://codereview.chromium.org/1969005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4594
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
antonm@chromium.org [Wed, 5 May 2010 12:25:58 +0000 (12:25 +0000)]
Turn some usages of NewArray with DeleteArray in the same scope into ScopedVector or SmartPointer.
That makes it easier to maintain the code---one should care less
about releasing the memory as smart pointers would take care of
this.
Switch to ScopedVector instead Vector for the same semantics in
src/builtins.cc
Review URL: http://codereview.chromium.org/1737023
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4593
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
floitschV8@gmail.com [Wed, 5 May 2010 10:33:27 +0000 (10:33 +0000)]
Revert r4591
Review URL: http://codereview.chromium.org/1968003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4592
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
floitschV8@gmail.com [Wed, 5 May 2010 09:29:18 +0000 (09:29 +0000)]
Provide (non Gay) dtoa for fixed notation.
Review URL: http://codereview.chromium.org/1865001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4591
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Wed, 5 May 2010 09:11:21 +0000 (09:11 +0000)]
Prefer r0 as TOS when performing virtual frame dup on ARM
Review URL: http://codereview.chromium.org/1956004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4590
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Wed, 5 May 2010 08:56:16 +0000 (08:56 +0000)]
Make sure that type info of results is correctly recorded when results are moved to registers by generated code.
Review URL: http://codereview.chromium.org/1905002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4589
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Wed, 5 May 2010 07:23:26 +0000 (07:23 +0000)]
Prepare push to trunk. Now working on version 2.2.9.
Review URL: http://codereview.chromium.org/1914006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4587
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Wed, 5 May 2010 06:57:41 +0000 (06:57 +0000)]
Add some comments to the ia32 code generator
Review URL: http://codereview.chromium.org/1918002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4586
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Wed, 5 May 2010 06:50:15 +0000 (06:50 +0000)]
Handle loading the property name for load IC in the virtual frame
Review URL: http://codereview.chromium.org/1946001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4585
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Wed, 5 May 2010 06:40:14 +0000 (06:40 +0000)]
Pass key in register for keyed load IC
The calling convention for keyed load IC is changed to have the key passed both in a register (r0) and on the stack.
Next steps will be first to remove the key from the stack and then pass the receiver in a register (r1).
Review URL: http://codereview.chromium.org/1937003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4584
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
antonm@chromium.org [Tue, 4 May 2010 17:24:41 +0000 (17:24 +0000)]
Throw an exception when wrong arguments are passed into SwapElements.
This runtime function should operate on elements and thus 'receiver'
must be JSObject and indices should be numbers.
TBR=lrm@chromium.org,ricow@chromium.org
Review URL: http://codereview.chromium.org/1960001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4583
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
antonm@chromium.org [Tue, 4 May 2010 16:42:11 +0000 (16:42 +0000)]
Clean JS function results cache on each major GC.
We don't want to retain cached objects for too long.
Review URL: http://codereview.chromium.org/1780001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4582
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
serya@chromium.org [Tue, 4 May 2010 14:49:50 +0000 (14:49 +0000)]
Changing string length field type from int to SMI. It will make it be a regular field. Code generated in EmitNamedLoad could be patched for faster access to string.length.
Review URL: http://codereview.chromium.org/1706013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4581
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mikhail.naganov@gmail.com [Tue, 4 May 2010 14:30:22 +0000 (14:30 +0000)]
Do a GC pass prior to collecting a heap profile.
It seems that doing an extra GC pass results in less cluttered heap snapshots.
Review URL: http://codereview.chromium.org/1949001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4580
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Tue, 4 May 2010 13:23:58 +0000 (13:23 +0000)]
X64: Faster push/pop implementation.
Also snuck in an intended optimization for fast api call preparation and a few indentation fixes.
Review URL: http://codereview.chromium.org/1689010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4579
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
peter.rybin@gmail.com [Tue, 4 May 2010 13:07:36 +0000 (13:07 +0000)]
Make LiveEdit natives fuzzy
Review URL: http://codereview.chromium.org/1687022
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4578
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Tue, 4 May 2010 12:05:55 +0000 (12:05 +0000)]
X64: Minor change of control flow in inline transcendental cache.
Move NaN-handling away from main code path.
Review URL: http://codereview.chromium.org/1851002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4577
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Tue, 4 May 2010 11:17:45 +0000 (11:17 +0000)]
Improve static type information in (constant SHL smi) computation.
Review URL: http://codereview.chromium.org/1910002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4576
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Tue, 4 May 2010 11:06:59 +0000 (11:06 +0000)]
Port inline swapping of elements for the sort function in array.js
from ia32 to arm.
Original change: http://codereview.chromium.org/1709008
Review URL: http://codereview.chromium.org/1944001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4575
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Tue, 4 May 2010 09:33:12 +0000 (09:33 +0000)]
Refactor assignment in the ARM code generator
This is mainly a port of r3899. It also adds handling of initilization blocks in ARM which had no special handling before.
The "calling conventions" used for
EmitNamedLoad
EmitNamedStore
EmitKeyedLoad
EmitKeyedStore
are somewhat mixed, but will become more aligned as the use of register allication and passing of argument in registers to IC's is extended.
Review URL: http://codereview.chromium.org/1846002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4574
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
podivilov@chromium.org [Tue, 4 May 2010 09:32:07 +0000 (09:32 +0000)]
Port string keyed load IC improvements (r4444) to ARM.
Review URL: http://codereview.chromium.org/1769014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4573
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sandholm@chromium.org [Tue, 4 May 2010 08:41:26 +0000 (08:41 +0000)]
Reverting 2635
Review URL: http://codereview.chromium.org/1940001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4572
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Tue, 4 May 2010 08:10:05 +0000 (08:10 +0000)]
Add inlined code for (constant SHL smi), ported from ia32 to x64. Improve type information on ia32 version of code.
Review URL: http://codereview.chromium.org/1869001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4571
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Tue, 4 May 2010 07:28:29 +0000 (07:28 +0000)]
Make bleeding edge compile (since r4561 made Handle ctor explicit). codereview.chromium.org/1936001. Committed for Dmitry Titov of Google
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4570
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Mon, 3 May 2010 18:18:25 +0000 (18:18 +0000)]
Port inlined version of swap primitive for sorting from ia32 to x64.
Original code review for ia32 version: http://codereview.chromium.org/1709008
Review URL: http://codereview.chromium.org/1858002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4569
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Mon, 3 May 2010 10:53:03 +0000 (10:53 +0000)]
Change calling convention of BinaryOperation code generation functions on x64 platform to match ia32 platform.
Review URL: http://codereview.chromium.org/1844002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4568
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00