Name Description Size Coverage
AsmJS.cpp 217611 88 %
AsmJS.h 4691 100 %
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 5752 -
moz.build 1891 -
test.js 0 -
WasmAnyRef.cpp 3438 97 %
WasmAnyRef.h 14970 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. 415266 95 %
WasmBaselineCompile.h 3033 100 %
WasmBCClass-inl.h 5085 87 %
WasmBCClass.h 76491 97 %
WasmBCCodegen-inl.h 15684 94 %
WasmBCDefs.h 5114 -
WasmBCFrame.cpp 19266 96 %
WasmBCFrame.h 52251 97 %
WasmBCMemory.cpp 94977 97 %
WasmBCRegDefs-inl.h 3859 88 %
WasmBCRegDefs.h 23575 97 %
WasmBCRegMgmt-inl.h 11792 99 %
WasmBCStk.h 9241 100 %
WasmBCStkMgmt-inl.h 32557 93 %
WasmBinary.cpp 9237 93 %
WasmBinary.h 27945 94 %
WasmBinaryTypes.h wasm_WasmBinaryTypes_h 3582 98 %
WasmBuiltinModule.cpp reportOOM 16107 71 %
WasmBuiltinModule.h 5604 80 %
WasmBuiltinModule.yaml 14517 -
WasmBuiltins.cpp 88308 85 %
WasmBuiltins.h 12602 100 %
WasmCode.cpp 57280 80 %
WasmCode.h 46082 93 %
WasmCodegenConstants.h 3368 -
WasmCodegenTypes.cpp 14977 97 %
WasmCodegenTypes.h 60453 94 %
WasmCompile.cpp 43731 72 %
WasmCompile.h 4552 100 %
WasmCompileArgs.h 17773 88 %
WasmConstants.h 32038 79 %
WasmContext.cpp 4320 97 %
WasmContext.h 3484 100 %
WasmDebug.cpp 17539 86 %
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" 7560 100 %
WasmDebugFrame.cpp static 5843 90 %
WasmDebugFrame.h 7201 81 %
WasmDump.cpp includeInitExpr= 28212 74 %
WasmDump.h 10412 26 %
WasmException.h 1527 100 %
WasmExprType.h 9460 91 %
WasmFeatures.cpp 11491 86 %
WasmFeatures.h 4156 -
WasmFrame.h 18923 100 %
WasmFrameIter.cpp 87957 82 %
WasmFrameIter.h 18045 99 %
WasmGC.cpp 12778 96 %
WasmGC.h 23575 98 %
WasmGcObject-inl.h static 13272 91 %
WasmGcObject.cpp static 23943 90 %
WasmGcObject.h 32314 100 %
WasmGenerator.cpp limitedSize= 52491 81 %
WasmGenerator.h 13467 98 %
WasmHeuristics.h 14443 82 %
WasmInitExpr.cpp 20280 86 %
WasmInitExpr.h 4158 100 %
WasmInstance-inl.h 765 100 %
WasmInstance.cpp 164857 90 %
WasmInstance.h 29913 100 %
WasmInstanceData.h 13791 88 %
WasmIonCompile.cpp 370321 90 %
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. 179749 86 %
WasmJS.h 20175 100 %
WasmLog.cpp 2529 26 %
WasmLog.h 1246 -
WasmMemory.cpp 17971 88 %
WasmMemory.h 10789 100 %
WasmMetadata.cpp 11359 74 %
WasmMetadata.h 19571 99 %
WasmModule.cpp 35536 76 %
WasmModule.h 8321 100 %
WasmModuleTypes.cpp static 7733 73 %
WasmModuleTypes.h 29512 97 %
WasmOpIter.cpp 63913 8 %
WasmOpIter.h 134911 91 %
WasmPI.cpp 52158 79 %
WasmPI.h 13513 97 %
WasmProcess.cpp = nullptr 6871 88 %
WasmProcess.h 2250 -
WasmRealm.cpp 4214 97 %
WasmRealm.h 2655 100 %
WasmSerialize.cpp 53830 96 %
WasmSerialize.h 11678 100 %
WasmShareable.h 3782 55 %
WasmSignalHandlers.cpp 38406 57 %
WasmSignalHandlers.h 2687 -
WasmStaticTypeDefs.cpp 1906 86 %
WasmStaticTypeDefs.h 1264 -
WasmStructLayout.cpp 17508 89 %
WasmStructLayout.h 13655 100 %
WasmStubs.cpp 133381 91 %
WasmStubs.h 11504 88 %
WasmSummarizeInsn.cpp 62146 -
WasmSummarizeInsn.h wasm_WasmSummarizeInsn_h 1267 -
WasmTable.cpp static 13299 92 %
WasmTable.h 5108 100 %
WasmTypeDecls.h 3114 -
WasmTypeDef.cpp 18582 87 %
WasmTypeDef.h 52031 94 %
WasmUtility.h 2277 50 %
WasmValidate.cpp 145057 92 %
WasmValidate.h 8187 100 %
WasmValType.cpp 13292 70 %
WasmValType.h 32697 95 %
WasmValue.cpp 27855 90 %
WasmValue.h 17186 99 %