There are two versions of attempt*() in Jikes 2.9.1: there's VM_Magic.attempt*() and Address.attempt*(). The VM_Magic.attempt*() version compiles correctly, but Address.attempt*() doesn't. In particular, in VM_Compiler.java, there's an extraneous instruction emitted when generating the code for Address.attempt*():
Address.attempt*() behaves correctly iff this statement is removed. This issue has already been fixed in the SVN trunk prior to version 2.9.2 (not sure when or by whom); I'm just reporting it here in case anyone runs into it in 2.9.1.
IA32 with baseline compilation