Thread overview |
---|
July 03, 2013 [Issue 10527] New: Eliding more postblit constructor calls | ||||
---|---|---|---|---|
| ||||
http://d.puremagic.com/issues/show_bug.cgi?id=10527 Summary: Eliding more postblit constructor calls Product: D Version: unspecified Platform: All OS/Version: All Status: NEW Severity: enhancement Priority: P2 Component: DMD AssignedTo: nobody@puremagic.com ReportedBy: tommitissari@hotmail.com --- Comment #0 from Tommi <tommitissari@hotmail.com> 2013-07-03 03:51:18 PDT --- Definitions: 1) 'Str' is a struct type which has a postblit constructor 2) 'var' is a variable whose unqualified type is Str 3) 'cpy' is a copy of the variable var Proposed language change: Whenever a copy is made from var to cpy (either by making a new variable or by passing var to a function by value) and the compiler can determine (either through analysing code or by deduction from a function signature) that during the lifetime of cpy, no mutation is done to var nor to any data reachable from it, the language should guarantee these two things: 1) cpy's postblit constructor is omitted when cpy is constructed 2) cpy's destructor is omitted when cpy goes out of scope Examples: Here are some examples, where the compiler can deduce that it's safe to omit the postblit and destructor of cpy by merely looking at the function signature: 1) int foo(T, U)(const Str cpy, const T t, immutable U u) pure { } 2) void foo(T, U)(immutable Str cpy, T t, U u) { } -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
July 03, 2013 [Issue 10527] Eliding more postblit constructor calls | ||||
---|---|---|---|---|
| ||||
Posted in reply to Tommi | http://d.puremagic.com/issues/show_bug.cgi?id=10527 --- Comment #1 from Tommi <tommitissari@hotmail.com> 2013-07-03 04:12:00 PDT --- (In reply to comment #0) > [..] the language should guarantee these two things: > 1) cpy's postblit constructor is omitted when cpy is constructed > 2) cpy's destructor is omitted when cpy goes out of scope Let's change this proposal so that the language would guarantee to do those optimisations only when it can deduce that it can be done from looking at function signatures. And the compiler can choose whether or not it wants to try to do more postblit/destructor elisions through static analysis. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
July 03, 2013 [Issue 10527] Eliding more postblit constructor calls | ||||
---|---|---|---|---|
| ||||
Posted in reply to Tommi | http://d.puremagic.com/issues/show_bug.cgi?id=10527 --- Comment #2 from Tommi <tommitissari@hotmail.com> 2013-07-03 06:55:55 PDT --- (In reply to comment #0) > 2) 'var' is a variable whose unqualified type is Str By this I mean: is(std.traits.Unqual!(typeof(var)) == Str) -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
Copyright © 1999-2021 by the D Language Foundation