Skip to content

Commit 537b40e

Browse files
author
Kim Barrett
committed
8252588: HotSpot Style Guide should permit uniform initialization
Reviewed-by: jrose, dholmes, dcubed, tschatzl, kvn
1 parent c35e1a2 commit 537b40e

File tree

2 files changed

+29
-0
lines changed

2 files changed

+29
-0
lines changed

doc/hotspot-style.html

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ <h1 class="title">HotSpot Coding Style</h1>
4949
<li><a href="#thread_local">thread_local</a></li>
5050
<li><a href="#nullptr">nullptr</a></li>
5151
<li><a href="#atomic">&lt;atomic&gt;</a></li>
52+
<li><a href="#uniform-initialization">Uniform Initialization</a></li>
5253
<li><a href="#additional-permitted-features">Additional Permitted Features</a></li>
5354
<li><a href="#excluded-features">Excluded Features</a></li>
5455
<li><a href="#undecided-features">Undecided Features</a></li>
@@ -275,6 +276,17 @@ <h3 id="atomic">&lt;atomic&gt;</h3>
275276
<p>Do not use facilities provided by the <code>&lt;atomic&gt;</code> header (<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2427.html">n2427</a>), (<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2752.htm">n2752</a>); instead, use the HotSpot <code>Atomic</code> class and related facilities.</p>
276277
<p>Atomic operations in HotSpot code must have semantics which are consistent with those provided by the JDK's compilers for Java. There are platform-specific implementation choices that a C++ compiler might make or change that are outside the scope of the C++ Standard, and might differ from what the Java compilers implement.</p>
277278
<p>In addition, HotSpot <code>Atomic</code> has a concept of &quot;conservative&quot; memory ordering, which may differ from (may be stronger than) sequentially consistent. There are algorithms in HotSpot that are believed to rely on that ordering.</p>
279+
<h3 id="uniform-initialization">Uniform Initialization</h3>
280+
<p>The use of <em>uniform initialization</em> (<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2672.htm">n2672</a>), also known as <em>brace initialization</em>, is permitted.</p>
281+
<p>Some relevant sections from cppreference.com:</p>
282+
<ul>
283+
<li><a href="https://en.cppreference.com/w/cpp/language/initialization">initialization</a></li>
284+
<li><a href="https://en.cppreference.com/w/cpp/language/value_initialization">value initialization</a></li>
285+
<li><a href="https://en.cppreference.com/w/cpp/language/direct_initialization">direct initialization</a></li>
286+
<li><a href="https://en.cppreference.com/w/cpp/language/list_initialization">list initialization</a></li>
287+
<li><a href="https://en.cppreference.com/w/cpp/language/aggregate_initialization">aggregate initialization</a></li>
288+
</ul>
289+
<p>Although related, the use of <code>std::initializer_list</code> remains forbidden, as part of the avoidance of the C++ Standard Library in HotSpot code.</p>
278290
<h3 id="additional-permitted-features">Additional Permitted Features</h3>
279291
<ul>
280292
<li><p><code>constexpr</code> (<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2235.pdf">n2235</a>) (<a href="https://isocpp.org/files/papers/N3652.html">n3652</a>)</p></li>

doc/hotspot-style.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -681,6 +681,23 @@ ordering, which may differ from (may be stronger than) sequentially
681681
consistent. There are algorithms in HotSpot that are believed to rely
682682
on that ordering.
683683

684+
### Uniform Initialization
685+
686+
The use of _uniform initialization_
687+
([n2672](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2672.htm)),
688+
also known as _brace initialization_, is permitted.
689+
690+
Some relevant sections from cppreference.com:
691+
692+
* [initialization](https://en.cppreference.com/w/cpp/language/initialization)
693+
* [value initialization](https://en.cppreference.com/w/cpp/language/value_initialization)
694+
* [direct initialization](https://en.cppreference.com/w/cpp/language/direct_initialization)
695+
* [list initialization](https://en.cppreference.com/w/cpp/language/list_initialization)
696+
* [aggregate initialization](https://en.cppreference.com/w/cpp/language/aggregate_initialization)
697+
698+
Although related, the use of `std::initializer_list` remains forbidden, as
699+
part of the avoidance of the C++ Standard Library in HotSpot code.
700+
684701
### Additional Permitted Features
685702

686703
* `constexpr`

0 commit comments

Comments
 (0)