<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.jvmlangsummit.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Kreide</id>
	<title>JVMLangSummit - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.jvmlangsummit.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Kreide"/>
	<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=Special:Contributions/Kreide"/>
	<updated>2026-05-23T11:33:57Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.32.0</generator>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=What_the_JVM_needs&amp;diff=577</id>
		<title>What the JVM needs</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=What_the_JVM_needs&amp;diff=577"/>
		<updated>2010-07-28T22:47:29Z</updated>

		<summary type="html">&lt;p&gt;Kreide: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Notes from Rich Hickey's workshop ==&lt;br /&gt;
&lt;br /&gt;
=== user mode limitations ===&lt;br /&gt;
* please optimize this&lt;br /&gt;
* fences&lt;br /&gt;
* typestate: now immutable - especially arrays (typically encapsulated in non-writing header, a la java.lang.String)&lt;br /&gt;
* [[Why Tailcalls]]: as a guarantee, not just an optimization&lt;br /&gt;
* dynamic vs. inline&lt;br /&gt;
* safepoints&lt;br /&gt;
&lt;br /&gt;
=== numbers ===&lt;br /&gt;
* fixnums (say, 28-bit small ints encoded as (x &amp;gt;&amp;gt; 28) == -1) http://blogs.sun.com/jrose/entry/fixnums_in_the_vm&lt;br /&gt;
* need a uniform entry/exit types (Object =&amp;gt; boxing)&lt;br /&gt;
* Hacker's delight overflow detection is OK (only for add/sub); need a static method that throws overflow-exception?&lt;br /&gt;
* Unsigned &amp;lt;&lt;br /&gt;
&lt;br /&gt;
=== storage management ===&lt;br /&gt;
* floating garbage  foo(o, o=null); is tailcall a solution?&lt;br /&gt;
* concurrent collection of PermGen (only in HotSpot). This is especially important for big server applications (large heap) which uses concurrent GC to avoid long GC pauses; when PermGen fills up a Full GC has to occur which can pause the VM for 10-30 seconds or more which can be unacceptably long for interactive requests.&lt;br /&gt;
&lt;br /&gt;
=== limits ===&lt;br /&gt;
* 31-bit arrays&lt;br /&gt;
* 16-bit instructions&lt;br /&gt;
* static data structures (array literals)&lt;br /&gt;
&lt;br /&gt;
=== types ===&lt;br /&gt;
* structs (efficient pointerless element selection)&lt;br /&gt;
* value types (below)&lt;br /&gt;
&lt;br /&gt;
The C#'s struct might be a source of ideas (though that's not necessarily how we want it)&lt;br /&gt;
&lt;br /&gt;
=== value types ===&lt;br /&gt;
no mutability, acmp-identity, id-hashcode, monitorenter&lt;br /&gt;
* immutable arrays == array-like value types&lt;br /&gt;
* issue: intermediate early array construction states interact with memory model&lt;br /&gt;
* perhaps need a typestate distinction: under construction vs. immutable&lt;/div&gt;</summary>
		<author><name>Kreide</name></author>
		
	</entry>
</feed>