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}
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}
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}
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}
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}
If a script is unloaded between the collection of an allocation and the
tranlation of an allocation profile, the profiler will segfault. With
this change, we report unloaded scripts as having no line number,column
number, or name.
R=ofrobots@google.com
BUG=
Review URL: https://codereview.chromium.org/1846723002
Cr-Commit-Position: refs/heads/master@{#35147}
port 40bdbef975 (r35131)
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.
BUG=
Review URL: https://codereview.chromium.org/1845183002
Cr-Commit-Position: refs/heads/master@{#35146}
Rolling v8/third_party/android_tools to adfd31794011488cd0fc716b53558b2d8a67af8b
Rolling v8/third_party/icu to 628d39f5b088236d2021bf4388549fd92673ff1a
TBR=machenbach@chromium.org,vogelheim@chromium.org,hablich@chromium.org
Review URL: https://codereview.chromium.org/1847623003
Cr-Commit-Position: refs/heads/master@{#35144}
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=ahaas@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
BUG=
Review URL: https://codereview.chromium.org/1847563003
Cr-Commit-Position: refs/heads/master@{#35143}
Properly implement Rotate Right sequence for S390, to use the 64-bit
RLLG instruction.
R=jyan@ca.ibm.com,michael_dawson@ca.ibm.com,mbrandy@us.ibm.com
BUG=
Review URL: https://codereview.chromium.org/1842093003
Cr-Commit-Position: refs/heads/master@{#35142}
Port of changes that replace JR and JALR instructions with JIC and JIALC
for mips64r6. Macroassembler Jump and Call functions now use JIC and
JIALC if branch delay slot is not used. Code patching is adjusted to
work with new changes. Jr and Jalr macroassembler functions are removed.
Other changes where mips32r6 uses jr/jalr are not done because mips64r6
uses j/jal instructions.
BUG=
Review URL: https://codereview.chromium.org/1830133002
Cr-Commit-Position: refs/heads/master@{#35141}
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= v8:4533
LOG=N
Review URL: https://codereview.chromium.org/1775323002
Cr-Commit-Position: refs/heads/master@{#35139}
We now have everything in place to fully implement ToLengthStub as
TurboFanCodeStub without any runtime fallback (modulo allocation failure
of course).
R=jarin@chromium.org
Review URL: https://codereview.chromium.org/1843933002
Cr-Commit-Position: refs/heads/master@{#35137}
Migrate Math.ceil, Math.round and Math.trunc to TurboFan code stubs,
similar to what we did with Math.floor, and make these builtins properly
optimizable in TurboFan via appropriate simplified operators NumberCeil,
NumberRound and NumberTrunc, which are intended to be reusable for
ToInteger and ToLength optimizations that will be done in a followup CL.
Also allows us to kill the funky %RoundNumber runtime function, which
was quite heavy.
Improve test coverage for Math.ceil and Math.trunc a lot, especially
making sure that we also properly trigger the TurboFan builtin reducer
case.
R=jarin@chromium.org
BUG=v8:4059
LOG=n
Review URL: https://codereview.chromium.org/1841993002
Cr-Commit-Position: refs/heads/master@{#35135}
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, v8-arm-ports@googlegroups.com
Review URL: https://codereview.chromium.org/1807273002
Cr-Commit-Position: refs/heads/master@{#35131}
Port d4a391bb7a
Add SmiTag()/smiUntag() calls to make values on stack GC-safe.
Original commit message:
Use macro instructions for min, max ops to get the same functionality on
pre-r6 and r6 targets.
BUG=chromium:598651
LOG=N
Review URL: https://codereview.chromium.org/1842833002
Cr-Commit-Position: refs/heads/master@{#35130}
Debugger fetches the return value of a function when we break at return.
Interpreter holds the return value in accumulator. This is not stored in a
specified location on stack and hence it is not possible to look it up from
stack similar to full-codegen or optimized frames. This cl adds support to
store the value of accumulator on debug breaks. The value of accumulator is
passed to the runtime function and is then stored in thread local data.
Also changes full-codegen implementation to match that of ignition.
The return value from full-codegen is also stored in thread local data.
The return value is fetched directly thread local data instead of
finding it by iterating over frames.
BUG=v8:4280, v8:4690
LOG=N
Review URL: https://codereview.chromium.org/1842683002
Cr-Commit-Position: refs/heads/master@{#35127}
The new implementation deals with cycles in the TF graph in two steps:
1) The lowering of phis is delayed to avoid cyclic dependencies.
2) The replacement nodes of phis are created already when the phi is
pushed onto the stack so that other nodes can use these replacements
for their lowering.
R=titzer@chromium.org
Review URL: https://codereview.chromium.org/1844553002
Cr-Commit-Position: refs/heads/master@{#35126}
Context is always available through deopt data, so there should be
no need to store the context back to the frame every time. (Turbofan
already does not store back to the frame.)
Review URL: https://codereview.chromium.org/1845553002
Cr-Commit-Position: refs/heads/master@{#35125}
This CL introduces static variables and global lock for writing to the
dump files, so that multiple web workers do not run into trouble.
Review URL: https://codereview.chromium.org/1839133002
Cr-Commit-Position: refs/heads/master@{#35123}
The CodeGenerator sequence for Mod64/ModU64 is incorrectly using
32-bit operations. Fix Mod64/ModU64 to use 64-bit divides to calculate
the remainder.
Fix disassembly for DLR, which was reading the wrong bits for the two
register operands.
R=jyan@ca.ibm.com,michael_dawson@ca.ibm.com,mbrandy@us.ibm.com
BUG=
Review URL: https://codereview.chromium.org/1839813006
Cr-Commit-Position: refs/heads/master@{#35121}
Fix bug in simulator which incorrectly interpreted the operands
for SQEBR (Float32 sqrt) as 64-bit doubles. Add missing
disassembler case for SQEBR as well.
R=jyan@ca.ibm.com,michael_dawson@ca.ibm.com,mbrandy@us.ibm.com
BUG=
Review URL: https://codereview.chromium.org/1837263003
Cr-Commit-Position: refs/heads/master@{#35119}
This patch adds fast paths for @@replace and @@split that call into
the old, side-effect free (and faster) versions of those builtin
operations when possible (roughly, when the receiver is a RegExp
and the 'exec' method is untampered). Also add some micro-optimizations
that further improve performance.
Taken altogether, this takes us from a ~70% regression on the Octane
RegExp benchmark to a ~9% regression.
The test262.status lines for RegExps has been reorganized to make it
clearer the status of individual tests. More work will likely be
required to increase spec compliance before the --harmony-regexp-exec
flag is shipped; some of that work is happening on the spec side.
BUG=v8:4602
LOG=y
Review URL: https://codereview.chromium.org/1836123002
Cr-Commit-Position: refs/heads/master@{#35118}
This method returns contextDebugId for function. We can't use context_data from FunctionMirror.prototype.script because it can be incorrect when compilation cache is used and one script object was used for JSFunctions in different contexts.
BUG=chromium:595206
LOG=Y
R=yangguo@chromium.org
Review URL: https://codereview.chromium.org/1840713002
Cr-Commit-Position: refs/heads/master@{#35117}
AArch64 kernels older than 3.18 presented a different cpuinfo format
than what V8 expects. Most of V8's logic still works, but it misreads
the "CPU architecture" field.
BUG=
Review URL: https://codereview.chromium.org/1841733002
Cr-Commit-Position: refs/heads/master@{#35114}
This avoids redundant casts, loss of precision, and potential overflows.
BUG=chromium:597310
LOG=NO
Review URL: https://codereview.chromium.org/1841043002
Cr-Commit-Position: refs/heads/master@{#35113}
Updates the prologue_offset value in LCodeGen::GeneratePrologue after
generating ahi/aghi.
prologue_offset is used in FindCodeAgeSequence. Failing to update
prologue_offset will result in failing to correctly identify the code
aging sequence (young).
R=joransiu@ca.ibm.com, mbrandy@us.ibm.com, michael_dawson@ca.ibm.com
BUG=
Review URL: https://codereview.chromium.org/1843673002
Cr-Commit-Position: refs/heads/master@{#35112}