Commit Graph

15122 Commits

Author SHA1 Message Date
svenpanne@chromium.org
dbce27047e Fixed and improved code for integral division. Fixed and extended tests.
Arithmetic right shifting is *not* division in two's complement
representation, only in one's complement. So we convert to one's
complement, shift, and go back to two's complement. By permutating the
last steps, one can get efficient branch-free code. This insight comes
from the paleozoic era of computer science, see the paper from 1976:

   Guy Lewis Steele Jr.: "Arithmetic Shifting Considered Harmful"
   ftp://publications.ai.mit.edu/ai-publications/pdf/AIM-378.pdf

This results in better and more correct code than our previous
"neg/shift/neg" dance.

LOG=y
BUG=v8:3151
R=bmeurer@chromium.org

Review URL: https://codereview.chromium.org/166793002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19434 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-18 10:45:27 +00:00
yangguo@chromium.org
9ffe004ae4 Harmony: implement Math.fround.
R=jarin@chromium.org
BUG=v8:2938
LOG=N

Review URL: https://codereview.chromium.org/169513002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19433 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-18 10:43:06 +00:00
bmeurer@chromium.org
0ec3dc296a Revert "Handlify DescriptorArray::Merge()."
This reverts commit r19410.

TBR=verwaest@chromium.org

Review URL: https://codereview.chromium.org/169113005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19432 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-18 10:38:25 +00:00
verwaest@chromium.org
80fd188657 Remove unnecessary checks in CompileStoreInterceptor on a64.
BUG=
R=dcarney@chromium.org

Review URL: https://codereview.chromium.org/163963003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19431 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-18 10:14:11 +00:00
verwaest@chromium.org
2f9f49798a Reland "Allow ICs to be generated for own global proxy."
BUG=
R=dcarney@chromium.org

Review URL: https://codereview.chromium.org/170343002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19430 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-18 10:10:06 +00:00
alexandre.rames@arm.com
544d445ea6 A64: Optimize a loop by using post-indexing.
R=ulan@chromium.org

Review URL: https://codereview.chromium.org/169543002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19429 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-18 09:59:02 +00:00
alexandre.rames@arm.com
a4f0abe55b A64: Cleaning of Builtins::Generate_FunctionCall.
This is mostly register renaming, and a minor optimization merging two TBZ into
one TST and BNE.

R=jochen@chromium.org

Review URL: https://codereview.chromium.org/166833002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19428 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-18 09:44:43 +00:00
jkummerow@chromium.org
9699ca6b71 Make tools/bash-completion.sh robust against arbitrary CWD
R=yangguo@chromium.org

Review URL: https://codereview.chromium.org/168983006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19427 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-18 09:12:11 +00:00
jochen@chromium.org
0213f7acb4 A64: Update DoAllocate() to use a W register for the size
Inputs should always be 32bit

BUG=none
R=m.m.capewell@googlemail.com, ulan@chromium.org
LOG=n

Review URL: https://codereview.chromium.org/167123004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19426 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-18 08:59:06 +00:00
jochen@chromium.org
4058894c50 Also compile A64 for quickcheck target
We don't run tests yet because even in release mode, this will take a
considerable amount of time.

BUG=none
R=ulan@chromium.org, machenbach@chromium.org
LOG=n

Review URL: https://codereview.chromium.org/169303006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19425 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-18 08:53:51 +00:00
jkummerow@chromium.org
e0842a75b9 Update v8heapconst.py
R=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/170263002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19424 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-18 08:50:19 +00:00
danno@chromium.org
438db990a0 Revert r19409: "Allow ICs to be generated for own global proxy."
Causing Layout test crashes

TBR=verwaest@chromium.org

Review URL: https://codereview.chromium.org/170253002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19423 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-18 08:34:56 +00:00
palfia@homejinni.com
e97f597201 MIPS: Remove arch specific api callback generate functions.
Port r19406 (4eab88a)

BUG=
R=gergely@homejinni.com

Review URL: https://codereview.chromium.org/169243003

Patch from Balazs Kilvady <kilvadyb@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19421 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-17 20:37:29 +00:00
danno@chromium.org
000878d995 A64: fix cctest/test-code-stubs-a64/ConvertDToI.
R=danno@google.com

Review URL: https://codereview.chromium.org/169863002

Patch from Ulan Degenbaev <ulan@chromium.org>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19420 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-17 17:37:55 +00:00
danno@chromium.org
bedf702bcb Revert r19403: "A64: Tidy up Push and Pop TODOs."
Causes a64 debug asserts

TBR=jacob.bramley@arm.com,ulan@chromium.org

Review URL: https://codereview.chromium.org/169303007

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19419 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-17 16:08:44 +00:00
dcarney@chromium.org
98d9db7ab3 build fix for 19415
TBR=jochen@chromium.org

BUG=

Review URL: https://codereview.chromium.org/169793002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19418 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-17 15:46:29 +00:00
marja@chromium.org
73c4a61848 (Pre)Parser: Simplify NewExpression handling (fixed).
Notes:
- We use simple recursion to keep track of how many "new" operators we have seen
  and where.
- This makes the self-baked stack class PositionStack in parser.cc unnecessary.
- Now the logic is also unified between Parser and PreParser.
- This is a fixed version of r19386.

R=ulan@chromium.org
BUG=v8:3126
LOG=N

Review URL: https://codereview.chromium.org/168583008

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19417 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-17 15:40:51 +00:00
alph@chromium.org
429ce41f4b Make a single HeapEntry per single JSArrayBuffer data in heap snapshot.
It turned out that JSArrayBuffer's may share their backing_store so
the backing_store should go through hash map registration just like
other heap objects, so they won't be reported twice.

BUG=341741
LOG=N
R=dslomov@chromium.org, yurys@chromium.org

Review URL: https://codereview.chromium.org/166993002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19416 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-17 15:24:39 +00:00
dcarney@chromium.org
44b1aa4ea8 make a64 compile on mavericks - part 1
R=jochen@chromium.org

BUG=

Review URL: https://codereview.chromium.org/169523005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19415 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-17 15:20:54 +00:00
rmcilroy@chromium.org
f6e95dc928 A64 support for DoubleToIStub (truncating).
Added support for truncating DoubleToIStub and reorganize the macro-assembler
dToI operations to do the fast-path inline and the slow path by calling the
stub.

This a port essentially a port of https://codereview.chromium.org/23129003/.

R=jacob.bramley@arm.com, ulan@chromium.org

Review URL: https://codereview.chromium.org/160423002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19414 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-17 15:09:46 +00:00
verwaest@chromium.org
7aefdea9c3 Support elements transitions in load elimination
BUG=
R=titzer@chromium.org

Review URL: https://codereview.chromium.org/167893007

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19413 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-17 14:43:15 +00:00
mvstanton@chromium.org
8bcdbc354f Revert "Add a premonomorphic state to the call target cache."
This reverts commit r19402

R=verwaest@chromium.org

Review URL: https://codereview.chromium.org/169713002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19412 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-17 14:22:18 +00:00
bmeurer@chromium.org
eaab533fd8 Cleanup the double field tracking in Hydrogen.
Use a dedicated BuildLoadNamedField() with PropertyAccessInfo,
similar to BuildStoreNamedField() for optimized graph building,
and a dedicated BuildLoadNamedField() for the code stubs, and
don't depend on FLAG_track_double_fields during code generation.

R=verwaest@chromium.org

Review URL: https://codereview.chromium.org/168583006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19411 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-17 13:23:04 +00:00
bmeurer@chromium.org
c1729e5283 Handlify DescriptorArray::Merge().
R=svenpanne@chromium.org

Review URL: https://codereview.chromium.org/169363002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19410 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-17 13:22:34 +00:00
verwaest@chromium.org
1984ebad50 Allow ICs to be generated for own global proxy.
R=dcarney@chromium.org

Review URL: https://codereview.chromium.org/166233004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19409 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-17 13:12:56 +00:00
jochen@chromium.org
35d2e17646 A64: Make simulator compiler with optdebug
For some reason, the compiler cannot deduce the array bounds in opt
debug mode. An explicit check makes it happy.

BUG=none
R=ulan@chromium.org
LOG=n

Review URL: https://codereview.chromium.org/169473003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19408 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-17 12:43:30 +00:00
alph@chromium.org
8b53eb4cb6 Fix heap snapshot crash when JSArrayBuffer has no backing_store.
LOG=N
BUG=344239
R=dslomov@chromium.org, yurys@chromium.org

Review URL: https://codereview.chromium.org/169393004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19407 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-17 12:39:01 +00:00
dcarney@chromium.org
127cafa846 Remove arch specific api callback generate functions
R=verwaest@chromium.org

BUG=

Review URL: https://codereview.chromium.org/169353002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19406 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-17 12:36:44 +00:00
hpayer@chromium.org
22602980c0 Added a special stack guard to deopt marked allocation sites.
BUG=
R=mvstanton@chromium.org, ulan@chromium.org

Review URL: https://codereview.chromium.org/169563002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19404 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-17 12:15:16 +00:00
jacob.bramley@arm.com
1634631ae4 A64: Tidy up Push and Pop TODOs.
This addresses several TODOs:
  - Push and Pop requests can be queued up so that arrays of Registers
    can be pushed efficiently, with just one PrepareForPush/Pop.
  - PushMultipleTimes now takes an Operand. This allows variable-length
    arguments arrays to be initialized, for example.
  - A NoUseRealAbortsScope has been added to Abort so that
    AssertStackConsistency can be called from PrepareForPush without
    introducing infinite recursion.

BUG=
R=ulan@chromium.org

Review URL: https://codereview.chromium.org/169533002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19403 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-17 12:08:06 +00:00
mvstanton@chromium.org
be731e6c95 Add a premonomorphic state to the call target cache.
From a CL by kasperl: https://codereview.chromium.org/162903004/

R=verwaest@chromium.org

Review URL: https://codereview.chromium.org/163413003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19402 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-17 11:59:45 +00:00
yangguo@chromium.org
7f6dc1ff9b Do not visit smis in the root list during GC.
R=mstarzinger@chromium.org
BUG=328804
LOG=N

Review URL: https://codereview.chromium.org/166023003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19400 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-17 10:41:25 +00:00
jkummerow@chromium.org
43a836f70a ARM: build fix for r19380.
This commit fixes the debug build on Linux with gcc 4.6.3 and 4.7.2.

Port r19381 (5476e11b)

BUG=
R=dcarney@chromium.org, plind44@gmail.com

Review URL: https://codereview.chromium.org/167523003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19398 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-17 08:10:02 +00:00
jarin@chromium.org
4c7ed144e1 Comparison in effect context lazy deopt fix.
R=jkummerow@chromium.org
BUG=

Review URL: https://codereview.chromium.org/163623002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19396 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-16 05:51:10 +00:00
palfia@homejinni.com
b72a67dba1 MIPS: build fix for r19380
Port r19381 (5476e11b)

BUG=
R=plind44@gmail.com

Review URL: https://codereview.chromium.org/163953014

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19395 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-14 21:28:22 +00:00
plind44@gmail.com
b1205064b8 MIPS: Remove HandlerKindField and just encode the handlerkind as the only extra-ic-state.
Port r19385 (27769f9)

BUG=
R=plind44@gmail.com

Review URL: https://codereview.chromium.org/164283008

Patch from Balazs Kilvady <kilvadyb@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19394 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-14 18:11:31 +00:00
plind44@gmail.com
cf9c9f9c47 MIPS: Don't mix handler flags into regular flag computation.
Port r19384 (4ba5d0d)

BUG=
R=plind44@gmail.com

Review URL: https://codereview.chromium.org/167243003

Patch from Balazs Kilvady <kilvadyb@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19393 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-14 18:06:34 +00:00
plind44@gmail.com
44b2122266 MIPS: api accessor store ics should return passed value.
Port r19380 (114a9ca)

BUG=
R=plind44@gmail.com

Review URL: https://codereview.chromium.org/167083002

Patch from Balazs Kilvady <kilvadyb@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19392 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-14 17:45:53 +00:00
plind44@gmail.com
857a483408 MIPS: Fix assignment of function name constant.
Port r19379 (622d830)

Original commit message:
If it's shadowed by a variable of the same name and both are forcibly
context-allocated, the function is assigned to the wrong context slot.

BUG=v8:3138
LOG=Y
R=plind44@gmail.com

Review URL: https://codereview.chromium.org/166813002

Patch from Balazs Kilvady <kilvadyb@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19391 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-14 17:37:45 +00:00
ishell@chromium.org
389df3e28d Debug-mode check added: optimized keyed store of a smi on x64 is done to a entry containing a smi.
R=verwaest@chromium.org

Review URL: https://codereview.chromium.org/167063002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19389 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-14 16:41:59 +00:00
marja@chromium.org
0323bf9cd7 Revert "(Pre)Parser: Simplify NewExpression handling."
This reverts revision 19386.

Reason: Mozilla failures.

BUG=
TBR=ulan@chromium.org,marja@chromium.org

Review URL: https://codereview.chromium.org/164183006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19388 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-14 16:08:14 +00:00
ulan@chromium.org
6744ff61ae Fix dictionary element load to pass correct elements kind.
Using FAST_SMI_ELEMENTS triggers optimization on 64-bit architectures that load
only the higher 32 bits of the element. If the element is a pointer to undefined
that has 0 in the higher half than it is erroneously treated as SMI 0.

BUG=v8:3158
LOG=N
TEST=mjsunit/sparse-array-reverse,mjsunit/regress/regress-3158.js
R=danno@chromium.org, ishell@chromium.org

Review URL: https://codereview.chromium.org/166653005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19387 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-14 15:52:24 +00:00
marja@chromium.org
c532977da3 (Pre)Parser: Simplify NewExpression handling.
Notes:
- We use simple recursion to keep track of how many "new" operators we have seen
  and where.
- This makes the self-baked stack class PositionStack in parser.cc unnecessary.
- Now the logic is also unified between Parser and PreParser.
- It might have been a copy-paste artifact (ParseLeftHandSideExpression ->
  ParseMemberWithNewPrefixesExpression) that the logic was so complicated
  before.

R=ulan@chromium.org
BUG=v8:3126
LOG=N

Review URL: https://codereview.chromium.org/166943002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19386 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-14 15:33:10 +00:00
verwaest@chromium.org
ed9bbc7051 Remove HandlerKindField and just encode the handlerkind as the only extra-ic-state.
R=ishell@chromium.org

Review URL: https://codereview.chromium.org/166883002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19385 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-14 15:17:26 +00:00
verwaest@chromium.org
209b17ac31 Don't mix handler flags into regular flag computation.
BUG=
R=ishell@chromium.org

Review URL: https://codereview.chromium.org/163363003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19384 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-14 15:15:08 +00:00
verwaest@chromium.org
fe0fe20e8f Pass in the handler kind to IC computation rather than extracting it from the handler.
R=ishell@chromium.org

Review URL: https://codereview.chromium.org/163463002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19383 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-14 15:14:34 +00:00
mstarzinger@chromium.org
984af9c721 Add flags for write barrier elimination and local allocation folding.
R=hpayer@chromium.org

Review URL: https://codereview.chromium.org/166163003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19382 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-14 14:58:05 +00:00
dcarney@chromium.org
55599b395a build fix for r19380
R=mstarzinger@chromium.org

BUG=

Review URL: https://codereview.chromium.org/166483004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19381 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-14 14:48:20 +00:00
dcarney@chromium.org
0c844cc590 api accessor store ics should return passed value
R=verwaest@chromium.org

BUG=

Review URL: https://codereview.chromium.org/166653003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19380 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-14 14:13:06 +00:00
yangguo@chromium.org
68c7523e63 Fix assignment of function name constant.
If it's shadowed by a variable of the same name and both are forcibly
context-allocated, the function is assigned to the wrong context slot.

R=rossberg@chromium.org
BUG=v8:3138
LOG=Y

Review URL: https://codereview.chromium.org/159903008

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19379 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-14 12:40:47 +00:00