Status fields:
| creation_ts: | 2008-07-08 10:33 |
|---|---|
| component: | reflection |
| version: | 0.98 |
| rep_platform: | arm |
| op_sys: | Linux |
| bug_status: | RESOLVED |
| resolution: | FIXED |
| reporter: | tanarat1@hotmail.com |
Recently, I tried to invoke a method that return float using reflection API and the VM
crashes. The following is what I have tested.
/** CODE BEGINS HERE **/
public class CacaoFloatBug {
public static void main(String[] args) {
try {
Class cls = Class.forName("CacaoFloatBug$FloatReflect");
CacaoFloatBug floatBug = new CacaoFloatBug();
FloatReflect floatReflect = floatBug.new FloatReflect();
Method mth = cls.getMethod("returnFloat", null);
Float retFloatValue = (Float) mth.invoke(floatReflect, null);
System.out.println("Returned Value is " + retFloatValue);
} catch (Exception e) {
e.printStackTrace();
}
}
public class FloatReflect {
public FloatReflect() {
}
public float returnFloat() {
float ret = 1.0f;
return ret;
}
}
}
/** CODE ENDS HERE **/
The following is the error message that I got
===> i am going to exit after this debugging message!
got asm_debug(0x51, 0x5f6ee8, (nil), 0x7b0bb8)
LOG: [0x4001c820] leave you now
Aborted
The version of Cacao that I used was 0.98+hg20071001-r6
The version of classpath was 0.97.1-r1
I run above script on Nokia N800 internet tablet with latest OS2008(Diablo)
I added a regression test: http://mips.complang.tuwien.ac.at/hg/cacao/rev/b66bf58536f9
$ java -cp junit4-4.3.1.jar:. org.junit.runner.JUnitCore PR89 JUnit version 4.3.1 .. Time: 0.18 OK (2 tests) The fix was trivial: http://mips.complang.tuwien.ac.at/hg/cacao/rev/977d67511f9c Maybe we only had the check in there because we never had a testcase. This changeset is applied to default and cacao-1.0.x branch and will be included in the 0.99.2 release.