Commit Graph

29692 Commits

Author SHA1 Message Date
cbruni
942f255fa2 Adding %_NewObject intrinsic
This should help speeding up Promise and RegExp instantiations substantially.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#35200}
2016-04-01 11:34:27 +00:00
epertoso
3dd3beb066 [ia32] Byte and word memory operands in ia32 cmp/test.
Currently, if the size of two cmp or test operands is a byte or a word, we sign-extend or zero-extend each of them into a 32-bit register before doing the comparison, even when the conditions for the use of a memory operand are met.

This CL makes it possible to load only one of them into a register and address the other as a memory operand.

The tricky bit is that, unlike as in the x64 counterpart http://crrev.com/1780193003, not all registers can be accessed as bytes.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#35199}
2016-04-01 11:08:58 +00:00
hablich
701911f9a0 Revert of Ship --harmony-regexp-exec (patchset #3 id:40001 of https://codereview.chromium.org/1847103002/ )
Reason for revert:
breaks some chromium browser_tests: https://codereview.chromium.org/1848233002/

Original issue's description:
> Ship --harmony-regexp-exec
>
> There are still spec compliance fixes to be made, but this patch
> turns the flag to shipping to make sure we get more canary coverage
> and performance data from the bots.
>
> BUG=v8:4602
> LOG=y
>
> Committed: https://crrev.com/84492bb66b340f4e0df36758e98fddbb10b5d1dc
> Cr-Commit-Position: refs/heads/master@{#35181}

TBR=littledan@chromium.org,adamk@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=v8:4602

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

Cr-Commit-Position: refs/heads/master@{#35198}
2016-04-01 10:48:20 +00:00
bmeurer
10b365abff [turbofan] Introduce JSToInteger and JSToLength operators.
These operators will be easier to optimize, and we can remove some
unnecessary clutter from the intrinsic lowering.

Drive-by-cleanup: Some alpha sorting of the type conversion operator
business.

R=mstarzinger@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#35197}
2016-04-01 10:30:03 +00:00
jochen
cb7aa79b12 Expose a lower bound of malloc'd memory via heap statistics
We expect that the majority of malloc'd memory held by V8 is allocated
in Zone objects. Introduce an Allocator class that is used by Zones to
manage memory, and allows for querying the current usage.

BUG=none
R=titzer@chromium.org,bmeurer@chromium.org,jarin@chromium.org
LOG=n
TBR=rossberg@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#35196}
2016-04-01 10:01:56 +00:00
ahaas
3ffee875ef Fixed rotate left on windows.
R=titzer@chromium.org, bmeurer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#35195}
2016-04-01 09:52:13 +00:00
epertoso
9ca9195dd4 [x64] Optimize loading SMIs.
Especially when loading and untagging SMIs within code stubs, instances of the following pattern appear in the generated code:

movq %rax,[%rbx+%rcx*4+0xf]
sarq %rax, 32

This CL changes that code to:

movsxlq %rax, [%ebx+%ecx*4+0x13]

BUG=

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

Cr-Commit-Position: refs/heads/master@{#35194}
2016-04-01 09:50:15 +00:00
yangguo
3a2174c89e [debugger] add test case for stepping out from tail calls.
R=ishell@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#35193}
2016-04-01 09:42:43 +00:00
yangguo
489c6f43df Fix build for pedantic compilers.
1f895a06bd did not use parenthesis around a conjunction in a
disjunction.

NOTRY=true
TBR=bmeurer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#35192}
2016-04-01 09:19:54 +00:00
yangguo
1f895a06bd Add assertions to FrameSummary and Code::SourcePosition.
Make sure we don't use arbitrary optimized code in FrameSummary.

R=bmeurer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#35191}
2016-04-01 09:06:57 +00:00
bmeurer
6761224c97 [stubs] Introduce ToIntegerStub and unify the handling of %_ToInteger.
This adds a new TurboFan-based ToIntegerStub, similar to the
ToLengthStub, and uses it whereever we had custom code for %_ToInteger
previously.

R=yangguo@chromium.org
BUG=v8:4587
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#35190}
2016-04-01 08:01:54 +00:00
mlippautz
42aa01e021 [heap] Fix computation of flags offset in memorychunk
BUG=chromium:581412
LOG=N
R=hpayer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#35189}
2016-04-01 07:28:27 +00:00
ishell
ecb8fcfcca [crankshaft] [turbofan] Fix environment handling when generating a tail call from inlined function.
This CL ensures that we build environments/frame states so that tail caller frame will never become topmost.

BUG=chromium:598998, v8:4698
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#35188}
2016-04-01 07:22:47 +00:00
bmeurer
6df9a22c3f [ic] Use the CallFunction builtin to invoke accessors.
The HandlerCompiler did not properly handle the weird edge case when a
sloppy mode function was installed as an accessor on one of the value
wrapper prototypes and then accessed via a load from a primitive value.
In this case we just passed the primitive value untouched instead of
properly wrapping it first. The CallFunction builtin properly deals with
all the funny edge cases, so we use it instead of duplicating almost all
of the logic here (the performance difference is neglible).

R=verwaest@chromium.org
BUG=chromium:599073, v8:4413
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#35187}
2016-04-01 06:37:57 +00:00
mbrandy
59a0ad2dc4 PPC: Change store buffer overflow check to not rely on the store buffer being (2*Size) aligned.
Port 6a62857388

Original commit message:
    This reduces the reserved virtual memory size needed for the store buffer.

R=ulan@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
BUG=chromium:578883
LOG=NO

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

Cr-Commit-Position: refs/heads/master@{#35186}
2016-04-01 06:10:00 +00:00
yangguo
2069ab2202 Revert of [compiler] Add relocatable pointer constants for wasm memory references. (patchset #14 id:300001 of https://codereview.chromium.org/1759383003/ )
Reason for revert:
Test failures: https://build.chromium.org/p/client.v8/builders/V8%20Mac64/builds/8046

Original issue's description:
> [compiler] Add relocatable pointer constants for wasm memory references.
>
> Add relocatable pointers for wasm memory references that need to be updated when wasm GrowMemory is used. Code generator changes to accept relocatable constants as immediates.
>
> R=titzer@chromium.org, yangguo@chromium.org, bradnelson@chromium.org
>
> Committed: https://crrev.com/eb5fe0df64ec0add423b2a1f6fb62d5a33dce2a5
> Cr-Commit-Position: refs/heads/master@{#35182}

TBR=bradnelson@chromium.org,titzer@chromium.org,gdeepti@google.com
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true

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

Cr-Commit-Position: refs/heads/master@{#35185}
2016-04-01 05:53:17 +00:00
bryleun
8760b602b7 S390: Implemented ALCR in S390 simulator.
This CL implements the ALCR, add logical 32-bit integer with carry, instruction in the s390 simulator.

Some 64-bit operations in the 4-byte arithmetic section of the s390 simulator have been refactored into a separate function to stay below 500 lines.

R=michael_dawson@ca.ibm.com,jyan@ca.ibm.com,mbrandy@us.ibm.com,joransiu@ca.ibm.com,

BUG=

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

Cr-Commit-Position: refs/heads/master@{#35184}
2016-04-01 00:43:33 +00:00
slan
86357d5235 [GN] Define USE_EABI_HARDFLOAT=1 when arm_float_abi=="hard".
Add this define to the config used for mksnapshot. This fixes a bug
where certain applications would fail at runtime on Chromecast.

BUG=592660
LOG=Y
Bug: internal b/27495984

Test: Formerly broken Cast apps load and run as expected.

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

Cr-Commit-Position: refs/heads/master@{#35183}
2016-04-01 00:41:36 +00:00
gdeepti
eb5fe0df64 [compiler] Add relocatable pointer constants for wasm memory references.
Add relocatable pointers for wasm memory references that need to be updated when wasm GrowMemory is used. Code generator changes to accept relocatable constants as immediates.

R=titzer@chromium.org, yangguo@chromium.org, bradnelson@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#35182}
2016-04-01 00:41:35 +00:00
adamk
84492bb66b Ship --harmony-regexp-exec
There are still spec compliance fixes to be made, but this patch
turns the flag to shipping to make sure we get more canary coverage
and performance data from the bots.

BUG=v8:4602
LOG=y

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

Cr-Commit-Position: refs/heads/master@{#35181}
2016-04-01 00:39:25 +00:00
littledan
31e806ebd1 Revert of Remove RegExp.prototype.source getter compat workaround (patchset #2 id:20001 of https://codereview.chromium.org/1837843002/ )
Reason for revert:
TC39 decided that this compatibility fix should be standardized.

Original issue's description:
> Remove RegExp.prototype.source getter compat workaround
>
> The getter RegExp.prototype.source is specified in ES2015 to throw when
> called on a non-RegExp instance, such as RegExp.prototype. We had previously
> put in a compatibility workaround for all RegExp getters to make them
> throw on access specifically with RegExp.prototype as the receiver; however,
> we only have evidence that this is needed for properties other than source.
> This patch removes the compatibility workaround for get RegExp.prototype.source
> and gives it semantics precisely as per the ES2015 specification.
>
> R=adamk
> BUG=chromium:581577,v8:4827
> LOG=Y
>
> Committed: https://crrev.com/80803aa89e31839b8f73959776fa7e1923c6b461
> Cr-Commit-Position: refs/heads/master@{#35086}

R=adamk@chromium.org
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=chromium:581577,v8:4827
LOG=Y

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

Cr-Commit-Position: refs/heads/master@{#35180}
2016-04-01 00:37:25 +00:00
jyan
e3fb2e7341 s390: Remove usages of Heap::NewSpaceStart and its external reference
Port f2a585935f

Original commit message:
    Replace the uses with proper page flag lookups.

R=mlippautz@chromium.org, joransiu@ca.ibm.com, mbrandy@us.ibm.com, michael_dawson@ca.ibm.com
BUG=chromium:581412
LOG=N
TEST=mjsunit/allocation-site-info

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

Cr-Commit-Position: refs/heads/master@{#35179}
2016-03-31 19:57:34 +00:00
mtrofin
da97b701ad [turbofan] Frame deconstruction self-validation.
BUG=

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

Cr-Commit-Position: refs/heads/master@{#35178}
2016-03-31 18:42:46 +00:00
jyan
3cb6a22a1e S390: [turbofan] Frame elision for code stubs.
Port 53d51c52f3

Original commit message:
    Removed Frame::needs_frame and the function-wide logic using it in
    favor of FrameAccessState::has_frame, which can be set on a more
    granular level, and driving it block by block.

R=mtrofin@chromium.org, joransiu@ca.ibm.com, mbrandy@us.ibm.com, michael_dawson@ca.ibm.com, rmcilroy@chromium.org
BUG=v8:4533
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#35177}
2016-03-31 18:40:34 +00:00
ahaas
ac7f0e2b61 [wasm] Fixed float-to-int conversion tests.
*) For all tests the input validation was incorrect, i.e. some values
were considered invalid although they were valid. The problem was that
values which are outside int range can get in range through truncation.

*) Removed an assertion in the x64 code generation of
TruncateFloat64ToUint32 which trapped on negative inputs.

*) Introduced a new TF operator TruncateFloat32ToUint32 which does
the same as ChangeFloat32ToUint32 but does not trap on negative inputs.

R=titzer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#35176}
2016-03-31 18:38:36 +00:00
mtrofin
2230018504 Undoing unintended chant to code-stub-assembler introduced by
53d51c52f3 (frame elision).

Turns out it was the cause of the regression in the referenced bug.

BUG=599421
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#35175}
2016-03-31 17:24:29 +00:00
ulan
6a62857388 Change store buffer overflow check to not rely on the store buffer being (2*Size) aligned.
This reduces the reserved virtual memory size needed for the store buffer.

BUG=chromium:578883
LOG=NO

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

Cr-Commit-Position: refs/heads/master@{#35174}
2016-03-31 17:18:44 +00:00
ahaas
bd4fb28ecd [wasm] Int64Lowering of Word64Ror and Word64Rol.
R=titzer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#35173}
2016-03-31 17:05:43 +00:00
mbrandy
5a09c0c0db PPC: Remove usages of Heap::NewSpaceStart and its external reference
Port f2a585935f

Original commit message:
    Replace the uses with proper page flag lookups.

R=mlippautz@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
BUG=chromium:581412
LOG=N
TEST=mjsunit/allocation-site-info

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

Cr-Commit-Position: refs/heads/master@{#35172}
2016-03-31 16:46:43 +00:00
hlopko
da934aba4a Fix comment for GlobalHandles::MarkIndependent
BUG=
LOG=no

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

Cr-Commit-Position: refs/heads/master@{#35171}
2016-03-31 15:59:43 +00:00
jbriance
0b557da25f [arm/Linux] Don't rely on KUSER_HELPERS feature
ARM specific CONFIG_KUSER_HELPERS kernel feature for Linux can be disabled,
and in this case, we shouldn't crash. Use a __sync_synchronize() call
instead for Linux platforms.

BUG=chromium:599051
LOG=Y

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

Cr-Commit-Position: refs/heads/master@{#35170}
2016-03-31 15:56:01 +00:00
mlippautz
9da14dbeda [heap] Tracer: Fix accounting for external epilogue
R=hpayer@chromium.org
LOG=N
BUG=

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

Cr-Commit-Position: refs/heads/master@{#35169}
2016-03-31 15:37:46 +00:00
mlippautz
c80f2bf80c [tools] Beef up GC eval scripts
* Add csv output mode for spreadsheet pasting
* Add option to leave out top-level categories
* Deal with unknown categories

R=hpayer@chromium.org
LOG=N
BUG=
NOTRY=true

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

Cr-Commit-Position: refs/heads/master@{#35168}
2016-03-31 15:09:00 +00:00
jyan
b295462e84 S390: [wasm] Int64Lowering of Int64Mul.
port 40bdbef975

 Original commit message:
     Int64Mul is lowered to a new turbofan operator, Int32MulPair. The new
     operator takes 4 inputs an generates 2 outputs. The inputs are the low
     word of the left input, high word of the left input, the low word of the
     right input, and high word of the right input. The ouputs are the low
     and high word of the result of the multiplication.

R=titzer@chromium.org, joransiu@ca.ibm.com, michael_dawson@ca.ibm.com, mbrandy@us.ibm.com
BUG=

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

Cr-Commit-Position: refs/heads/master@{#35167}
2016-03-31 14:24:22 +00:00
mbrandy
9e1f2c5ee2 PPC: [turbofan] Frame elision for code stubs.
Port 53d51c52f3

Includes fixes required for embedded constant pools.

Original commit message:
    Removed Frame::needs_frame and the function-wide logic using it in
    favor of FrameAccessState::has_frame, which can be set on a more
    granular level, and driving it block by block.

R=mtrofin@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com, rmcilroy@chromium.org
BUG=v8:4533
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#35166}
2016-03-31 14:00:23 +00:00
jochen
719dc19d78 Also don't sort the snapshot files
R=machenbach@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#35165}
2016-03-31 13:58:30 +00:00
hlopko
5951a58983 Turn scavenge_reclaim_unmodified_objects on by default
Embedders that rely on unmodified wrappers to survive should pass the command-line flag --noscavenge_reclaim_unmodified_objects

BUG=4880
LOG=yes

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

Cr-Commit-Position: refs/heads/master@{#35164}
2016-03-31 13:51:12 +00:00
mythria
e6b6e55453 [Interpreter] Changes GenerateDoubleToObject to push and pop rsi value.
In the earlier implementation of GenerateDoubleToObject the context
is loaded from the parent's frame. rsi is clobbered because it is used
to store kHoleNan constnat. It is not always safe to peek at
the parents frame. Bytecode handlers have TypedFrame and the type of
frame is stored at FP + 1. GenerateDoubleToObject expects context
to be store at that place. In the current implementation rsi is pushed
onto the stack and is popped when exiting this function.

BUG=v8:4280,chromium:597565
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#35163}
2016-03-31 13:45:48 +00:00
hlopko
289f382497 Introduce EmbedderHeapTracer
BUG=468240
LOG=no

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

Cr-Commit-Position: refs/heads/master@{#35162}
2016-03-31 13:38:29 +00:00
oth
8cf73ae1e9 [interpreter] Adds test for tracing.
Fixes a stale DCHECK and a memory leak in tracing output.

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

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

Cr-Commit-Position: refs/heads/master@{#35161}
2016-03-31 11:58:06 +00:00
mlippautz
21f1dfe916 [heap] Remove store buffer top from roots
Change x64 to use the external references like all other platforms.

BUG=chromium:581076
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#35160}
2016-03-31 11:16:26 +00:00
jochen
731e53c726 Don't sort the input for the postmortem script
R=yangguo@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#35159}
2016-03-31 11:12:35 +00:00
yangguo
18c80bc879 [d8] remove utility context.
We only use it to store the Stringify function to format
REPL output. This is overkill and introduces issues with
security tokens.

R=jochen@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#35158}
2016-03-31 10:18:25 +00:00
cbruni
35fa419a2f [printing] Add COW identifier to elements kind
BUG=

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

Cr-Commit-Position: refs/heads/master@{#35157}
2016-03-31 10:13:02 +00:00
titzer
08e0ea38cd [wasm] Fix and enable more tests.
R=ahaas@chromium.org, bradnelson@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#35156}
2016-03-31 09:20:21 +00:00
hpayer
454ab5dd88 [heap] Remove unused no marking scope.
BUG=

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

Cr-Commit-Position: refs/heads/master@{#35155}
2016-03-31 09:16:45 +00:00
bmeurer
833618d91f [full-codegen] Reload context register after intrinsic call.
Previously all code stubs (i.e. both platform and Crankshaft code stubs)
preserved the context register for full-codegen (neither Ignition, nor
TurboFan nor Crankshaft require this or would benefit from this), but
the newly introduced TurboFanCodeStubs no longer do this and there's no
need to, so we have to make sure in full-codegen that we restore the
context register after intrinsic calls, which potentially call
TurboFanCodeStubs.

Drive-by-fix: VisitThisFunction can be made platform independent.

R=verwaest@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#35154}
2016-03-31 08:38:41 +00:00
mlippautz
f2a585935f Remove usages of Heap::NewSpaceStart and its external reference
Replace the uses with proper page flag lookups.

BUG=chromium:581412
LOG=N
TEST=mjsunit/allocation-site-info

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

Cr-Commit-Position: refs/heads/master@{#35153}
2016-03-31 07:55:26 +00:00
verwaest
bc8f9a78f0 Add initial code-stub version of Object.prototype.hasOwnProperty
It for now only deals with fast-mode smi and object arrays with smi
keys and internalized strings; and fast-mode named properties with an internalized key or symbol.

BUG=v8:2472
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#35152}
2016-03-31 07:55:25 +00:00
machenbach
a0aac3cb1d [test] Fix deterministic test shards.
Test case objects were sorted without key function, resulting
in random sort order. On sharded builds, the shards are
determined by the sort order and rely on a deterministic
sorting. This led to random cctest and unittest cases being
dropped or executed twice on sharded testers.

TBR=jkummerow@chromium.org, hablich@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#35151}
2016-03-31 07:38:22 +00:00