From 0493238e941e292c8dd9badc5b3b3d2788331c63 Mon Sep 17 00:00:00 2001 From: Tooru Fujisawa Date: Wed, 25 Mar 2015 00:36:33 +0900 Subject: [PATCH] Bug 1142351 - Part 1: Collect telemetry about deprecated flag argument for String.prototype.{search,match,replace}. r=jandem --- js/src/jscompartment.h | 1 + js/src/jsstr.cpp | 5 +++++ toolkit/components/telemetry/Histograms.json | 2 +- 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/js/src/jscompartment.h b/js/src/jscompartment.h index 0ce8b77afeae..5d54486eb19b 100644 --- a/js/src/jscompartment.h +++ b/js/src/jscompartment.h @@ -547,6 +547,7 @@ struct JSCompartment DeprecatedLetBlock = 4, // Added in JS 1.7 DeprecatedLetExpression = 5, // Added in JS 1.7 DeprecatedNoSuchMethod = 6, // JS 1.7+ + DeprecatedFlagsArgument = 7, // JS 1.3 or older DeprecatedLanguageExtensionCount }; diff --git a/js/src/jsstr.cpp b/js/src/jsstr.cpp index 995ee17a9222..3b105088b62a 100644 --- a/js/src/jsstr.cpp +++ b/js/src/jsstr.cpp @@ -2132,6 +2132,11 @@ class MOZ_STACK_CLASS StringRegExpGuard /* Build RegExp from pattern string. */ RootedString opt(cx); if (optarg < args.length()) { + if (JSScript *script = cx->currentScript()) { + const char *filename = script->filename(); + cx->compartment()->addTelemetry(filename, JSCompartment::DeprecatedFlagsArgument); + } + opt = ToString(cx, args[optarg]); if (!opt) return false; diff --git a/toolkit/components/telemetry/Histograms.json b/toolkit/components/telemetry/Histograms.json index 5c74d25cb747..3457824374aa 100644 --- a/toolkit/components/telemetry/Histograms.json +++ b/toolkit/components/telemetry/Histograms.json @@ -345,7 +345,7 @@ "expires_in_version": "never", "kind": "enumerated", "n_values": 10, - "description": "Use of SpiderMonkey's deprecated language extensions in web content: ForEach=0, DestructuringForIn=1, LegacyGenerator=2, ExpressionClosure=3, LetBlock=4, LetExpression=5, NoSuchMethod=6" + "description": "Use of SpiderMonkey's deprecated language extensions in web content: ForEach=0, DestructuringForIn=1, LegacyGenerator=2, ExpressionClosure=3, LetBlock=4, LetExpression=5, NoSuchMethod=6, FlagsArgument=7" }, "TELEMETRY_PING": { "expires_in_version": "default",