Re: [rvm-research] AddressArray with CAS
Nachshon Cohen O <[email protected]>
| Newsgroups | gmane.comp.java.jikes.rvm.devel |
|---|---|
| Message-ID | <[email protected]> |
Hi,
I'm trying to use CAS on a WordArray entry. The problem is that Magic.attemptWord expects an Object.
I was suggested to send the WordArray instance as an object, and it works great for the baseline compiler.
However, for the opt compiler I get the error listed below (which closely relates to http://jira.codehaus.org/browse/RVM-175).
It seems that the opt compiler fails casting WordArray instance to an Object instance.
Attaching minimal code that create the failure, and the failure trace.
Thanks for any help,
Nachshon Cohen
Technion Institute of Technology, Israel,
Minimal failing code:
protected WordArray localBfrs = WordArray.create(numThreads);
@Inline boolean casPtr(final int id, final Word ptr, final Word word){
return CompareAndSwapWord(localBfrs, ofst(id), ptr, word);
}
boolean CompareAndSwapWord(final Object obj, final Offset ofst, final Word oldVal, final Word newVal){
return false; //Magic.attemptsWord(obj, ofst, oldVal, newVal); Commented for minimal failed code.
}
****** bin/buildit failure:
build-bootimage:
[echo] Building bootimage. Output redirected to : /Users/nachshonc/Documents/Programs/jikesrvm-3.1.3/target/FTGCopt_x86_64-osx/BootImageWriterOutput.txt
[echo] MMTk properties = /Users/nachshonc/Documents/Programs/jikesrvm-3.1.3/build/mmtk/default.properties
[java] BootImageWriter: compiler arg: O2
[java] Java Result: 101
[echo] BootImageCompiler: init (opt compiler)
[echo] Compiler failure during compilation of < BootstrapCL, Lorg/mmtk/utility/WFMS/WFQueue; >.casPtr (ILorg/vmmagic/unboxed/Word;Lorg/vmmagic/unboxed/Word;)Z
[echo] java.lang.Error: Illegal upcast creating call to < BootstrapCL, Lorg/mmtk/utility/WFMS/WFQueue;, CompareAndSwapWord, (Ljava/lang/Object;Lorg/vmmagic/unboxed/Offset;Lorg/vmmagic/unboxed/Word;Lorg/vmmagic/unboxed/Word;)Z > from < BootstrapCL, Lorg/mmtk/utility/WFMS/WFQueue; >.casPtr (ILorg/vmmagic/unboxed/Word;Lorg/vmmagic/unboxed/Word;)Z argument 0
[echo] at org.jikesrvm.compilers.opt.bc2ir.BC2IR._callHelper(BC2IR.java:2822)
[echo] at org.jikesrvm.compilers.opt.bc2ir.BC2IR.generateFrom(BC2IR.java:1852)
[echo] at org.jikesrvm.compilers.opt.bc2ir.BC2IR.generateHIR(BC2IR.java:371)
[echo] at org.jikesrvm.compilers.opt.bc2ir.BC2IR.generateHIR(BC2IR.java:169)
[echo] at org.jikesrvm.compilers.opt.bc2ir.ConvertBCtoHIR.perform(ConvertBCtoHIR.java:38)
[echo] at org.jikesrvm.compilers.opt.driver.CompilerPhase.performPhase(CompilerPhase.java:205)
[echo] at org.jikesrvm.compilers.opt.driver.OptimizationPlanAtomicElement.perform(OptimizationPlanAtomicElement.java:78)
[echo] at org.jikesrvm.compilers.opt.driver.OptimizationPlanCompositeElement.perform(OptimizationPlanCompositeElement.java:129)
[echo] at org.jikesrvm.compilers.opt.driver.CompilationPlan.execute(CompilationPlan.java:128)
[echo] at org.jikesrvm.compilers.opt.driver.OptimizingCompiler.compile(OptimizingCompiler.java:170)
[echo] at org.jikesrvm.compilers.opt.driver.OptimizingBootImageCompiler.compileMethod(OptimizingBootImageCompiler.java:113)
[echo] at org.jikesrvm.compilers.common.BootImageCompiler.compile(BootImageCompiler.java:75)
[echo] at org.jikesrvm.compilers.common.BootImageCompiler.compile(BootImageCompiler.java:80)
[echo] at org.jikesrvm.classloader.NormalMethod.genCode(NormalMethod.java:178)
[echo] at org.jikesrvm.classloader.RVMMethod.compile(RVMMethod.java:728)
[echo] at org.jikesrvm.classloader.RVMMethod.getCurrentEntryCodeArray(RVMMethod.java:713)
[echo] at org.jikesrvm.classloader.RVMClass.instantiate(RVMClass.java:1436)
[echo] at org.jikesrvm.tools.bootImageWriter.BootImageWorker.run(BootImageWorker.java:45)
[echo] at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
[echo] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
[echo] at java.lang.Thread.run(Thread.java:680)
[echo] Caused by: org.jikesrvm.compilers.opt.OptimizingCompilerException$IllegalUpcast: Illegal upcast from < BootstrapCL, Lorg/vmmagic/unboxed/WordArray; > to java.lang.Object
[echo] at org.jikesrvm.compilers.opt.bc2ir.BC2IR.pop(BC2IR.java:3391)
[echo] at org.jikesrvm.compilers.opt.bc2ir.BC2IR._callHelper(BC2IR.java:2820)
[echo] ... 20 more
[echo] Error compiling method: < BootstrapCL, Lorg/mmtk/utility/WFMS/WFQueue; >.casPtr (ILorg/vmmagic/unboxed/Word;Lorg/vmmagic/unboxed/Word;)Z
[echo] org.jikesrvm.compilers.opt.OptimizingCompilerException: ERROR produced in module:Compiler
[echo] failure during compilation of < BootstrapCL, Lorg/mmtk/utility/WFMS/WFQueue; >.casPtr (ILorg/vmmagic/unboxed/Word;Lorg/vmmagic/unboxed/Word;)Z
[echo]
[echo] at org.jikesrvm.compilers.opt.driver.OptimizingCompiler.fail(OptimizingCompiler.java:265)
[echo] at org.jikesrvm.compilers.opt.driver.OptimizingCompiler.compile(OptimizingCompiler.java:184)
[echo] at org.jikesrvm.compilers.opt.driver.OptimizingBootImageCompiler.compileMethod(OptimizingBootImageCompiler.java:113)
[echo] at org.jikesrvm.compilers.common.BootImageCompiler.compile(BootImageCompiler.java:75)
[echo] at org.jikesrvm.compilers.common.BootImageCompiler.compile(BootImageCompiler.java:80)
[echo] at org.jikesrvm.classloader.NormalMethod.genCode(NormalMethod.java:178)
[echo] at org.jikesrvm.classloader.RVMMethod.compile(RVMMethod.java:728)
[echo] at org.jikesrvm.classloader.RVMMethod.getCurrentEntryCodeArray(RVMMethod.java:713)
[echo] at org.jikesrvm.classloader.RVMClass.instantiate(RVMClass.java:1436)
[echo] at org.jikesrvm.tools.bootImageWriter.BootImageWorker.run(BootImageWorker.java:45)
[echo] at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
[echo] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
[echo] at java.lang.Thread.run(Thread.java:680)
BUILD FAILED
/Users/nachshonc/Documents/Programs/jikesrvm-3.1.3/build.xml:1619: The following error occurred while executing this line:
/Users/nachshonc/Documents/Programs/jikesrvm-3.1.3/build.xml:1628: Failed to write bootimage.
Total time: 2 minutes 59 seconds
Sun Jun 9 17:13:20 IDT 2013
===================== Summary =====================
Local : /Users/nachshonc/Documents/Programs/jikesrvm-3.1.3
Build : admins-MacBook-Pro-2.local:/Users/nachshonc/Documents/Programs/jikesrvm-3.1.3
Target : admins-MacBook-Pro-2.local:/Users/nachshonc/Documents/Programs/jikesrvm-3.1.3
Start : Sun Jun 9 17:10:17 IDT 2013
Config : FTGCopt [FAILED Sun Jun 9 17:13:20 IDT 2013]
===================================================
On May 29, 2013, at 6:36 PM, Eliot Moss <[email protected]> wrote:
> On 5/29/2013 11:01 AM, Nachshon Cohen O wrote:
>> Hi
>>
>> I'm trying to use a wait free queue implementation in the Jikes RVM.
>> The implementation holds an array of addresses, and I'd like to apply CAS (compareAndSet) to these addresses.
>> For example:
>> AddressArray arr = AddressArray.create(10);
>> arr[ 3 ].compareAndSet(oldValue, newValue);
>>
>> It seems that unboxed.AddressArray does not have an option of CAS.
>> A normal CAS is implemented only for objects: i.e. Magic.attemptAddress(object, offset, oldValue, newValue);
>> However, I don't know how to convert the AddressArray to an object.
>>
>> Is there a way to use CAS on a specific array element?
>
> An AddressArray is a perfectly good object. The offset of element
> 0 is 0 (by design, so that we do not need to add an extra constant
> value in for every array access). You need to know the size of an
> Address, but I think there are operations for converting an array
> index into an offset, etc. You also need to be careful not to
> access outside the bounds of the actual array, of course.
>
> Regards -- Eliot Moss
------------------------------------------------------------------------------
How ServiceNow helps IT people transform IT departments:
1. A cloud service to automate IT design, transition and operations
2. Dashboards that offer high-level views of enterprise services
3. A single system of record for all IT processes
http://p.sf.net/sfu/servicenow-d2d-j
_______________________________________________
Jikesrvm-researchers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers