author | Benjamin Bouvier <benj@benj.me> |
Thu, 08 Sep 2016 16:07:15 +0200 | |
changeset 313891 | 140e1df48538d57d389d3d2db10c22494b684943 |
parent 313890 | 54969d0d94e89e38fc86784b8b622d91147bc334 |
child 313892 | e51f95231d67144750a8248b9443ebc4ca2b01f0 |
push id | 32267 |
push user | cbook@mozilla.com |
push date | Wed, 14 Sep 2016 13:46:59 +0000 |
treeherder | autoland@4b1f411b1ea6 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | luke |
bugs | 1288778 |
milestone | 51.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/js/src/asmjs/WasmBinary.h +++ b/js/src/asmjs/WasmBinary.h @@ -19,16 +19,24 @@ #ifndef wasm_binary_h #define wasm_binary_h #include "builtin/SIMD.h" namespace js { namespace wasm { +// Telemetry sample values for the JS_AOT_USAGE key, indicating whether asm.js +// or WebAssembly is used. + +enum class Telemetry { + ASMJS = 0, + WASM = 1 +}; + static const uint32_t MagicNumber = 0x6d736100; // "\0asm" static const uint32_t EncodingVersion = 0x0b; static const char TypeSectionId[] = "type"; static const char GlobalSectionId[] = "global"; static const char ImportSectionId[] = "import"; static const char FunctionSectionId[] = "function"; static const char TableSectionId[] = "table";
--- a/js/src/asmjs/WasmModule.cpp +++ b/js/src/asmjs/WasmModule.cpp @@ -865,10 +865,13 @@ Module::instantiate(JSContext* cx, return false; } else { uint32_t funcDefIndex = startFuncIndex - funcImports.length(); if (!instance->instance().callExport(cx, funcDefIndex, args)) return false; } } + uint32_t mode = uint32_t(metadata().isAsmJS() ? Telemetry::ASMJS : Telemetry::WASM); + cx->runtime()->addTelemetry(JS_TELEMETRY_AOT_USAGE, mode); + return true; }
--- a/js/src/jsfriendapi.h +++ b/js/src/jsfriendapi.h @@ -128,16 +128,17 @@ enum { JS_TELEMETRY_GC_MINOR_REASON, JS_TELEMETRY_GC_MINOR_REASON_LONG, JS_TELEMETRY_GC_MINOR_US, JS_TELEMETRY_GC_NURSERY_BYTES, JS_TELEMETRY_GC_PRETENURE_COUNT, JS_TELEMETRY_DEPRECATED_LANGUAGE_EXTENSIONS_IN_CONTENT, JS_TELEMETRY_DEPRECATED_LANGUAGE_EXTENSIONS_IN_ADDONS, JS_TELEMETRY_ADDON_EXCEPTIONS, + JS_TELEMETRY_AOT_USAGE, JS_TELEMETRY_END }; typedef void (*JSAccumulateTelemetryDataCallback)(int id, uint32_t sample, const char* key); extern JS_FRIEND_API(void) JS_SetAccumulateTelemetryCallback(JSContext* cx, JSAccumulateTelemetryDataCallback callback);
--- a/js/xpconnect/src/XPCJSRuntime.cpp +++ b/js/xpconnect/src/XPCJSRuntime.cpp @@ -3154,16 +3154,19 @@ AccumulateTelemetryCallback(int id, uint Telemetry::Accumulate(Telemetry::JS_DEPRECATED_LANGUAGE_EXTENSIONS_IN_CONTENT, sample); break; case JS_TELEMETRY_DEPRECATED_LANGUAGE_EXTENSIONS_IN_ADDONS: Telemetry::Accumulate(Telemetry::JS_DEPRECATED_LANGUAGE_EXTENSIONS_IN_ADDONS, sample); break; case JS_TELEMETRY_ADDON_EXCEPTIONS: Telemetry::Accumulate(Telemetry::JS_TELEMETRY_ADDON_EXCEPTIONS, nsDependentCString(key), sample); break; + case JS_TELEMETRY_AOT_USAGE: + Telemetry::Accumulate(Telemetry::JS_AOT_USAGE, sample); + break; default: MOZ_ASSERT_UNREACHABLE("Unexpected JS_TELEMETRY id"); } } static void CompartmentNameCallback(JSContext* cx, JSCompartment* comp, char* buf, size_t bufsize)
--- a/toolkit/components/telemetry/Histograms.json +++ b/toolkit/components/telemetry/Histograms.json @@ -10294,10 +10294,18 @@ "WEB_PERMISSION_CLEARED": { "alert_emails": ["firefox-dev@mozilla.org"], "bug_numbers": [1286118], "expires_in_version": "55", "kind": "enumerated", "keyed": true, "n_values": 6, "description": "Number of revoke actions on permissions in the control center, keyed by permission id. Values represent the permission type that was revoked. (0=unknown, 1=permanently allowed, 2=permanently blocked, 3=temporarily allowed, 4=temporarily blocked)" + }, + "JS_AOT_USAGE": { + "alert_emails": ["luke@mozilla.com", "bbouvier@mozilla.com"], + "bug_numbers": [1288778], + "expires_in_version": "56", + "kind": "enumerated", + "n_values": 4, + "description": "Counts the number of asm.js vs WebAssembly modules instanciations, at the time modules are getting instanciated." } }