Name Description Size Coverage
GenerateBuiltinModules.py \ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef %(includeguard)s #define %(includeguard)s /* This file is generated by wasm/GenerateBuiltinModules.py. Do not edit! */ %(contents)s #endif // %(includeguard)s 6093 -
moz.build 3448 -
WasmAnyRef.cpp 3438 92 %
WasmAnyRef.h 15191 95 %
WasmBaselineCompile.cpp [SMDOC] WebAssembly baseline compiler (RabaldrMonkey) For now, see WasmBCClass.h for general comments about the compiler's structure. ---------------- General assumptions for 32-bit vs 64-bit code: - A 32-bit register can be extended in-place to a 64-bit register on 64-bit systems. - Code that knows that Register64 has a '.reg' member on 64-bit systems and '.high' and '.low' members on 32-bit systems, or knows the implications thereof, is #ifdef JS_PUNBOX64. All other code is #if(n)?def JS_64BIT. Coding standards are a little fluid: - In "small" code generating functions (eg emitMultiplyF64, emitQuotientI32, and surrounding functions; most functions fall into this class) where the meaning is obvious: Old school: - if there is a single source + destination register, it is called 'r' - if there is one source and a different destination, they are called 'rs' and 'rd' - if there is one source + destination register and another source register they are called 'r' and 'rs' - if there are two source registers and a destination register they are called 'rs0', 'rs1', and 'rd'. The new thing: - what is called 'r' in the old-school naming scheme is increasingly called 'rsd' in source+dest cases. - Generic temp registers are named /temp[0-9]?/ not /tmp[0-9]?/. - Registers can be named non-generically for their function ('rp' for the 'pointer' register and 'rv' for the 'value' register are typical) and those names may or may not have an 'r' prefix. - "Larger" code generating functions make their own rules. 432557 95 %
WasmBaselineCompile.h 3015 100 %
WasmBCClass-inl.h 5116 87 %
WasmBCClass.h 78423 100 %
WasmBCCodegen-inl.h 15479 94 %
WasmBCDefs.h 5114 -
WasmBCFrame.cpp 21872 92 %
WasmBCFrame.h 53066 97 %
WasmBCMemory.cpp 103753 97 %
WasmBCRegDefs-inl.h 3921 88 %
WasmBCRegDefs.h 23430 97 %
WasmBCRegMgmt-inl.h 11830 99 %
WasmBCStk.h 9606 100 %
WasmBCStkMgmt-inl.h 32622 93 %
WasmBinary.cpp 7791 90 %
WasmBinary.h 29978 94 %
WasmBinaryTypes.h wasm_WasmBinaryTypes_h 3537 100 %
WasmBuiltinModule.cpp 17572 77 %
WasmBuiltinModule.h 5996 80 %
WasmBuiltinModule.yaml 13827 -
WasmBuiltins.cpp 89572 86 %
WasmBuiltins.h 12011 100 %
WasmCode.cpp 56491 75 %
WasmCode.h 40913 92 %
WasmCodegenConstants.h 3368 -
WasmCodegenTypes.cpp 14825 97 %
WasmCodegenTypes.h 68729 93 %
WasmCompile.cpp 48413 73 %
WasmCompile.h 5185 100 %
WasmCompileArgs.h 18529 88 %
WasmComponent.cpp 66389 78 %
WasmComponent.h 44851 96 %
WasmConstants.h 33887 43 %
WasmContext.cpp 3245 100 %
WasmContext.h 4137 100 %
WasmDebug.cpp 17255 85 %
WasmDebug.h [SMDOC] Wasm debug traps There is a single debug-trap handler for the process, WasmHandleDebugTrap in WasmBuiltins.cpp. That function is invoked through the Debug Trap Stub, of which there is one per module, generated by GenerateDebugStub in WasmStubs.cpp. When any function in an instance needs to debug-trap for any reason (enter frame, leave frame, breakpoint, or single-stepping) then a pointer to the Debug Trap Stub is installed in the Instance. Debug-enabled code will look for this pointer and call it if (1) it is not null and (2) subject to filtering as follows. WasmHandleDebugTrap may therefore be called very frequently when any function in the instance is being debugged, and must filter the trap against the tables in the DebugState. It can make use of the return address for the call, which identifies the site uniquely. In order to greatly reduce the frequency of calls to the Debug Trap Stub, an array of flag bits, one per function, is attached to the instance. The code at the breakable point calls a stub at the end of the function (the Per Function Debug Stub) to check whether the bit is set for the function. If it is not set, the per-function stub can return to its caller immediately; if the bit is set, the per-function stub will jump to the installed (per-module) Debug Trap Stub. See also [SMDOC] "Wasm debug traps -- code details" 7329 100 %
WasmDebugFrame.cpp static 5764 90 %
WasmDebugFrame.h 7199 100 %
WasmDump.cpp includeInitExpr= 29146 72 %
WasmDump.h 10714 26 %
WasmException.h 1638 100 %
WasmExprType.h 9460 91 %
WasmFeatures.cpp 11404 86 %
WasmFeatures.h 3972 -
WasmFrame.h 18901 100 %
WasmFrameIter.cpp 98239 85 %
WasmFrameIter.h 22477 100 %
WasmGC.cpp 24482 94 %
WasmGC.h 26486 98 %
WasmGcObject-inl.h static 13676 89 %
WasmGcObject.cpp static 22983 90 %
WasmGcObject.h 32314 100 %
WasmGenerator.cpp limitedSize= 52815 80 %
WasmGenerator.h 13444 100 %
WasmHeuristics.h 14443 82 %
WasmInitExpr.cpp 20405 86 %
WasmInitExpr.h 4158 100 %
WasmInstance-inl.h 597 100 %
WasmInstance.cpp 166288 91 %
WasmInstance.h 31287 100 %
WasmInstanceData.h 14284 89 %
WasmIonCompile.cpp 377349 89 %
WasmIonCompile.h 1787 -
WasmJS.cpp [SMDOC] WebAssembly code rules (evolving) TlsContext.get() is only to be invoked from functions that have been invoked _directly_ by generated code as cold(!) Builtin calls, from code that is only used by signal handlers, or from helper functions that have been called _directly_ from a simulator. All other code shall pass in a JSContext* to functions that need it, or an Instance* or Instance* since the context is available through them. Code that uses TlsContext.get() shall annotate each such call with the reason why the call is OK. 202965 85 %
WasmJS.h 23100 100 %
WasmLog.cpp 2529 26 %
WasmLog.h 1246 -
WasmMemory.cpp 18282 73 %
WasmMemory.h 10851 100 %
WasmMetadata.cpp 11574 76 %
WasmMetadata.h 20106 99 %
WasmModule.cpp 34093 75 %
WasmModule.h 7813 100 %
WasmModuleTypes.cpp static 9204 74 %
WasmModuleTypes.h 32546 95 %
WasmOpIter.cpp 63696 8 %
WasmOpIter.h 147779 88 %
WasmPI.cpp 49618 71 %
WasmPI.h 2888 -
WasmProcess.cpp 12249 91 %
WasmProcess.h 5242 100 %
WasmRealm.cpp 3627 95 %
WasmRealm.h 3068 100 %
WasmSerialize.cpp 56408 94 %
WasmSerialize.h 11678 100 %
WasmShareable.h 3783 55 %
WasmSignalHandlers.cpp 39823 59 %
WasmSignalHandlers.h 2687 -
WasmStacks.cpp clang-format off 84276 95 %
WasmStacks.h 26498 97 %
WasmStaticTypeDefs.cpp 2656 87 %
WasmStaticTypeDefs.h 1342 -
WasmStructLayout.cpp 17508 89 %
WasmStructLayout.h 13655 100 %
WasmStubs.cpp 148441 92 %
WasmStubs.h 12619 88 %
WasmSummarizeInsn.cpp 86775 75 %
WasmSummarizeInsn.h wasm_WasmSummarizeInsn_h 2809 75 %
WasmTable.cpp static 12811 93 %
WasmTable.h 4908 100 %
WasmTypeDecls.h 3271 -
WasmTypeDef.cpp 20145 74 %
WasmTypeDef.h 58565 94 %
WasmUtility.h 2355 50 %
WasmValidate.cpp 239598 89 %
WasmValidate.h 8435 100 %
WasmValType.cpp 14392 66 %
WasmValType.h 34031 95 %
WasmValue.cpp 29606 86 %
WasmValue.h 17612 99 %