The warning notes that we'd want a 'w' register here because the size of
the operand is 32-bit, however, the instruction only takes an 'x'
register and so force that using the 'x' modifier on the instruction.
BUG=
Review URL: https://codereview.chromium.org/1817963003
Cr-Commit-Position: refs/heads/master@{#35008}
Port b7aa4c3ab3
Original commit message:
Split ToNumberStub into the entry ToNumberStub, and two new stubs,
StringToNumberStub and NonNumberToNumberStub, which can be used when we
already know something about the input (i.e. in various branches of the
code stubs, or in TurboFan graphs).
Also introduce an appropriate StringToNumber simplified operator for
TurboFan, that is pure and is lowered to an invocation of the newly
added StringToNumberStub.
R=bmeurer@chromium.org, joransiu@ca.ibm.com, mbrandy@us.ibm.com, michael_dawson@ca.ibm.com
BUG=
Review URL: https://codereview.chromium.org/1825593003
Cr-Commit-Position: refs/heads/master@{#35004}
Port acbb968ded
Port 66e22b79e8
Original commit messages:
In case when F inlined normal call to G which tail calls H we should not write translation for G for the tail call site.
Otherwise we will see G in a stack trace inside H.
This CL also enables all existing tests related to ES6 tail call elimination and adds more combinations.
Always generate lazy bailout points for tail calls because Debugger could still require them to inspect optimized frames.
R=ishell@chromium.org, joransiu@ca.ibm.com, mbrandy@us.ibm.com, michael_dawson@ca.ibm.com
BUG=chromium:596473, v8:4698
LOG=N
Review URL: https://codereview.chromium.org/1820373002
Cr-Commit-Position: refs/heads/master@{#35003}
Now that ES2015 const has shipped, in Chrome 49, legacy const declarations
are no more. This lets us remove a bunch of code from many parts of the
codebase.
In this patch, I remove parser support for generating legacy const variables
from const declarations. This also removes the special "illegal declaration"
bit from Scope, which has ripples into all compiler backends.
Also gone are any tests which relied on legacy const declarations.
Note that we do still generate a Variable in mode CONST_LEGACY in one case:
function name bindings in sloppy mode. The likely fix there is to add a new
Variable::Kind for this case and handle it appropriately for stores in each
backend, but I leave that for a later patch to make this one completely
subtractive.
Review URL: https://codereview.chromium.org/1819123002
Cr-Commit-Position: refs/heads/master@{#35002}
String.prototype.match is specified to call out to the current
value of RegExp.prototype[Symbol.match] when passed a string argument,
rather than the original value. This patch updates the RegExp code
to do that.
R=yangguo@chromium.org
BUG=v8:4602
LOG=Y
Review URL: https://codereview.chromium.org/1821773003
Cr-Commit-Position: refs/heads/master@{#35001}
The 'key' value being passed into an array access should
be sign-extended on 64-bit platforms before being used to
index into memory. Otherwise, garbage in the upper 32-bits
may result in a segmentation fault.
Minor fix to DoFlooringDivI to enforce 32-bit operations for calculation.
R=jyan@ca.ibm.com,michael_dawson@ca.ibm.com,mbrandy@us.ibm.com
BUG=
Review URL: https://codereview.chromium.org/1822103002
Cr-Commit-Position: refs/heads/master@{#35000}
Port b7aa4c3ab3
Original commit message:
Split ToNumberStub into the entry ToNumberStub, and two new stubs,
StringToNumberStub and NonNumberToNumberStub, which can be used when we
already know something about the input (i.e. in various branches of the
code stubs, or in TurboFan graphs).
Also introduce an appropriate StringToNumber simplified operator for
TurboFan, that is pure and is lowered to an invocation of the newly
added StringToNumberStub.
R=bmeurer@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
BUG=
Review URL: https://codereview.chromium.org/1826483002
Cr-Commit-Position: refs/heads/master@{#34998}
Port b6419fa229
Original commit message:
Now implemented as a builtin that delegates to the InstanceOfStub. That
stub was parameterized to fallback to either Runtime_InstanceOf or to
Runtime_OrdinaryHasInstance depending on the --harmony-instanceof flag.
Once the feature stabilizes and the flag is no longer needed, we can get
rid of this parameterization again.
R=mstarzinger@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
BUG=v8:4447
LOG=n
Review URL: https://codereview.chromium.org/1825083002
Cr-Commit-Position: refs/heads/master@{#34997}
Port acbb968ded
Port 66e22b79e8
Original commit messages:
In case when F inlined normal call to G which tail calls H we should not write translation for G for the tail call site.
Otherwise we will see G in a stack trace inside H.
This CL also enables all existing tests related to ES6 tail call elimination and adds more combinations.
Always generate lazy bailout points for tail calls because Debugger could still require them to inspect optimized frames.
R=ishell@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
BUG=chromium:596473, v8:4698
LOG=N
Review URL: https://codereview.chromium.org/1825513002
Cr-Commit-Position: refs/heads/master@{#34996}
This adds two new stubs, AddStub and SubtractStub, for the plus and the
minus operators, and hooks them up with TurboFan and Ignition.
Especially the addition case is very heavy and we might want to look
into splitting that up further into specialized stubs (similar to what
we did with ToNumberStub recently).
R=epertoso@chromium.org
Review URL: https://codereview.chromium.org/1823083002
Cr-Commit-Position: refs/heads/master@{#34994}
Otherwise, no handler would be dumped when using a snapshot.
BUG=v8:4280
LOG=N
Review URL: https://codereview.chromium.org/1821663002
Cr-Commit-Position: refs/heads/master@{#34990}
This CL adds support for builtins with JavaScript linkage written using
the TurboFan CodeStubAssembler, but with a JSCall descriptor (which was
already supported thanks to a previous patch by Ben Smith). As a first
example, we convert the Math.sqrt builtin and thereby get rid of the
%_MathSqrt intrinsic, which causes trouble for the representation
selection pass in the JavaScript pipeline.
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/1824993002
Cr-Commit-Position: refs/heads/master@{#34989}
* Not jump around all memory to gather whether we need to profile
* Cache this information and dispatch to a templatized function
BUG=chromium:524425
LOG=N
Review URL: https://codereview.chromium.org/1820263002
Cr-Commit-Position: refs/heads/master@{#34988}
The linter (i.e. cpplint.py) no longer needs to check for alpha-sorted
include directives because our source formatting (i.e. clang-format)
will take care of this by now. This is the current default configuration
of the underlying linter anyways.
Note that the two tools disagree about the correct ordering about files
containing dash characters. The ordering suggested by the formatter is
more natural. Having the formatter trigger linter errors is not a good
situation to be in.
R=jochen@chromium.org
Review URL: https://codereview.chromium.org/1822003002
Cr-Commit-Position: refs/heads/master@{#34985}
Introduces a bytecode whose handler executes the equivalent of %_IsArray and %_IsJSReceiver without a runtime call.
BUG=v8:4822
LOG=y
Review URL: https://codereview.chromium.org/1645763003
Cr-Commit-Position: refs/heads/master@{#34983}
Fixes CopyBytecodeArray to set the interrupt_budget field.
BUG=v8:4280,v8:4690
LOG=N
Review URL: https://codereview.chromium.org/1809123003
Cr-Commit-Position: refs/heads/master@{#34982}
The JSFunction::PassesFilter predicate is not fine-grained enough to
actually distinguish different closures and hence can be changed into
SharedFunctionInfo::PassesFilter instead. This will allow the compiler
to use is more broadly.
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/1823033002
Cr-Commit-Position: refs/heads/master@{#34981}
... because Debugger could still require them to inspect optimized frames.
BUG=chromium:596473, v8:4698
LOG=N
Review URL: https://codereview.chromium.org/1816113002
Cr-Commit-Position: refs/heads/master@{#34979}
The idiv instruction has 2 registers as output. This needs to be
modeled so that the move optimizer won't incorrectly elide away
moves.
BUG=
Review URL: https://codereview.chromium.org/1818323002
Cr-Commit-Position: refs/heads/master@{#34978}
The CL also add guard nodes to places where we assume that certain
values are numbers.
Review URL: https://codereview.chromium.org/1821133002
Cr-Commit-Position: refs/heads/master@{#34977}
This was once meant to be used for JavaScript code stubs, but since we
found a better way to do code stubs using TurboFan, we don't need this
runtime entry and intrinsic anymore.
R=jarin@chromium.org
Review URL: https://codereview.chromium.org/1821123002
Cr-Commit-Position: refs/heads/master@{#34976}
port b6419fa229 (r34959)
original commit message:
Now implemented as a builtin that delegates to the InstanceOfStub. That
stub was parameterized to fallback to either Runtime_InstanceOf or to
Runtime_OrdinaryHasInstance depending on the --harmony-instanceof flag.
Once the feature stabilizes and the flag is no longer needed, we can get
rid of this parameterization again.
BUG=
Review URL: https://codereview.chromium.org/1821113002
Cr-Commit-Position: refs/heads/master@{#34975}
port acbb968ded (r34920)
original commit message:
In case when F inlined normal call to G which tail calls H we should not write translation for G for the tail call site.
Otherwise we will see G in a stack trace inside H.
This CL also enables all existing tests related to ES6 tail call elimination and adds more combinations.
BUG=
Review URL: https://codereview.chromium.org/1819273003
Cr-Commit-Position: refs/heads/master@{#34972}
port b7aa4c3ab3 (r34922)
original commit message:
Split ToNumberStub into the entry ToNumberStub, and two new stubs,
StringToNumberStub and NonNumberToNumberStub, which can be used when we
already know something about the input (i.e. in various branches of the
code stubs, or in TurboFan graphs).
Also introduce an appropriate StringToNumber simplified operator for
TurboFan, that is pure and is lowered to an invocation of the newly
added StringToNumberStub.
BUG=
Review URL: https://codereview.chromium.org/1816423002
Cr-Commit-Position: refs/heads/master@{#34971}
Flags --dump_wasm_module and --dump_wasm_module_path=/path/to/folder allow us to run a bunch of tests and capture all of the wasm module files including the ones that come from the .js and .cc tests which are built on the fly, as well as the asm2wasm tests.
The files are all uniquely named `HASH.{ok,failed}.wasm`.
This will be especilly useful for fuzz testing, but could also be used for other tests including non-V8 tests.
For now I manually hacked tools/testrunner/local/execution.py so that tools/run-tests.py can output the modules. We may want to ad a flag to run-tests.py proper if this turns out to be useful.
R=bradnelson@chromium.org, titzer@chromium.org, kcc@chromium.org
Review URL: https://codereview.chromium.org/1816583003
Cr-Commit-Position: refs/heads/master@{#34968}
Add missing conversions from other types to f32 in fround.
Restrict fround() to only float, double, signed, unsigned (no unions / intish).
Restrict Bitwise operations to intish, particularly |0, when not applied to a foreign function.
Adding more exhaustive tests of stdlib Math, move to a separate file.
Adding tests of interesting values for the stdlib asm.js functions.
BUG= https://bugs.chromium.org/p/v8/issues/detail?id=4203
TEST=test-asm-validator,asm-wasm
R=titzer@chromium.org,rossberg@chromium.org
LOG=N
Review URL: https://codereview.chromium.org/1804243003
Cr-Commit-Position: refs/heads/master@{#34967}
Both of them shipped in Chrome 49 without incident.
Also move relevant tests from harmony/ to es6/.
Review URL: https://codereview.chromium.org/1815773002
Cr-Commit-Position: refs/heads/master@{#34964}
This is necessary to ensure that "Called non callable" exception will get a proper message and stack trace even for calls at tail position.
BUG=chromium:595615, v8:4698
LOG=N
Review URL: https://codereview.chromium.org/1818003002
Cr-Commit-Position: refs/heads/master@{#34962}
STL requires comparison to be a strict weak ordering.
In particular the predicate should be antisymmetric:
f(x, y) implies !f(y, x).
BUG=v8:4848
LOG=NO
Review URL: https://codereview.chromium.org/1818043004
Cr-Commit-Position: refs/heads/master@{#34960}