Name Description Size
AsmJS.cpp / // A wasm module can either use no memory, a unshared memory (ArrayBuffer) or // shared memory (SharedArrayBuffer). enum class MemoryUsage { None = false, Unshared = 1, Shared = 2 }; // The asm.js valid heap lengths are precisely the WASM valid heap lengths for // ARM greater or equal to MinHeapLength static const size_t MinHeapLength = PageSize; // An asm.js heap can in principle be up to INT32_MAX bytes but requirements // on the format restrict it further to the largest pseudo-ARM-immediate. // See IsValidAsmJSHeapLength(). static const uint64_t MaxHeapLength = 0x7f000000; static uint64_t RoundUpToNextValidAsmJSHeapLength(uint64_t length) { if (length <= MinHeapLength) { return MinHeapLength; } return wasm::RoundUpToNextValidARMImmediate(length); } static uint64_t DivideRoundingUp(uint64_t a, uint64_t b) { return (a + (b - 1)) / b; } /**************************************************************************** 216086
AsmJS.h 4806
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 5478
moz.build 1890
test.js 0
WasmAnyRef.cpp 3552
WasmAnyRef.h 15046
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. 407917
WasmBaselineCompile.h 3152
WasmBCClass-inl.h 4256
WasmBCClass.h 73870
WasmBCCodegen-inl.h 14898
WasmBCDefs.h 6256
WasmBCFrame.cpp 19238
WasmBCFrame.h 52520
WasmBCMemory.cpp 94996
WasmBCRegDefs-inl.h 3974
WasmBCRegDefs.h 23690
WasmBCRegMgmt-inl.h 11907
WasmBCStk.h 9198
WasmBCStkMgmt-inl.h 32429
WasmBinary.cpp 9289
WasmBinary.h 27884
WasmBinaryTypes.h wasm_WasmBinaryTypes_h 2955
WasmBuiltinModule.cpp reportOOM 14426
WasmBuiltinModule.h 5298
WasmBuiltinModule.yaml 13780
WasmBuiltins.cpp 84273
WasmBuiltins.h 12093
WasmCode.cpp 53399
WasmCode.h 45478
WasmCodegenConstants.h 3399
WasmCodegenTypes.cpp 11919
WasmCodegenTypes.h 52136
WasmCompile.cpp 44729
WasmCompile.h 4851
WasmCompileArgs.h 17873
WasmConstants.h 31540
WasmContext.h 2137
WasmDebug.cpp 17633
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" 7594
WasmDebugFrame.cpp static 5967
WasmDebugFrame.h 7316
WasmDump.cpp includeInitExpr= 27954
WasmDump.h 11095
WasmException.h 1642
WasmExprType.h 9575
WasmFeatures.cpp 11521
WasmFeatures.h 4271
WasmFrame.h 18942
WasmFrameIter.cpp 77304
WasmFrameIter.h 13176
WasmGC.cpp 12209
WasmGC.h 18887
WasmGcObject-inl.h static 14319
WasmGcObject.cpp 25962
WasmGcObject.h 24266
WasmGenerator.cpp limitedSize= 50870
WasmGenerator.h 12994
WasmHeuristics.h 12092
WasmInitExpr.cpp 20395
WasmInitExpr.h 4273
WasmInstance-inl.h 789
WasmInstance.cpp 154188
WasmInstance.h 29999
WasmInstanceData.h 13044
WasmIonCompile.cpp 360275
WasmIonCompile.h 1886
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. 170602
WasmJS.h 19524
WasmLog.cpp 2079
WasmLog.h 1361
WasmMemory.cpp 18878
WasmMemory.h 9345
WasmMetadata.cpp 14714
WasmMetadata.h 21578
WasmModule.cpp 33753
WasmModule.h 8263
WasmModuleTypes.cpp static 5777
WasmModuleTypes.h 28652
WasmOpIter.cpp 63819
WasmOpIter.h 133418
WasmPI.cpp 73351
WasmPI.h 9802
WasmProcess.cpp = nullptr 6770
WasmProcess.h 2352
WasmRealm.cpp 4985
WasmRealm.h 2992
WasmSerialize.cpp 53323
WasmSerialize.h 11812
WasmShareable.h 3897
WasmSignalHandlers.cpp 36650
WasmSignalHandlers.h 2802
WasmStaticTypeDefs.cpp 2021
WasmStaticTypeDefs.h 1379
WasmStubs.cpp 126687
WasmStubs.h 11595
WasmSummarizeInsn.cpp 62261
WasmSummarizeInsn.h wasm_WasmSummarizeInsn_h 1382
WasmTable.cpp static 13927
WasmTable.h 5338
WasmTypeDecls.h 3229
WasmTypeDef.cpp 19950
WasmTypeDef.h 52674
WasmUtility.h 2392
WasmValidate.cpp 137497
WasmValidate.h 8662
WasmValType.cpp 12261
WasmValType.h 30878
WasmValue.cpp 27522
WasmValue.h 16900