• Georg Neis's avatar
    No longer desugar the exponentiation (**) operator. · b97567a9
    Georg Neis authored
    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/785694Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
    Reviewed-by: 's avatarSathya Gunasekaran <gsathya@chromium.org>
    Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
    Reviewed-by: 's avatarMythri Alle <mythria@chromium.org>
    Reviewed-by: 's avatarJaroslav Sevcik <jarin@chromium.org>
    Commit-Queue: Georg Neis <neis@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#49696}
    b97567a9
Name
Last commit
Last update
..
OWNERS Loading commit data...
block-coverage-builder.h Loading commit data...
bytecode-array-accessor.cc Loading commit data...
bytecode-array-accessor.h Loading commit data...
bytecode-array-builder.cc Loading commit data...
bytecode-array-builder.h Loading commit data...
bytecode-array-iterator.cc Loading commit data...
bytecode-array-iterator.h Loading commit data...
bytecode-array-random-iterator.cc Loading commit data...
bytecode-array-random-iterator.h Loading commit data...
bytecode-array-writer.cc Loading commit data...
bytecode-array-writer.h Loading commit data...
bytecode-decoder.cc Loading commit data...
bytecode-decoder.h Loading commit data...
bytecode-flags.cc Loading commit data...
bytecode-flags.h Loading commit data...
bytecode-generator.cc Loading commit data...
bytecode-generator.h Loading commit data...
bytecode-jump-table.h Loading commit data...
bytecode-label.cc Loading commit data...
bytecode-label.h Loading commit data...
bytecode-node.cc Loading commit data...
bytecode-node.h Loading commit data...
bytecode-operands.cc Loading commit data...
bytecode-operands.h Loading commit data...
bytecode-register-allocator.h Loading commit data...
bytecode-register-optimizer.cc Loading commit data...
bytecode-register-optimizer.h Loading commit data...
bytecode-register.cc Loading commit data...
bytecode-register.h Loading commit data...
bytecode-source-info.cc Loading commit data...
bytecode-source-info.h Loading commit data...
bytecode-traits.h Loading commit data...
bytecodes.cc Loading commit data...
bytecodes.h Loading commit data...
constant-array-builder.cc Loading commit data...
constant-array-builder.h Loading commit data...
control-flow-builders.cc Loading commit data...
control-flow-builders.h Loading commit data...
handler-table-builder.cc Loading commit data...
handler-table-builder.h Loading commit data...
interpreter-assembler.cc Loading commit data...
interpreter-assembler.h Loading commit data...
interpreter-generator.cc Loading commit data...
interpreter-generator.h Loading commit data...
interpreter-intrinsics-generator.cc Loading commit data...
interpreter-intrinsics-generator.h Loading commit data...
interpreter-intrinsics.cc Loading commit data...
interpreter-intrinsics.h Loading commit data...
interpreter.cc Loading commit data...
interpreter.h Loading commit data...
setup-interpreter-internal.cc Loading commit data...
setup-interpreter.h Loading commit data...