b97567a976
Prior to this change, the exponentiation operator was rewritten by the parser to a call of the Math.pow builtin. However, Math.pow does not accept BigInt arguments, while the exponentiation operator must accept them. This CL - removes the parser's special treatment of ** and **=, treating them like any other binary op instead. - adds a TFC builtin Exponentiate that does the right thing for all inputs. - adds interpreter bytecodes Exp and ExpSmi whose handlers call the Exponentiate builtin. For simplicity, they currently always collect kAny feedback. - adds a Turbofan operator JSExponentiate with a typed-lowering to the existing NumberPow and a generic-lowering to the Exponentiate builtin. There is currently no speculative lowering. Note that exponentiation for BigInts is actually not implemented yet, so we can't yet test it. Bug: v8:6791 Change-Id: Id90914c9c3fce310ce01e715c09eaa9f294f4f8a Reviewed-on: https://chromium-review.googlesource.com/785694 Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by: Sathya Gunasekaran <gsathya@chromium.org> Reviewed-by: Yang Guo <yangguo@chromium.org> Reviewed-by: Mythri Alle <mythria@chromium.org> Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> Commit-Queue: Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#49696} |
||
---|---|---|
.. | ||
api | ||
asmjs | ||
base | ||
compiler | ||
compiler-dispatcher | ||
heap | ||
interpreter | ||
libplatform | ||
parser | ||
wasm | ||
zone | ||
bigint-unittest.cc | ||
BUILD.gn | ||
cancelable-tasks-unittest.cc | ||
char-predicates-unittest.cc | ||
code-stub-assembler-unittest.cc | ||
code-stub-assembler-unittest.h | ||
counters-unittest.cc | ||
DEPS | ||
detachable-vector-unittest.cc | ||
eh-frame-iterator-unittest.cc | ||
eh-frame-writer-unittest.cc | ||
locked-queue-unittest.cc | ||
object-unittest.cc | ||
register-configuration-unittest.cc | ||
run-all-unittests.cc | ||
source-position-table-unittest.cc | ||
test-helpers.cc | ||
test-helpers.h | ||
test-utils.cc | ||
test-utils.h | ||
unicode-unittest.cc | ||
unittests.gyp | ||
unittests.isolate | ||
unittests.status | ||
utils-unittest.cc | ||
value-serializer-unittest.cc |