Hi John, Am 16.11.2012 04:09, schrieb John Rose: > On Nov 15, 2012, at 3:32 PM, John Rose wrote: > >> It can be right, but only if the actual argument is a null reference. >> If it is a non-null Byte, it must unbox to a byte and then widen to a >> float. > > Well, actually, in this case, the NPE should not happen either.
even if a null value would cause a NPE, I would expect that once the handle is executed, not while I cal explicitCastArguments. > Nulls are explicitly cast (though not merely "converted") to zeroes. > (The theory here is that an uninitialized Object reference can be > usefully reinterpreted as an uninitialized primitive value. The zero of > a type is exactly the values of an uninitialized field or array element > of that type.) > > Here's the spec.: >> f <em>T0</em> is a reference and <em>T1</em> a primitive, >> and if the reference is null at runtime, a zero value is introduced. > > So, explictCastArguments should not produce a MH which can throw NPE. > > CCE is still possible, e.g., if a String is cast to a File or a float, > or vice versa. Well, again... it does not, it cannot, since the call of explictCastArguments itself causes the NPE. That means I found a bug? ;) I am using build 1.7.0_09-b05 on Ubuntu 64bit. Currently I work around this by leaving primitive2primitive conversions as well as boxing and unboxing and anything a bytecode cast could do to explictCastArguments. But when it comes to chain primitive conversions and (un)boxing, I am doing that myself... even if the documentation says it is supposed to work. bye Jochen -- Jochen "blackdrag" Theodorou - Groovy Project Tech Lead blog: http://blackdragsview.blogspot.com/ german groovy discussion newsgroup: de.comp.lang.misc For Groovy programming sources visit http://groovy-lang.org _______________________________________________ mlvm-dev mailing list mlvm-dev@openjdk.java.net http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev