Closed Bug 1473465 Opened 7 years ago Closed 7 years ago

2.16 - 3.65% compiler_metrics num_static_constructors (windows2012-32) regression on push 3d7f2fdc5bf7ca7521013b28e0d8be0785d2b58a (Wed Jul 4 2018)

Categories

(Core :: Graphics: CanvasWebGL, defect, P3)

x86
Windows 7
defect

Tracking

()

RESOLVED WONTFIX

People

(Reporter: igoldan, Assigned: jgilbert)

References

Details

(Keywords: regression, Whiteboard: [gfx-noted])

We have detected a build metrics regression from push: https://hg.mozilla.org/integration/autoland/pushloghtml?changeset=3d7f2fdc5bf7ca7521013b28e0d8be0785d2b58a As author of one of the patches included in that push, we need your help to address this regression. Regressions: 4% compiler_metrics num_static_constructors windows2012-32 opt 514.00 -> 532.75 2% compiler_metrics num_static_constructors windows2012-32 debug 870.00 -> 888.75 You can find links to graphs and comparison views for each of the above tests at: https://treeherder.mozilla.org/perf.html#/alerts?id=14180 On the page above you can see an alert for each affected platform as well as a link to a graph showing the history of scores for this test. There is also a link to a treeherder page showing the jobs in a pushlog format. To learn more about the regressing test(s), please see: https://developer.mozilla.org/en-US/docs/Mozilla/Performance/Automated_Performance_Testing_and_Sheriffing/Build_Metrics
Flags: needinfo?(jgilbert)
Component: General → Canvas: WebGL
Product: Testing → Core
Priority: -- → P3
Whiteboard: [gfx-noted]
Yep, that's ANGLE updates for you!
Flags: needinfo?(jgilbert)
Priority: P3 → P5
Oh! This was the WebGPU bindings, hmm...
Assignee: nobody → jgilbert
Priority: P5 → P3
So this is +18 static ctors in both cases. I didn't deliberately add static ctors. In WebIDL, I do add 19 concrete interfaces, but that's the closest to 18 I can find. Regardless, I suspect this is a result of generated bindings classes. :qdot, is that likely? Also, is there a place where we get a dump of the static ctor names? That would make this way easier! (and if we count them, we should be able to list them!)
Flags: needinfo?(kyle)
Flags: needinfo?(igoldan)
:froydnj- can you answer :jgilberts question about getting a dump of the static ctor names?
Flags: needinfo?(nfroyd)
(In reply to Joel Maher ( :jmaher ) (UTC+2) (PTO: Back July 17) from comment #4) > :froydnj- can you answer :jgilberts question about getting a dump of the > static ctor names? You can look at the breakpad .sym files (that's from the target.crashreporter-symbols.zip file that you can get from clicking on a "B" job in treeherder and looking at the "Job" tab) and search for "`dynamic initializer for'", as our tests do: https://searchfox.org/mozilla-central/source/toolkit/crashreporter/tools/symbolstore.py#593-596 so grepping .sym files and sorting, for before and after, then diffing the results should be illuminating.
Flags: needinfo?(nfroyd) → needinfo?(jgilbert)
Clearing ni? for now since it looks like there's more work to do on isolating the static ctors generated.
Flags: needinfo?(kyle)
:jgilbert have you filed any bugs related to these compiler warnings? If so, please link them with this bug.
Clearing ni? as :nfroyd provided the answer.
Flags: needinfo?(igoldan)
$ diff pre.txt post.txt 3304a3305,3323 > static void mozilla::dom::WebGPUBindingType_Binding::`dynamic initializer for 'sConstants_specs''() > static void mozilla::dom::WebGPUBlendFactor_Binding::`dynamic initializer for 'sConstants_specs''() > static void mozilla::dom::WebGPUBlendOperation_Binding::`dynamic initializer for 'sConstants_specs''() > static void mozilla::dom::WebGPUBufferUsage_Binding::`dynamic initializer for 'sConstants_specs''() > static void mozilla::dom::WebGPUColorWriteBits_Binding::`dynamic initializer for 'sConstants_specs''() > static void mozilla::dom::WebGPUCompareFunction_Binding::`dynamic initializer for 'sConstants_specs''() > static void mozilla::dom::WebGPUFilterMode_Binding::`dynamic initializer for 'sConstants_specs''() > static void mozilla::dom::WebGPUIndexFormat_Binding::`dynamic initializer for 'sConstants_specs''() > static void mozilla::dom::WebGPUInputStepMode_Binding::`dynamic initializer for 'sConstants_specs''() > static void mozilla::dom::WebGPULoadOp_Binding::`dynamic initializer for 'sConstants_specs''() > static void mozilla::dom::WebGPUPrimitiveTopology_Binding::`dynamic initializer for 'sConstants_specs''() > static void mozilla::dom::WebGPUShaderStageBit_Binding::`dynamic initializer for 'sConstants_specs''() > static void mozilla::dom::WebGPUShaderStage_Binding::`dynamic initializer for 'sConstants_specs''() > static void mozilla::dom::WebGPUStencilOperation_Binding::`dynamic initializer for 'sConstants_specs''() > static void mozilla::dom::WebGPUStoreOp_Binding::`dynamic initializer for 'sConstants_specs''() > static void mozilla::dom::WebGPUTextureDimension_Binding::`dynamic initializer for 'sConstants_specs''() > static void mozilla::dom::WebGPUTextureFormat_Binding::`dynamic initializer for 'sConstants_specs''() > static void mozilla::dom::WebGPUTextureUsage_Binding::`dynamic initializer for 'sConstants_specs''() > static void mozilla::dom::WebGPUVertexFormat_Binding::`dynamic initializer for 'sConstants_specs''() https://dxr.mozilla.org/mozilla-central/source/obj-x86_64-pc-linux-gnu/dom/bindings/WebGPUBinding.cpp#8752 > namespace WebGPUBindingType_Binding { > [...] > static const ConstantSpec sConstants_specs[] = { > { "UNIFORM_BUFFER", JS::NumberValue(0U) }, > { "SAMPLER", JS::NumberValue(1U) }, > { "SAMPLED_TEXTURE", JS::NumberValue(2U) }, > { "STORAGE_BUFFER", JS::NumberValue(3U) }, > { 0, JS::UndefinedValue() } > }; I don't think there's much to be done about these. (fyi-ni :qdot)
Status: NEW → RESOLVED
Closed: 7 years ago
Flags: needinfo?(jgilbert) → needinfo?(kyle)
Resolution: --- → WONTFIX
FWIW the process here was: - Download a Before and After target.crashreporter-symbols.zip from the B job - Extract - grep -Ehor 'static.+dynamic initializer for.+$' Before/xul.pdb|sort|uniq > Before.txt - (E: extended ('full') regex, h: omit filename, o: only matched text, r: recursive) - (same with After) - diff Before.txt After.txt
Nice, thank you for looking. We liberally applied constexpr and other tricks to Value.h to make DOM bindings static constructors go away at one point; I guess it's time to do it with feeling.
FWIW, there's a very good chance most (all?) of these constants will become WebIDL enums in the near future, too.
Yeah, this should be fine for the moment. We can file a followup on the constexpr changes.
Flags: needinfo?(kyle)
(In reply to Kyle Machulis [:qdot] [:kmachulis] (if a patch has no decent commit message, automatic r-) from comment #13) > Yeah, this should be fine for the moment. We can file a followup on the > constexpr changes. Filed bug 1478671 on the constexpr changes.
You need to log in before you can comment on or make changes to this bug.