Name Description Size Coverage
AsmJS.cpp 217726 88 %
AsmJS.h 4806 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 1980 -
test.js 0 -
WasmAnyRef.cpp 3553 97 %
WasmAnyRef.h 15085 94 %
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. 415381 95 %
WasmBaselineCompile.h 3148 100 %
WasmBCClass-inl.h 5200 87 %
WasmBCClass.h 76606 97 %
WasmBCCodegen-inl.h 15799 94 %
WasmBCDefs.h 5229 -
WasmBCFrame.cpp 19381 96 %
WasmBCFrame.h 52366 97 %
WasmBCMemory.cpp 95092 97 %
WasmBCRegDefs-inl.h 3974 88 %
WasmBCRegDefs.h 23690 97 %
WasmBCRegMgmt-inl.h 11907 99 %
WasmBCStk.h 9356 100 %
WasmBCStkMgmt-inl.h 32672 93 %
WasmBinary.cpp 9352 93 %
WasmBinary.h 28060 94 %
WasmBinaryTypes.h wasm_WasmBinaryTypes_h 3697 98 %
WasmBuiltinModule.cpp reportOOM 16204 71 %
WasmBuiltinModule.h 5719 80 %
WasmBuiltinModule.yaml 14517 -
WasmBuiltins.cpp 88423 85 %
WasmBuiltins.h 12717 100 %
WasmCode.cpp 57395 80 %
WasmCode.h 46197 93 %
WasmCodegenConstants.h 3483 -
WasmCodegenTypes.cpp 15092 97 %
WasmCodegenTypes.h 60568 94 %
WasmCompile.cpp 43896 72 %
WasmCompile.h 4667 100 %
WasmCompileArgs.h 17888 88 %
WasmConstants.h 32153 79 %
WasmContext.cpp 4435 97 %
WasmContext.h 3599 100 %
WasmDebug.cpp 17654 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" 7675 100 %
WasmDebugFrame.cpp static 5958 90 %
WasmDebugFrame.h 7316 81 %
WasmDump.cpp includeInitExpr= 28327 74 %
WasmDump.h 10527 26 %
WasmException.h 1642 100 %
WasmExprType.h 9575 91 %
WasmFeatures.cpp 11560 86 %
WasmFeatures.h 4271 -
WasmFrame.h 19038 100 %
WasmFrameIter.cpp 88072 81 %
WasmFrameIter.h 18160 99 %
WasmGC.cpp 12893 96 %
WasmGC.h 23690 98 %
WasmGcObject-inl.h static 13387 91 %
WasmGcObject.cpp static 23875 90 %
WasmGcObject.h 32429 100 %
WasmGenerator.cpp limitedSize= 52606 81 %
WasmGenerator.h 13582 98 %
WasmHeuristics.h 14558 82 %
WasmInitExpr.cpp 20395 86 %
WasmInitExpr.h 4273 100 %
WasmInstance-inl.h 880 100 %
WasmInstance.cpp 165263 90 %
WasmInstance.h 30051 100 %
WasmInstanceData.h 13906 88 %
WasmIonCompile.cpp 370358 90 %
WasmIonCompile.h 1902 -
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. 179864 86 %
WasmJS.h 20290 100 %
WasmLog.cpp 2644 26 %
WasmLog.h 1361 -
WasmMemory.cpp 18086 88 %
WasmMemory.h 10904 100 %
WasmMetadata.cpp 11474 74 %
WasmMetadata.h 19686 99 %
WasmModule.cpp 35651 76 %
WasmModule.h 8436 100 %
WasmModuleTypes.cpp static 7848 73 %
WasmModuleTypes.h 29627 97 %
WasmOpIter.cpp 64028 8 %
WasmOpIter.h 134969 91 %
WasmPI.cpp 51706 79 %
WasmPI.h 13628 97 %
WasmProcess.cpp = nullptr 6986 88 %
WasmProcess.h 2365 -
WasmRealm.cpp 4329 97 %
WasmRealm.h 2770 100 %
WasmSerialize.cpp 53945 96 %
WasmSerialize.h 11793 100 %
WasmShareable.h 3897 55 %
WasmSignalHandlers.cpp 38521 57 %
WasmSignalHandlers.h 2802 -
WasmStaticTypeDefs.cpp 2021 86 %
WasmStaticTypeDefs.h 1379 -
WasmStructLayout.cpp 17623 89 %
WasmStructLayout.h 13770 100 %
WasmStubs.cpp 133496 91 %
WasmStubs.h 11619 88 %
WasmSummarizeInsn.cpp 62261 -
WasmSummarizeInsn.h wasm_WasmSummarizeInsn_h 1382 -
WasmTable.cpp static 13925 90 %
WasmTable.h 5338 100 %
WasmTypeDecls.h 3229 -
WasmTypeDef.cpp 18697 87 %
WasmTypeDef.h 52055 94 %
WasmUtility.h 2392 50 %
WasmValidate.cpp 145172 92 %
WasmValidate.h 8302 100 %
WasmValType.cpp 13397 70 %
WasmValType.h 32775 95 %
WasmValue.cpp 27970 90 %
WasmValue.h 17301 99 %