Details
-
Type:
Bug
-
Status:
In Progress
-
Priority:
Major
-
Resolution: Unresolved
-
Affects Version/s: hg tip
-
Fix Version/s: 3.1.4
-
Component/s: Compiler: Optimizing
-
Labels:None
-
Environment:x86_64-linux and ia32-osx
-
Testcase included:yes
-
Number of attachments :
Description
The attached patch is a snapshot of my Sapphire work based off 3.1.1. It complies cleanly (working is a whole different problem...) but when I apply a simple clean up to the mutator write barrier code (attached) it seems to break the Opt compiler.
Compiling with the following: $ant -Dhost.name=ia32-osx -Dconfig.name=ExtremeAssertionsOptAdaptiveSapphire
Gives the following (partial) output:
{{
[echo] Exception occurred in ConvertLIRtoMIR
[echo] org.jikesrvm.compilers.opt.OptimizingCompilerException: ERROR produced in module:BURS
[echo] rule missing in G call AF CF OF PF ZF ESP = t1628sa(Lorg/jikesrvm/ArchitectureSpecific$CodeArray
, special_exact"< BootstrapCL, Lorg/mmtk/plan/sapphire/SapphireMutator; >.writeBarrierAssertions (Lorg/vmmagic/unboxed/Address;Lorg/vmmagic/unboxed/ObjectReference;)V",
[echo] <TRUEGUARD>, t1027sa(Lorg/jikesrvm/scheduler/RVMThread;,p), t1029sa(Lorg/vmmagic/unboxed/Address
, t1780a(Lorg/mmtk/plan/ParallelCollectorGroup
ESP
[echo] call
[echo] int_load
[echo] int_load
[echo] INT_CONSTANT 822608480
[echo] INT_CONSTANT 6424
[echo] INT_CONSTANT 336
[echo] other_operand
[echo] register
[echo] other_operand
[echo] int_add
[echo] INT_CONSTANT 20
[echo] register
[echo] int_load
[echo] INT_CONSTANT 822608480
[echo] INT_CONSTANT 7660
[echo]
[echo]
[echo] at org.jikesrvm.compilers.opt.lir2mir.ia32.BURS_STATE.mark(BURS_STATE.java:129)
}}
You have constant offset from constant base, which is an absolute address, the two should have been combined before going to BURS.