Port 0c05e02f25
Original commit message:
Modifies Ignition to store code entry addresses in the dispatch table
rather than code objects. This allows the interpreter to avoid
calculating the code entry address from the code object on every
dispatch and provides a ~5-7% performance improvement on Octane with
Ignition.
This change adds ArchOpcode::kArchTailCallAddress to TurboFan to enable
tail call dispatch using these code addresses. It also adds a Dispatch
linkage creator (distinct from the stub linkage type used previously) to
allow targetting a code address target (which will diverge further from
the stub linkage type when we remove the context machine register in
Ignition).
R=rmcilroy@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com, bjaideep@ca.ibm.com
BUG=v8:4280
LOG=N
Review URL: https://codereview.chromium.org/1888053002
Cr-Commit-Position: refs/heads/master@{#35501}
We will move this back to start of incremental marking when we make faster progress.
Perf sheriffs: This CL may cause a regression on benchmarks that improved earlier by enabling black allocation.
BUG=chromium:599174
LOG=n
Review URL: https://codereview.chromium.org/1889853002
Cr-Commit-Position: refs/heads/master@{#35500}
This changes closure creation to lower to inline allocations when
possible instead of going through the FastNewClosureStub. It allows us
to leverage all advantages of inline allocations on closures. Note that
it is only safe to embed the raw entry point of the compile lazy stub
into the code, because that stub is immortal and immovable.
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/1573153002
Cr-Commit-Position: refs/heads/master@{#35499}
This allows us to remove the turbofan bailout that we introduced
as a response to crbug.com/589792.
BUG=chromium:589792
LOG=n
Review URL: https://codereview.chromium.org/1884713003
Cr-Commit-Position: refs/heads/master@{#35493}
Otherwise the megamorphic stubcache will miss. It only probes for
non-keyed handlers.
BUG=
Review URL: https://codereview.chromium.org/1883533003
Cr-Commit-Position: refs/heads/master@{#35492}
Reason for revert:
performance impact
Original issue's description:
> Correctly annotate eval origin.
>
> There were a couple of issues with it:
> - interpreter is not supported
> - the source position was just accidentally correct for full-codegen
> - the eval origin could have been cached
>
> Also fixes a few other places to use AbstractCode.
>
> R=mstarzinger@chromium.org
>
> Committed: https://crrev.com/2f3a171adc9e620c2235bf0562145b9d4eaba66d
> Cr-Commit-Position: refs/heads/master@{#35257}
>
> Committed: https://crrev.com/ad4e8a27963b704bb70ec8bac0991c57296b1d16
> Cr-Commit-Position: refs/heads/master@{#35481}
TBR=mstarzinger@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
Review URL: https://codereview.chromium.org/1888013002
Cr-Commit-Position: refs/heads/master@{#35491}
The parser no longer disables optimization. This is done solely by the
renumbering stage. It is sufficient to mark a SharedFunctionInfo as
disabled for optimization right after the renumbering stage.
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/1891753002
Cr-Commit-Position: refs/heads/master@{#35490}
- Get rid of fixing up pointers on the main thread
- Get rid of sweeping on the main thread
Instead:
- Record (and process afterwards) slots in parallel
- Add the pages to the concurrent sweeper as pointers have already been fixed
This reverts commit 6df04b296b.
BUG=chromium:581412
LOG=N
TEST=cctest/test-compaction/*
Review URL: https://codereview.chromium.org/1891683002
Cr-Commit-Position: refs/heads/master@{#35485}
This removes the flag in question. It just duplicates the corresponding
compilation hint in the underlying SharedFunctionInfo object. Now that
the backends should have a SharedFunctionInfo available most of the time
it is safe to use the cannonical predicate.
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/1883583002
Cr-Commit-Position: refs/heads/master@{#35482}
Modifies Ignition to store code entry addresses in the dispatch table
rather than code objects. This allows the interpreter to avoid
calculating the code entry address from the code object on every
dispatch and provides a ~5-7% performance improvement on Octane with
Ignition.
This change adds ArchOpcode::kArchTailCallAddress to TurboFan to enable
tail call dispatch using these code addresses. It also adds a Dispatch
linkage creator (distinct from the stub linkage type used previously) to
allow targetting a code address target (which will diverge further from
the stub linkage type when we remove the context machine register in
Ignition).
BUG=v8:4280
LOG=N
Review URL: https://codereview.chromium.org/1882073002
Cr-Commit-Position: refs/heads/master@{#35480}
Replaces the HCallRuntime instruction in HGraphBuilder::BuildBinaryOperation with a call to the corresponding TurboFan stub.
Review URL: https://codereview.chromium.org/1884103002
Cr-Commit-Position: refs/heads/master@{#35479}
port e6b6e55453 (r35163)
original commit message:
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=
Review URL: https://codereview.chromium.org/1884873007
Cr-Commit-Position: refs/heads/master@{#35478}
This makes sure that when cached optimized code is found while doing
lazy compilation via Compiler::Compile installs any existing literals
array as well.
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/1879973005
Cr-Commit-Position: refs/heads/master@{#35477}
Removes skips for two tests that no longer fail on windows system.
Updates description of another failing test with more details.
BUG=v8:4280,v8:4680
LOG=N
Review URL: https://codereview.chromium.org/1878893004
Cr-Commit-Position: refs/heads/master@{#35475}
To keep track of memory characteristics of a JS program use
GetHeapSpaceStatistics from a combination of
- a GC epilogue callback registered using AddGCEpilogueCallback
- an interrupt registered using RequestInterrupt
Rationale:
The feature is currently broken as those callbacks are (also) executed from
background threads, breaking our implicit contract for only performing callbacks
on the foreground thread. Furhtermore, it's not clear for the embedder whether
these allocations originate in JS, or are required for a GC.
Note:
- The already deprecated non-isolate versions are removed with this CL.
R=jochen@chromium.org
BUG=v8:4813
LOG=Y
Review URL: https://codereview.chromium.org/1886573006
Cr-Commit-Position: refs/heads/master@{#35474}
port 53d51c52f3 (r35139)
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.
BUG=
Review URL: https://codereview.chromium.org/1886963002
Cr-Commit-Position: refs/heads/master@{#35473}
This removes one of the duplicated pipeline implementation from the
compiler. By now we can reuse the existing CompileForDebugging for all
compilations being kicked off for debugging.
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/1885063002
Cr-Commit-Position: refs/heads/master@{#35472}
The compiler hints in question are already correctly initialized by the
NewSharedFunctionInfoForLiteral function. Reinitializing them again here
is no longer needed by now.
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/1887673002
Cr-Commit-Position: refs/heads/master@{#35471}
At some point we thought about using this instead of JSToNumber, but now
there doesn't seem to be any reason for this anymore.
R=jarin@chromium.org
Review URL: https://codereview.chromium.org/1890763002
Cr-Commit-Position: refs/heads/master@{#35469}
This should bring back the performance of speedometer-backbone at least very close to the performance before @@species.
BUG=chromium:596825
LOG=n
Review URL: https://codereview.chromium.org/1879053003
Cr-Commit-Position: refs/heads/master@{#35468}
We use the cvttsd2si (float64-to-int32) instruction to avoid that negative numbers get sign extended in the destination register.
@rodolph: Is sign extension also a thing on arm64? I noticed that also on arm64 a float64-to-int64 instruction is used.
Review URL: https://codereview.chromium.org/1877133004
Cr-Commit-Position: refs/heads/master@{#35466}
Port 5e9ddf6ce4
Original commit message:
* New atomic code stubs for x64, ia32, arm, arm64
* Add convenience functions JumpIfNotValidSmiValue, JumpIfUintNotValidSmiValue
to macro-assembler-ia32 (API based on x64 macro assembler)
* Remove runtime implementation of Atomics.load, the code stub should always be
called instead
* Add new test to mjsunit atomics test; check that Smi values of different
sizes are supported when possible, else fall back to HeapNumbers
These changes were needed to add another codestub:
* Bump kStubMajorKeyBits from 7 to 8
* Reduce ScriptContextFieldStub::kSlotIndexBits from 13 to 12
R=binji@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com, bjaideep@ca.ibm.com
BUG=v8:4614
LOG=N
Review URL: https://codereview.chromium.org/1887823002
Cr-Commit-Position: refs/heads/master@{#35462}
* Use proper int64_t printf format qualifier to fix 64-bit sim compile
on Mac.
* Minor cleanup to ExecuteInstruction() to remove an unncessary
'processed' variable.
R=jyan@ca.ibm.com,mbrandy@us.ibm.com,michael_dawson@ca.ibm.com
BUG=
Review URL: https://codereview.chromium.org/1889643002
Cr-Commit-Position: refs/heads/master@{#35460}
Fixes for misnamed toolchain from https://github.com/appcelerator/v8_titanium.
Added a way to specify the NDK path since the Mac versions of the NDK aren't checked into the tools repo.
Disabled a few dependencies which do not build on the Mac but which aren't needed for building usable V8 static libraries.
Made the including of libdl and librt omitted for Mac hosted builds.
BUG=
Review URL: https://codereview.chromium.org/1879793002
Cr-Commit-Position: refs/heads/master@{#35456}
This change implements switch as a balanced if/else tree or break table or
hybrid. A lot of asm.js modules are expected to extensively use switch
alongside function tables that can benefit from a better implementation.
BUG=v8:4203
TEST=mjsunit/asm-wasm
R=titzer@chromium.org,bradnelson@chromium.org,ahaas@chromium.org
LOG=N
Review URL: https://codereview.chromium.org/1838973002
Cr-Commit-Position: refs/heads/master@{#35455}
Reland of (https://codereview.chromium.org/1617503003)
* New atomic code stubs for x64, ia32, arm, arm64
* Add convenience functions JumpIfNotValidSmiValue, JumpIfUintNotValidSmiValue
to macro-assembler-ia32 (API based on x64 macro assembler)
* Remove runtime implementation of Atomics.load, the code stub should always be
called instead
* Add new test to mjsunit atomics test; check that Smi values of different
sizes are supported when possible, else fall back to HeapNumbers
These changes were needed to add another codestub:
* Bump kStubMajorKeyBits from 7 to 8
* Reduce ScriptContextFieldStub::kSlotIndexBits from 13 to 12
BUG=v8:4614
LOG=y
TBR=jarin@chromium.org,bmeurer@chromium.org,rodolph.perfetta@gmail.com,machenbach@chromium.org
Review URL: https://codereview.chromium.org/1617503003
Cr-Commit-Position: refs/heads/master@{#35427}
Review URL: https://codereview.chromium.org/1881383003
Cr-Commit-Position: refs/heads/master@{#35453}