yangguo@chromium.org
6d0d6a5695
Recursion limit for one-char string replace and retire String::kMinNonFlatLength.
...
TEST=mjsunit/string-replace-one-char.js
Review URL: https://chromiumcodereview.appspot.com/9231017
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10422 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-17 14:29:17 +00:00
erik.corry@gmail.com
70da367f6b
More spelling changes.
...
Review URL: http://codereview.chromium.org/9231009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10407 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-16 12:38:59 +00:00
erik.corry@gmail.com
48f239e087
Spellling mistakes.
...
Review URL: http://codereview.chromium.org/9123031
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10403 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-16 09:46:21 +00:00
erik.corry@gmail.com
40a433c9e0
Split NumberDictionary into a randomly seeded and an unseeded
...
version. We don't want to randomize the stub cache.
Review URL: http://codereview.chromium.org/9174023
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10402 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-16 09:44:35 +00:00
erik.corry@gmail.com
b3e0761e38
Cosmetic changes ("set up" is a verb, "setup" is a noun).
...
Review URL: http://codereview.chromium.org/9139051
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10399 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-13 13:09:52 +00:00
yangguo@chromium.org
339c9c12e7
Inlining Math.min and Math.max in crankshaft.
...
BUG=v8:1325
TEST=
Review URL: http://codereview.chromium.org/9147034
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10391 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-11 15:43:33 +00:00
ager@chromium.org
d59749f8b4
Support inlining and crankshaft optimization of Math.random.
...
R=jkummerow@chromium.org
BUG=
TEST=
Review URL: http://codereview.chromium.org/9167011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10384 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-11 10:35:37 +00:00
vegorov@chromium.org
74ef753067
Change inlined cache of intanceof stub to use indirection through cell.
...
The stub was directly patching caller's code without issuing write barrier which violated incremental marking invariants.
R=mstarzinger@chromium.org
BUG=http://crbug.com/109448
TEST=cctest/test-heap/InstanceOfStubWriteBarrier
Review URL: http://codereview.chromium.org/9158015
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10380 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-11 09:39:37 +00:00
fschneider@chromium.org
62168ff831
Tiny improvement of register constraints in LClassOfTest instructions.
...
The input register does not need to be made writable. We already
allocate enough temp registers and the input register will always
be preserved.
Review URL: http://codereview.chromium.org/9166007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10379 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-11 08:29:42 +00:00
kmillikin@chromium.org
32d7dd0409
Fix for an ARM register allocation bug.
...
An off-by-one in the register allocator could lead to allocating (and
clobbering) the reserved 0.0 double register. This required a function with
14 or more live double values.
BUG=
TEST=
Review URL: http://codereview.chromium.org/9114038
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10374 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-10 16:59:55 +00:00
fschneider@chromium.org
9e0be36948
Avoid recording unnecessary deoptimization environments in a couple of places.
...
This reduces the number of uses and potentially shortens live ranges.
Review URL: http://codereview.chromium.org/8983018
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10370 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-10 16:06:32 +00:00
erik.corry@gmail.com
6a5afd9403
MIPS: Check that address given to __RecordWrite is correct.
...
ARM: Clean up equivalent functionality on ARM.
This subsumes http://codereview.chromium.org/8561001/
Review URL: http://codereview.chromium.org/9168006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10368 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-10 13:43:44 +00:00
erik.corry@gmail.com
dc9910f4a4
Minor cleanups of numeric seeded hashing patch.
...
Review URL: http://codereview.chromium.org/9155010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10367 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-10 13:24:18 +00:00
erik.corry@gmail.com
6178a8d42c
Add seed to hash of numeric keyed properties. This is a commit of http://codereview.chromium.org/9148006/ for Fedor Indutny.
...
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10366 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-10 12:58:41 +00:00
erik.corry@gmail.com
0aff6c26d3
Fix zero hash handling on ARM.
...
Some cleanup.
Review URL: http://codereview.chromium.org/9169010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10362 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-10 12:01:04 +00:00
danno@chromium.org
03c737625a
Make sure transitioned arrays efficiently call builtin Array functions
...
Loosen the requirement for Map equivalency on several map checks, including checks up the prototype chain, that are not sensitive to ElementsKinds. These selected map checks should also match against FAST_DOUBLE_ELEMENT and FAST_ELEMENT transitions of the original map. This specifically helps all variants of transitioned JSArrays to still efficiently call builtins like push, pop and sort.
BUG=none
TEST=none
Committed: http://code.google.com/p/v8/source/detail?r=10331
Review URL: http://codereview.chromium.org/9015020
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10356 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-09 16:37:47 +00:00
erik.corry@gmail.com
0264008354
Use shift and add instead of mul on ARM for integer hash.
...
Review URL: http://codereview.chromium.org/9153002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10355 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-09 13:33:59 +00:00
erik.corry@gmail.com
4bea3b5c54
Fix test-hashing after recent changes to string hashing.
...
Acriave test-hashing in SCons and buildbot runs.
Small cleanups in root register handling on ARM and MIPS.
Review URL: http://codereview.chromium.org/9110029
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10351 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-06 11:33:20 +00:00
danno@chromium.org
2335545108
Rollback 10331: Make sure transitioned arrays efficiently call builtin Array functions
...
Due to perf regressions
TBR=fschneider@chromium.org
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/8983027
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10332 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-04 17:29:01 +00:00
danno@chromium.org
69366adfb6
Make sure transitioned arrays efficiently call builtin Array functions
...
Loosen the requirement for Map equivalency on several map checks, including checks up the prototype chain, that are not sensitive to ElementsKinds. These selected map checks should also match against FAST_DOUBLE_ELEMENT and FAST_ELEMENT transitions of the original map. This specifically helps all variants of transitioned JSArrays to still efficiently call builtins like push, pop and sort.
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/9015020
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10331 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-04 17:16:04 +00:00
erik.corry@gmail.com
81a0271004
Randomize the seed used for string hashing. This helps guard against
...
CPU-eating DOS attacks against node.js servers. Based on code from
Bert Belder. This version only solves the issue for those that compile
V8 themselves or those that do not use snapshots. A snapshot-based
precompiled V8 will still have predictable string hash codes.
Review URL: http://codereview.chromium.org/9086006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10330 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-04 15:12:15 +00:00
danno@chromium.org
79f18cae93
Undo allocation of half-formed array during elements transition
...
R=vegorov@chromium.org
BUG=none
TEST=no asserts in debug tests with smi-only-array on
Review URL: http://codereview.chromium.org/9015023
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10320 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-03 09:39:34 +00:00
danno@chromium.org
cab07f5523
Add InternalArrayCodeGeneric
...
R=whesse@chromium.org
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/9006051
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10308 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-12-29 12:19:34 +00:00
danno@chromium.org
aa38094bf0
Ensure that InternalArrays remain InternalArrays regardless of how they are constructed.
...
R=whesse@chromium.org
BUG=v8:1878
TEST=test/mjsunit/regress/regress-1878.js
Review URL: http://codereview.chromium.org/9016041
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10306 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-12-27 15:12:12 +00:00
vegorov@chromium.org
3947056c03
Avoid embedding new space objects into code objects in the lithium gap resolver.
...
R=danno@chromium.org
BUG=http://crbug.com/108296
TEST=test/mjsunit/regress/regress-108296.js
Review URL: http://codereview.chromium.org/8960004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10301 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-12-23 10:39:01 +00:00
fschneider@chromium.org
70056762f1
Remove unnecessary environment from LStoreKeyedFastElements.
...
This was a left-over from a time when bounds-check was performed
as part of this instruction.
I also refactored and improved the code for smi-only arrays.
R=vegorov@chromium.org
Review URL: http://codereview.chromium.org/9023006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10300 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-12-22 16:23:47 +00:00
kmillikin@chromium.org
d8acc2dfbe
Clean up handling of global cell stores in the optimizing compiler.
...
Tell the register allocator the value is not overwritten. Never use
temporary registers on ia32, avoid them on x64 and ARM. Restore the
original copyright date on assembler.cc.
R=fschneider@chromium.org
BUG=v8:1870
TEST=
Review URL: http://codereview.chromium.org/8965038
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10280 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-12-20 10:57:12 +00:00
yangguo@chromium.org
626b61f967
Porting r10252 to ARM (handle external strings in generated code when concatenating short strings).
...
BUG=
TEST=
Review URL: http://codereview.chromium.org/8913010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10262 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-12-15 11:04:58 +00:00
mstarzinger@chromium.org
502039a6bd
Fix invalid usage of StoreIC_ArrayLength optimization.
...
This introduces an additional check into the StoreIC_ArrayLength builtin
checking that the array still has fast properties. Redifinitions of the
length property that would cause it's type or attributes to change, will
switch to slow properties, thereby invalidating said optimization.
R=svenpanne@chromium.org
BUG=v8:1756
TEST=test262
Review URL: http://codereview.chromium.org/8895025
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10254 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-12-14 12:46:32 +00:00
yangguo@chromium.org
33a9e76808
Porting r10221 to ARM (avoid bailing out to runtime for short substrings).
...
Review URL: http://codereview.chromium.org/8923002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10250 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-12-14 10:22:33 +00:00
fschneider@chromium.org
626454a61a
[hydrogen] don't bailout assignments to consts
...
If constant variable is allocated in CONTEXT
Patch by Fedor Indutny <fedor.indutny@gmail.com>.
BUG=
TEST=
R=vegorov@chromium.org
Review URL: http://codereview.chromium.org/8857001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10244 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-12-13 17:10:34 +00:00
yangguo@chromium.org
a7f0c72e2d
Fixing bug introduced in r10210 that crashes v8 raytrace benchmark.
...
BUG=
TEST=
Review URL: http://codereview.chromium.org/8889047
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10226 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-12-09 12:11:56 +00:00
keuchel@chromium.org
f1649cf39c
Hydrogen support for context allocated harmony bindings.
...
This CL adds support for loading from and storing to context slots
belonging to harmony let or const bound variables. Checks for the
hole value are performed and the function is deoptimized if they fail.
The full-codegen generated code will take care of properly throwing
a reference error in these cases.
TEST=mjsunit/harmony/block-let-crankshaft.js
Review URL: http://codereview.chromium.org/8820015
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10220 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-12-09 09:50:30 +00:00
ricow@chromium.org
ec66c36fbf
Reland 10216 - Optimize the equality check case of ICCompare stubs.
...
Now with arm and x64 support. Additionally, added default unreachable case to switch statement in CompareIC::TargetState to make win and mac compilers happy.
Reviewer guide:
This is an exact copy of 10216 except:
src/arm/*
src/x64/*
src/ic.cc (added default case to swith in CompareIC::TargetState)
Review URL: http://codereview.chromium.org/8872060
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10219 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-12-09 09:26:14 +00:00
danno@chromium.org
ef54f5690f
Support Smi->Double->HeapObject transitions in constructed Arrays.
...
Also several bugs with Smi/double elements handling and make Ensure* routines more flexible.
BUG=none
TEST=test/mjsunit/array-construct-transition.js
Review URL: http://codereview.chromium.org/8820014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10218 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-12-09 08:50:19 +00:00
yangguo@chromium.org
636e10d065
Port Math.pow inlining to ARM.
...
TEST=math-pow.js
Review URL: http://codereview.chromium.org/8840008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10210 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-12-07 16:55:00 +00:00
fschneider@chromium.org
c1662a199b
Fix a bug with register use in optimized Math.round.
...
We're not allowed to modify the input register and have to
use a temporary instead, otherwise the result of expressions
containing Math.round can be wrong.
BUG=106351
TEST=test/mjsunit/compiler/regress-106351.js
Review URL: http://codereview.chromium.org/8833007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10190 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-12-07 10:13:46 +00:00
erik.corry@gmail.com
f6eab29d73
Remove write barriers for cells on x64, ARM and MIPS.
...
Review URL: http://codereview.chromium.org/8834005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10188 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-12-07 08:49:06 +00:00
fschneider@chromium.org
066822a2cf
Port to x64 and ARM and some refactoring of ia32.
...
Review URL: http://codereview.chromium.org/8111006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10174 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-12-06 12:11:08 +00:00
yangguo@chromium.org
087737cbcd
Fix presubmit.
...
Review URL: http://codereview.chromium.org/8816010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10170 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-12-06 09:37:50 +00:00
yangguo@chromium.org
fe2049fcb8
Fixing fix for MathPowHalf on ARM.
...
Review URL: http://codereview.chromium.org/8817012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10167 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-12-06 09:20:00 +00:00
yangguo@chromium.org
b37ee7bcce
Fixing MathPowHalf on ARM.
...
BUG=v8:397
TEST=regress-397.js
Review URL: http://codereview.chromium.org/8800009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10166 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-12-06 08:28:12 +00:00
danno@chromium.org
25e3d2706d
Optimize Crankshaft array literal initialization from boilerplate.
...
BUG=none
TEST=test/mjsunit/array-literal-transitions.js
Review URL: http://codereview.chromium.org/8747009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10138 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-12-02 12:42:35 +00:00
yangguo@chromium.org
d5fdb76028
Implement Math.pow using FPU instructions and inline it in crankshaft (ia32).
...
Review URL: http://codereview.chromium.org/8749002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10133 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-12-02 08:06:37 +00:00
fschneider@chromium.org
8f7a1f7808
Revert r10118 from bleeding edge.
...
It causes several test failures which I need to investigate.
Review URL: http://codereview.chromium.org/8769008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10132 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-12-01 16:57:54 +00:00
fschneider@chromium.org
4ca20a1d35
Simplify stack check instruction in Crankshaft.
...
So far we had two types of stack checks: one used for function entries
and one used at loop back edges which uses a deferred code object to
avoid spilling of registers in the loop.
After refactoring lazy deoptimization the first stack check can also
use deferred code. This change removes the first type of stack check
instruction in Crankshaft and uses a deferred stack check in all
places.
Review URL: http://codereview.chromium.org/8775002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10118 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-12-01 09:54:05 +00:00
fschneider@chromium.org
9418d56858
Fix bug when generating padding to ensure space for lazy deoptimization.
...
BUG=v8:1846
Review URL: http://codereview.chromium.org/8725030
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10087 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-11-29 12:39:28 +00:00
danno@chromium.org
a7decc7e7e
Port array literal changes on ARM.
...
Includes general array boilerplate copier and re-introduction FAST_ELEMENT optimizations in full-codegen.
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/8472005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10085 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-11-29 12:09:06 +00:00
kmillikin@chromium.org
0a7010458a
Remove the static qualifier from functions in header files.
...
This shaves 416+ KB, just under 1% off the size of the debug d8 executable
on Linux (mostly because the CheckHelper functions for assertions were
getting separate copies for each compilation unit). The difference in
release builds is negligible---a size reduction of 0.1%.
Also, change namespace-level 'static const' variables to remove the static
storage class as it's the default.
R=danno@chromium.org
BUG=
TEST=
Review URL: http://codereview.chromium.org/8680013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10083 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-11-29 10:56:11 +00:00
yangguo@chromium.org
d542a2fb75
Add external strings support to regexp in generated code.
...
TEST=test/mjsunit/string-external-cached.js
Review URL: http://codereview.chromium.org/8680010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10070 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-11-25 14:04:47 +00:00