Laurence, thanks for your patience. I'm working on it now. Just slowly walking through the 227KB patch.
However, I noticed that it failed the pre-commit test. Error message below. I will continue going through the patch, but if you get the chance to look into the error below before I do, that would be nice.
—
===================== Results =====================
Total Success Rate 122/124
Subversion Revision: 15804M
Result Configuration Group Test Run Reason
FAILURE prototype.default basic TestFieldReflection Unexpected exit code.
FAILURE development.Opt_1 basic TestFieldReflection Unexpected exit code.
===================================================
—
Testing on getFields
Values: true 127 1.0 1.0 1 1 1 true 127 1.0 1.0 1 1 1
Set booleans to false !!!!!!!!!!!!
Values: false 127 1.0 1.0 1 1 1 false 127 1.0 1.0 1 1 1
Set bytes to 12 Unable to render embedded object: File (++++++) not found.+vm internal error at:
Thread #12
– Stack –
at [0x67d85c80, 0x5b336bfa] Lorg/jikesrvm/VM; sysFail(Ljava/lang/String;)V at line 2275
at [0x67d85ca0, 0x5b336cff] Lorg/jikesrvm/VM; _assertionFailure(Ljava/lang/String;Ljava/lang/String;)V at line 613
at [0x67d85cc8, 0x5b336d8d] Lorg/jikesrvm/VM; _assert(ZLjava/lang/String;Ljava/lang/String;)V at line 596
at [0x67d85cec, 0x5b24a73b] Lorg/jikesrvm/VM; _assert(Z)V at line 574
at [0x67d85d0c, 0x5b01a4bb] Lorg/jikesrvm/runtime/Statics; setSlotContents(Lorg/vmmagic/unboxed/Offset;Ljava/lang/Object;)V at line 625
at [0x67d85d38, 0x5b23c80d] Lorg/jikesrvm/classloader/RVMField; setDoubleValueUnchecked(Ljava/lang/Object;D)V at line 573
at [0x67d85d6c, 0x5b23cd3f] Ljava/lang/reflect/VMCommonLibrarySupport; setByteInternal(Ljava/lang/Object;BLorg/jikesrvm/classloader/RVMField;)V at line 795
at [0x67d85da0, 0x5b0a21bd] Ljava/lang/reflect/VMCommonLibrarySupport; setByte(Ljava/lang/Object;BLorg/jikesrvm/classloader/RVMField;Ljava/lang/reflect/Field;Lorg/jikesrvm/classloader/RVMClass;)V at line 726
at [0x67d85dd8, 0x5b0a0e5c] Ljava/lang/reflect/VMField; setByte(Ljava/lang/reflect/Field;Ljava/lang/Object;B)V at line 113
at [0x67d85e08, 0x6783e581] Ljava/lang/reflect/Field; setByte(Ljava/lang/Object;B)V at line 540
at [0x67d85e44, 0x678350cd] Ltest/org/jikesrvm/basic/core/reflect/TestFieldReflection; testByte(Ljava/lang/Object;[Ljava/lang/reflect/Field;)V at line 154
at [0x67d85e6c, 0x6782c193] Ltest/org/jikesrvm/basic/core/reflect/TestFieldReflection; testFieldReflection(Ljava/lang/Object;Ljava/lang/Class;[Ljava/lang/reflect/Field;)V at line 80
at [0x67d85e90, 0x678310f9] Ltest/org/jikesrvm/basic/core/reflect/TestFieldReflection; testFieldReflection(Ljava/lang/Class;)V at line 66
at [0x67d85eac, 0x5b2d6a36] Ltest/org/jikesrvm/basic/core/reflect/TestFieldReflection; main([Ljava/lang/String;)V at line 60
at [0x67d85ec4, 0x5b267ddc] <invisible method>
at [0x67d85f38, 0x5b268240] Lorg/jikesrvm/runtime/Reflection; outOfLineInvoke(Lorg/jikesrvm/classloader/RVMMethod;Ljava/lang/Object;[Ljava/lang/Object;Z)Ljava/lang/Object; at line 194
at [0x67d85f70, 0x5b1ae7e9] Lorg/jikesrvm/runtime/Reflection; invoke(Lorg/jikesrvm/classloader/RVMMethod;Lorg/jikesrvm/runtime/ReflectionBase;Ljava/lang/Object;[Ljava/lang/Object;Z)Ljava/lang/Object; at line 76
at [0x67d85fb0, 0x5b29df07] Lorg/jikesrvm/scheduler/MainThread; run()V at line 201
at [0x67d85fd8, 0x5b322039] Lorg/jikesrvm/scheduler/RVMThread; run()V at line 2491
at [0x67d85ff8, 0x080501e5] Lorg/jikesrvm/scheduler/RVMThread; startoff()V at line 2535
********************************************************************************
- Abnormal termination of Jikes RVM *
- Jikes RVM terminated abnormally indicating a problem in the virtual machine. *
- Jikes RVM relies on community support to get debug information. Help improve *
- Jikes RVM for everybody by reporting this error. Please see: *
- http://jikesrvm.org/Reporting+Bugs *
********************************************************************************
Thanks, looks like a nice addition!
I took a quick scan through the "rvm" part of the patch. It looked plausible to me, with the exception of the addition of the CHAR_ASTORE operator for the opt compiler. Since the sign/zero extension doesn't matter for stores, we uniformly collapse the signed/unsigned version of the store operations into a single operator. BURS still should be able to avoid sign extension for the store(load
) pattern (perhaps there is just a missing rule somewhere??).
Steve/Daniel, could one of you take a look at the MMTk part of the patch and comment? I don't mind doing the leg work of committing it and changing the opt compiler part to drop CHAR_ASTORE, but I want one of you to sign off on the MMTk changes first.
thanks,
--dave