-
- Downloads
Bug 1825014 part 2 - Implement ArgumentsLength() and GetArgument(i) intrinsics. r=iain
These can be used to replace uses of `arguments.length` and `arguments[i]` in self-hosted code. The frontend emits specialized bytecode ops for those instructions that access the frame directly. This means we no longer have to allocate an arguments object in the interpreter and Baseline for self-hosted functions. This speeds up many perf-sensitive builtins such as `ArrayMap`. Later patches convert all `arguments` uses in self-hosted code and add assertions to ensure we never create an arguments object for any self-hosted function. Differential Revision: https://phabricator.services.mozilla.com/D173952
Showing
- js/src/debugger/Script.cpp 2 additions, 0 deletionsjs/src/debugger/Script.cpp
- js/src/frontend/BytecodeEmitter.cpp 30 additions, 0 deletionsjs/src/frontend/BytecodeEmitter.cpp
- js/src/frontend/BytecodeEmitter.h 2 additions, 0 deletionsjs/src/frontend/BytecodeEmitter.h
- js/src/frontend/SharedContext.h 7 additions, 0 deletionsjs/src/frontend/SharedContext.h
- js/src/frontend/Stencil.cpp 3 additions, 0 deletionsjs/src/frontend/Stencil.cpp
- js/src/jit-test/tests/ion/selfhosted-too-many-args.js 14 additions, 0 deletionsjs/src/jit-test/tests/ion/selfhosted-too-many-args.js
- js/src/jit/BaselineCodeGen.cpp 44 additions, 0 deletionsjs/src/jit/BaselineCodeGen.cpp
- js/src/jit/MIR.cpp 21 additions, 0 deletionsjs/src/jit/MIR.cpp
- js/src/jit/MIR.h 4 additions, 0 deletionsjs/src/jit/MIR.h
- js/src/jit/TrialInlining.cpp 15 additions, 6 deletionsjs/src/jit/TrialInlining.cpp
- js/src/jit/WarpBuilder.cpp 24 additions, 0 deletionsjs/src/jit/WarpBuilder.cpp
- js/src/jit/WarpOracle.cpp 2 additions, 0 deletionsjs/src/jit/WarpOracle.cpp
- js/src/vm/CommonPropertyNames.h 2 additions, 0 deletionsjs/src/vm/CommonPropertyNames.h
- js/src/vm/Interpreter.cpp 13 additions, 0 deletionsjs/src/vm/Interpreter.cpp
- js/src/vm/JSScript.cpp 1 addition, 1 deletionjs/src/vm/JSScript.cpp
- js/src/vm/Opcodes.h 26 additions, 4 deletionsjs/src/vm/Opcodes.h
- js/src/vm/SharedStencil.h 1 addition, 0 deletionsjs/src/vm/SharedStencil.h
- js/src/vm/StencilEnums.h 4 additions, 0 deletionsjs/src/vm/StencilEnums.h
Loading
Please register or sign in to comment