<div dir="ltr">Hi Ron,<div><br></div><div>Thanks for the heads up our team (michaelquigley@ speficially) is hoping to expand enum unboxing to the collection types (and similar) this quarter.  We are finishing up the work on adding all of the information about signatures to our type system to make this reasonable.</div><div><br></div><div>Making the iterator work seems reasonable.  (I think we would translate that into a </div><div><br></div><div>for (int e = 1; e < maxOrdinal+1; e++) { // 0 is for null :)</div><div>  // Loop code.</div><div>}</div><div><br></div><div>You should be able to follow the bug for more details.</div><div><br><div class="gmail_quote"><div dir="ltr">On Wed, Jul 25, 2018 at 9:32 AM Ron Shapiro <<a href="mailto:ronshapiro@google.com">ronshapiro@google.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><a class="gmail_plusreply m_1793548199533422331cremed" id="m_1793548199533422331plusReplyChip-2" href="mailto:appreduce-team@google.com" target="_blank">+appreduce-team</a> maybe this is something good that AppReduce can do?<br></div><br><div class="gmail_quote"><div dir="ltr">On Wed, Jul 25, 2018 at 12:30 PM nezih yigitbasi <<a href="mailto:nezihyigitbasi@gmail.com" target="_blank">nezihyigitbasi@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Thanks Ron. Yes, working around this is pretty easy. But, it is a common pattern to foreach over Enum.values(), so it would be nice if the runtime/compiler handles that in a more efficient way.<div><br></div><div>Nezih</div></div><br><div class="gmail_quote"><div dir="ltr">Ron Shapiro <<a href="mailto:ronshapiro@google.com" target="_blank">ronshapiro@google.com</a>>, 25 Tem 2018 Çar, 04:18 tarihinde şunu yazdı:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="auto">It's a bit of indirection, but can for (YourEnum e : EnumSet.allOf(YourEnum.class)) {} do the trick? It will still allocate, but likely only one instance instead of a full array. </div><br><div class="gmail_quote"><div dir="ltr">On Wed, Jul 25, 2018, 5:23 AM Michael Rasmussen <<a href="mailto:Michael.Rasmussen@roguewave.com" target="_blank">Michael.Rasmussen@roguewave.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">




<div dir="ltr">
<div id="m_1793548199533422331m_-6637324708640928169m_545239842898261548m_1124692167999590896divtagdefaultwrapper" style="font-size:12pt;color:#000000;font-family:Calibri,Helvetica,sans-serif" dir="ltr">
<p style="margin-top:0;margin-bottom:0">With condy being added in Java 11, this could potentially be a use-case for that ?</p>
<p style="margin-top:0;margin-bottom:0"><br>
</p>
<p style="margin-top:0;margin-bottom:0"><span style="font-size:12pt">for (EnumType
</span><span style="font-size:12pt">e</span><span style="font-size:12pt">: const(</span><span style="font-size:12pt">EnumType.values())) { ... </span><span style="font-size:12pt">}</span><br>
</p>
<p style="margin-top:0;margin-bottom:0"><span style="font-size:12pt"><br>
</span></p>
<p style="margin-top:0;margin-bottom:0"><span style="font-size:12pt">Or perhaps it's time to add a List<E> valuesList(); to enum types, that returns an immutable List of the values?</span></p>
<p style="margin-top:0;margin-bottom:0"><span style="font-size:12pt"><br>
</span></p>
<p style="margin-top:0;margin-bottom:0">/Michael</p>
</div>
<hr style="display:inline-block;width:98%">
<div id="m_1793548199533422331m_-6637324708640928169m_545239842898261548m_1124692167999590896divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> compiler-dev <<a href="mailto:compiler-dev-bounces@openjdk.java.net" rel="noreferrer" target="_blank">compiler-dev-bounces@openjdk.java.net</a>> on behalf of nezih yigitbasi <<a href="mailto:nezihyigitbasi@gmail.com" rel="noreferrer" target="_blank">nezihyigitbasi@gmail.com</a>><br>
<b>Sent:</b> 25 July 2018 08:23:57<br>
<b>To:</b> <a href="mailto:compiler-dev@openjdk.java.net" rel="noreferrer" target="_blank">compiler-dev@openjdk.java.net</a><br>
<b>Subject:</b> about Enum.values() memory allocation</font>
<div> </div>
</div>

<div>
<div dir="ltr"><span style="font-size:small;float:none;display:inline">Hi,</span><br style="font-size:small">
<span style="font-size:small;float:none;display:inline">I recently noticed in our app that Enum.values() allocates a significant amount of memory when called in a tight loop as it clones the constant values array (which is probably for immutability, and I
 can understand that). I found that the same issue has been discussed back in 2012: </span><a href="http://mail.openjdk.java.net/pipermail/compiler-dev/2012-March/004210.html" style="color:rgb(17,85,204);font-size:small" rel="noreferrer" target="_blank">http://mail.openjdk.java.net/pipermail/compiler-dev/2012-March/004210.html</a>
<div style="font-size:small"><br>
</div>
<div style="font-size:small">Are there any plans to address this issue going forward?<br>
<br>
Thanks!</div>
<br>
</div>
</div>
</div>

</blockquote></div>
</blockquote></div>
</blockquote></div>
</blockquote></div></div></div>