Commit Graph

26010 Commits

Author SHA1 Message Date
zhengxing.li
b5b590f511 X87: [Interpreter] Support for operator new.
port 7557dc5a70 (r31312).

    original commit message:
    This change add a new bytecode for operator new and implements it using
    the Construct() builtin.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#31518}
2015-10-23 12:21:05 +00:00
bmeurer
2ab54f109e [turbofan] Add test case for stores to properties that are also present on prototype.
R=verwaest@chromium.org
BUG=v8:4470
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#31517}
2015-10-23 12:09:54 +00:00
zhengxing.li
f1c0a86166 X87: CTZ instruction implemented as optional operator.
port b3334087ec (r31313).

    original commit message:

BUG=

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

Cr-Commit-Position: refs/heads/master@{#31516}
2015-10-23 11:37:12 +00:00
hpayer
20df4b7fcf [heap] Add store and slots buffer clearing timers to --trace-gc-nvp.
Review URL: https://codereview.chromium.org/1412123006

Cr-Commit-Position: refs/heads/master@{#31515}
2015-10-23 11:20:41 +00:00
bmeurer
505efa5a72 Reland of [turbofan] Fix and enable property stores. (patchset #1 id:1 of https://codereview.chromium.org/1414743005/ )
Reason for revert:
It is fixed.

Original issue's description:
> Revert of [turbofan] Fix and enable property stores. (patchset #2 id:20001 of https://codereview.chromium.org/1424523002/ )
>
> Reason for revert:
> [Sheriff] Breaks benchmarks:
> http://build.chromium.org/p/client.v8/builders/V8%20Linux64%20-%20debug%20-%20avx2/builds/3164
>
> Original issue's description:
> > [turbofan] Fix and enable property stores.
> >
> > Fix lookup for storing to properties, and also make sure we don't embed
> > deprecated map (using Map::TryUpdate).
> >
> > R=jarin@chromium.org
> > BUG=v8:4470
> > LOG=n
> >
> > Committed: https://crrev.com/70158828b3db8e582344272c6c11a957f4d8b2c8
> > Cr-Commit-Position: refs/heads/master@{#31509}
>
> TBR=jarin@chromium.org,bmeurer@chromium.org
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=v8:4470
>
> Committed: https://crrev.com/50e5a7275f2bc93a8ae731acda0f7ac6e5e97c3c
> Cr-Commit-Position: refs/heads/master@{#31513}

TBR=jarin@chromium.org,machenbach@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=v8:4470

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

Cr-Commit-Position: refs/heads/master@{#31514}
2015-10-23 11:18:05 +00:00
machenbach
50e5a7275f Revert of [turbofan] Fix and enable property stores. (patchset #2 id:20001 of https://codereview.chromium.org/1424523002/ )
Reason for revert:
[Sheriff] Breaks benchmarks:
http://build.chromium.org/p/client.v8/builders/V8%20Linux64%20-%20debug%20-%20avx2/builds/3164

Original issue's description:
> [turbofan] Fix and enable property stores.
>
> Fix lookup for storing to properties, and also make sure we don't embed
> deprecated map (using Map::TryUpdate).
>
> R=jarin@chromium.org
> BUG=v8:4470
> LOG=n
>
> Committed: https://crrev.com/70158828b3db8e582344272c6c11a957f4d8b2c8
> Cr-Commit-Position: refs/heads/master@{#31509}

TBR=jarin@chromium.org,bmeurer@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=v8:4470

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

Cr-Commit-Position: refs/heads/master@{#31513}
2015-10-23 11:16:02 +00:00
Benedikt Meurer
d061d1236b [turbofan] Properly deal with empty access info list for JSStoreNamed.
TBR=jarin@chromium.org
BUG=v8:4470
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#31512}
2015-10-23 11:15:25 +00:00
jkummerow
7bc5ce16ee OrdinaryDefineOwnProperty: always reset the LookupIterator before storing.
Review URL: https://codereview.chromium.org/1415823003

Cr-Commit-Position: refs/heads/master@{#31511}
2015-10-23 10:48:25 +00:00
yangguo
05a6009544 Simplify IdentityMap.
This removes the requirement for handles as arguments, but also removes
concurrency support, which is not being used at the moment.

Supporting concurrency could be done by introducing a sibling class to
IdentityMap that includes RelocationLock on method calls.

R=bmeurer@chromium.org, ulan@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#31510}
2015-10-23 10:33:14 +00:00
bmeurer
70158828b3 [turbofan] Fix and enable property stores.
Fix lookup for storing to properties, and also make sure we don't embed
deprecated map (using Map::TryUpdate).

R=jarin@chromium.org
BUG=v8:4470
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#31509}
2015-10-23 10:30:15 +00:00
mlippautz
d6235fc478 [heap] Add concurrency-safe refilling to compaction spaces
BUG=chromium:524425
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#31508}
2015-10-23 10:27:45 +00:00
neis
8e89e8203b Adapt tests in preparation of shipping --harmony-completion.
R=rossberg
BUG=

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

Cr-Commit-Position: refs/heads/master@{#31507}
2015-10-23 10:26:01 +00:00
zhengxing.li
22100599bf X87: Bailout for large object allocations in full code EmitFastOneByteArrayJoin.
port 24622f5f12 (r31257).

    original commit message:

BUG=

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

Cr-Commit-Position: refs/heads/master@{#31506}
2015-10-23 10:13:04 +00:00
zhengxing.li
9826a77f33 X87: VectorICs: use a vector slot to aid in array literal processing.
port f2f46aff8b (r31242).

    original commit message:
    The lack of a vector slot for the keyed store operation in filling in
    non-constant array literal properties led to undesirable contortions in
    compilers downwind of full-codegen. The use of a single slot to initialize all
    the array elements is sufficient.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#31505}
2015-10-23 10:05:04 +00:00
zhengxing.li
562047df0f X87: Vector ICs: Get rid of stack arguments on ia32 transitioning stores.
port 2d4aeaad2f (r31204).

    original commit message:
    The stack manipulation was expensive. Two virtual registers are better.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#31504}
2015-10-23 09:50:28 +00:00
zhengxing.li
b64c1f02ad X87: [builtins] Make sure argument count is always valid for C++ builtins.
port 9c8262f11e (r31120).

    original commit message:
    When calling into C++ builtins, we need to make sure that the argument
    count register contains the correct number of arguments, otherwise the
    CEntryStub will not be able to leave the stack in the correct state.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#31503}
2015-10-23 09:43:08 +00:00
zhengxing.li
c38e429035 X87: [Interpreter] Add CallRuntime support to the interpreter.
port 75f6ad74b2 (r31089).

    original commit message:
    Adds support for calling runtime functions from the interpreter. Adds the
    CallRuntime bytecode which takes a Runtime::FunctionId of the function to call
    and the arguments in sequential registers. Adds a InterpreterCEntry builtin
    to enable the interpreter to enter C++ code based on the functionId.

    Also renames Builtin::PushArgsAndCall to Builtin::InterpreterPushArgsAndCall
    and groups all the interpreter builtins together.

    BUG=v8:4280
    LOG=N

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

Cr-Commit-Position: refs/heads/master@{#31502}
2015-10-23 09:42:03 +00:00
neis
d91e9e4f1d Restructure Object::SetProperty and related functions.
This is in preparation of implementing Reflect.set.

R=rossberg
BUG=

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

Cr-Commit-Position: refs/heads/master@{#31501}
2015-10-23 09:41:27 +00:00
cbruni
1c50fc1162 Show builtin name when printing Code objects.
BUG=

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

Cr-Commit-Position: refs/heads/master@{#31500}
2015-10-23 09:19:44 +00:00
yangguo
11cd1f77ae Move RootIndexMap out of serializer file.
This is in preparation of using it elsewhere.

R=bmeurer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#31499}
2015-10-23 08:28:38 +00:00
alph
a96b87fad9 [x64] Replace addsd, subsd, mulsd, divsd with AVX versions under AVX.
BUG=v8:4406
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#31498}
2015-10-23 08:25:53 +00:00
akos.palfi
f5c227b27d Fix gcc 4.9.2 signed-compare error.
BUG=

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

Cr-Commit-Position: refs/heads/master@{#31497}
2015-10-23 08:21:26 +00:00
mvstanton
e6626cfc67 Alternative approach to using type feedback for Symbol-keyed properties
This patch only treats non-private symbols as valid feedback, thus
avoiding the need to switch to Oddballs for the feedback sentinels
and avoiding breaking the use of private own symbols.

Crankshaft will also optimize these symbol loads into a named load,
just as it does for string keyed loads with type feedback.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#31496}
2015-10-23 08:18:02 +00:00
jochen
133d4a88f2 Plumb accessing context through to access control callbacks
BUG=none
LOG=n
R=verwaest@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#31495}
2015-10-23 08:13:53 +00:00
zhengxing.li
2e5845f178 X87: Re-reland: Remove register index/code indirection.
port 5cf1c0bcf6 (r31087).

    original commit message:
    Previous to this patch, both the lithium and TurboFan register
    allocators tracked allocated registers by "indices", rather than
    the register codes used elsewhere in the runtime. This patch
    ensures that codes are used everywhere, and in the process cleans
    up a bunch of redundant code and adds more structure to how the
    set of allocatable registers is defined.

    Some highlights of changes:

    * TurboFan's RegisterConfiguration class moved to V8's top level
      so that it can be shared with Crankshaft.
    * Various "ToAllocationIndex" and related methods removed.
    * Code that can be easily shared between Register classes on
      different platforms is now shared.
    * The list of allocatable registers on each platform is declared
      as a list rather than implicitly via the register index <->
      code mapping.

    additional comment:
    This patch must be work with CL https://codereview.chromium.org/1405673003/
    and CL https://codereview.chromium.org/1413343002/
    which provide the needed register allocation common code change in
    v8 for this CL

BUG=

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

Cr-Commit-Position: refs/heads/master@{#31494}
2015-10-23 07:58:47 +00:00
alph
cfcc019aff [x64] Implemennt vroundsd AVX instruction.
BUG=v8:4406
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#31493}
2015-10-23 07:49:26 +00:00
chunyang.dai
4fe366f121 X87: Return different allocatable double register number for X87 turbofan / crankshaft seperately.
Currently X87 turbofan backend use only one double register. But crankshaft needs to use more than 1
   double register. The reason is that the X87 register is stack-based and the register allocator use
   the same algorithm for all registers. So the backend of X87 needs to maintain the X87 stack status
   between basic blocks during code generation. But for Turbofan backend, it can only handle discrete
   platform-related LIRs. It's difficult to maintain the x87 stack status during different basic blocks.
   So we use the register configuration selection mechanism to return different register configuration
   for X87 turbofan and crankshaft seperately.

   This CL is a follow-up of https://codereview.chromium.org/1405673003/.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#31492}
2015-10-23 07:34:09 +00:00
bmeurer
acdd869681 [turbofan] Fix frame states for CountOperation (again).
R=jarin@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#31491}
2015-10-23 07:10:27 +00:00
alph
7ae54d2b82 [x64] Implement vsqrtsd AVX instruction.
BUG=v8:4406
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#31490}
2015-10-23 06:47:46 +00:00
mvstanton
21724d6799 Re-enable accessor-map-sharing test
It doesn't fail on tip of tree, we'll investigate if it recurs.

R=mstarzinger@chromium.org
BUG=v8:4493
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#31489}
2015-10-23 06:14:36 +00:00
alph
ce8a22a86f [x64] Make MathMinMax use AVX instructions when available.
BUG=v8:4406
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#31488}
2015-10-23 06:10:55 +00:00
ahaas
d16c822ba2 Added the bsf instruction to the disassembler of x64 and ia32.
R=titzer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#31487}
2015-10-22 23:18:26 +00:00
rmcilroy
6256e1dcd5 [Interpreter] Fill out function prologue support.
Fills out some more of the function prologue support in the
interpreter. Deals with creation of arguments objects and throwing
IllegalRedeclarations if necessary. Also adds (untested) support for
this.function and new.target variable assignment.

Also fixes a bug in Frames::is_java_script() to deal with
interpreter frames correctly.

Cleans up comments in builtins InterpreterEntryTrampoline about
missing prologue support.

Adds the following bytecodes:
  - CreateArgumentsSloppy
  - CreateArgumentsStrict

BUG=v8:4280
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#31486}
2015-10-22 21:42:04 +00:00
rmcilroy
4e0d11435e [Interpreter] Add support for compound expressions.
Adds support for compound expressions for variables and named / keyed
property assignments.

BUG=v8:4280
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#31485}
2015-10-22 20:42:31 +00:00
rmcilroy
0030805643 [Interpreter] Add support for for count operations.
Adds support for count operations to the interpreter. Deals with count
operations on locals, globals, context allocated variables and named and
keyed properties.

Adds the following bytecodes:
  ToNumber
  Inc
  Dec

BUG=v8:4280
LOG=N
TBR=mstarzinger@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#31484}
2015-10-22 20:40:27 +00:00
jkummerow
5676415b4a Introduce LookupIterator::Restart() and use it
Review URL: https://codereview.chromium.org/1416053007

Cr-Commit-Position: refs/heads/master@{#31483}
2015-10-22 16:31:39 +00:00
rmcilroy
9a594e783a [Interpreter] Unify global and unallocated variable access.
Unifies the global and unallocated variable type accesses given that
--global_var_shortcuts is going away. Lda/StaGlobal is modified to use
Load/StoreICs on the global object. The named LoadIC and StoreIC bytecodes
are also modified so that they take a constant pool entry index for the
name rather than a register, avoiding unecessary LdaConstant bytecodes to
be emitted.

BUG=v8:4280
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#31482}
2015-10-22 14:56:13 +00:00
yangguo
b0e4dce609 Move math-related typed arrays off js builtins object..
Review URL: https://codereview.chromium.org/1420473002

Cr-Commit-Position: refs/heads/master@{#31481}
2015-10-22 14:41:08 +00:00
verwaest
f464f12a8b Ensure we never inline class constructors in Crankshaft, as it currently is entirely unsupported.
BUG=v8:3330
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#31480}
2015-10-22 14:39:07 +00:00
yangguo
0a7996882e [es6] stage sticky regexps and RegExp.prototype.flags.
R=littledan@chromium.org
BUG=v8:4342
LOG=Y

Committed: https://crrev.com/722719fe31fe7fd5bb50be6256b3581bb28a8169
Cr-Commit-Position: refs/heads/master@{#31390}

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

Cr-Commit-Position: refs/heads/master@{#31479}
2015-10-22 14:15:59 +00:00
hpayer
1c4192ab8c [heap] Do not print isoalte address twice in --trace-gc-nvp.
Review URL: https://codereview.chromium.org/1416273003

Cr-Commit-Position: refs/heads/master@{#31478}
2015-10-22 13:41:46 +00:00
Benedikt Meurer
317e80218e [turbofan] Fix rebase failure in tree (not checked by CQ).
TBR=machenbach@chromium.org
BUG=v8:4470
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#31477}
2015-10-22 13:40:13 +00:00
chunyang.dai
5978b926c6 For some platform such as X87, Crankshaft and Turbofan needs to use different
register configurations currently. This CL provides a mechanism so that
    optimizing compilers can select different Register Configuration.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#31476}
2015-10-22 13:24:49 +00:00
bmeurer
74b4146757 [turbofan] Initial support for monomorphic/polymorphic property stores.
This slightly generalizes the current mechnanism for property loads to
also deal with property stores (both monomorphic and polymorphic). It's
still somewhat adhoc, but it already handles a lot of the interesting
cases. We might want to wait for keyed accesses before we start
refactoring to a more general solution.

R=jarin@chromium.org
BUG=v8:4470
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#31475}
2015-10-22 13:23:46 +00:00
jkummerow
fdfab67243 [Crankshaft] Don't do HMathFloorOfDiv optimization for kUint32 values
BUG=v8:4507
LOG=y
R=bmeurer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#31474}
2015-10-22 13:22:09 +00:00
jkummerow
034f4a6ae1 Reland "Use C++ implementation of Object.definePropert{y,ies}"
This reverts commit 581ead5c8c.

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

Cr-Commit-Position: refs/heads/master@{#31473}
2015-10-22 13:16:45 +00:00
mstarzinger
bfdfb48848 [turbofan] Re-enable webkit test that no longer fail.
R=bmeurer@chromium.org
TEST=webkit/fast/js/toString-number

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

Cr-Commit-Position: refs/heads/master@{#31472}
2015-10-22 12:26:32 +00:00
mstarzinger
2e61d92884 [turbofan] Make JSInliner use temporary zone again.
This switches inlining back to use a temporary zone for parsing and
analyzing inlinees. The inlinee graph however is still built in the
same zone as the parent graph.

R=bmeurer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#31471}
2015-10-22 12:22:06 +00:00
yangguo
f430bd040f Allow IdentityMap to store Smi-0.
R=bmeurer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#31470}
2015-10-22 12:12:20 +00:00
mstarzinger
4054961fa4 [turbofan] Fix JSInliner strong mode bailout.
This moves the bailout point in the JSInliner up to a point where it is
still allowed to decide not to inline. Once the inlining decision has
been recorded with CompilationInfo::AddInlinedFunction, we should not
abort anymore.

R=jarin@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#31469}
2015-10-22 11:42:17 +00:00