harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mikhail Fursov" <mike.fur...@gmail.com>
Subject Re: [DRLVM][Helper inlining] GC write barrier inline?
Date Mon, 11 Dec 2006 15:38:56 GMT
Xiao-Feng,
I'm slightly confused about current WB support in Jitrino.OPT, so I need an
advice.

The problem: I think that write barriers in Jitrino OPT do not work.

Example (see for lines marked with =>):


HIR with WB disabled:

  I1:defarg.ths -) t1:cls:java/net/URLClassLoader$4
  I2:tauisnonnull      t1 -) t2:tau
  I3:tauhastype      t1,cls:java/net/URLClassLoader$4 -) t3:tau
  I4:defarg -) t4:cls:java/net/URLClassLoader
  I5:tauhastype      t4,cls:java/net/URLClassLoader -) t5:tau
  I6:defarg -) t6:cls:java/lang/String
  I7:tauhastype      t6,cls:java/lang/String -) t7:tau
  I8:ldflda    [t1.java/net/URLClassLoader$4::this$0] -)
t8:ref:cls:java/net/URLClassLoader
=>  I9:stind.unc:o   t4 ((t2,t3,t5)) -) [t8]
  I10:ldflda    [t1.java/net/URLClassLoader$4::val$clsName] -)
t9:ref:cls:java/lang/String
=>  I11:stind.unc:str t6 ((t2,t3,t7)) -) [t9]
  I12:tauunsafe() -) t10:tau
  I13:call      java/lang/Object::_init_(t1) ((t2,t10)) -)


The same HIR with WB enabled:

  Successors: L5 UNWIND
  I1:defarg.ths -) t1:cls:java/net/URLClassLoader$4
  I2:tauisnonnull      t1 -) t2:tau
  I3:tauhastype      t1,cls:java/net/URLClassLoader$4 -) t3:tau
  I4:defarg -) t4:cls:java/net/URLClassLoader
  I5:tauhastype      t4,cls:java/net/URLClassLoader -) t5:tau
  I6:defarg -) t6:cls:java/lang/String
  I7:tauhastype      t6,cls:java/lang/String -) t7:tau
  I8:ldflda    [t1.java/net/URLClassLoader$4::this$0] -)
t8:ref:cls:java/net/URLClassLoader
=>  I9:stref.wb.unc   t4 ((t2,t3,t5)) -) [t8 t1]
  I10:ldflda    [t1.java/net/URLClassLoader$4::val$clsName] -)
t9:ref:cls:java/lang/String
=>  I11:stref.wb.unc   t6 ((t2,t3,t7)) -) [t9 t1]
  I12:tauunsafe() -) t10:tau
  I13:call      java/lang/Object::_init_(t1) ((t2,t10)) -)



The LIR with WB disabled

    I1: t4:ref:cls:java/net/URLClassLoader (ID:s5(EFLGS):uint32) =ADD
t0:cls:java/net/URLClassLoader$4,t3(0:fo:java/net/URLClassLoader$4.this$0):intptr

=>    I2: (AD:t6[t4]:object) =CopyPseudoInst/MOV
(AU:t1:cls:java/net/URLClassLoader)
    I3: t8:ref:cls:java/lang/String (ID:s5(EFLGS):uint32) =ADD
t0:cls:java/net/URLClassLoader$4,t7(0:fo:java/net/URLClassLoader$4.val$clsName):intptr

=>    I4: (AD:t9[t8]:string) =CopyPseudoInst/MOV
(AU:t2:cls:java/lang/String)




The same LIR with WB enabled

    I1: t4:ref:cls:java/net/URLClassLoader (ID:s5(EFLGS):uint32) =ADD
t0:cls:java/net/URLClassLoader$4,t3(0:fo:java/net/URLClassLoader$4.this$0):intptr

=>    I2: CALL t6(0:h:WriteBarrier):ptr:intptr
(AU:t0:cls:java/net/URLClassLoader$4,t4:ref:cls:java/net/URLClassLoader,t1:cls:java/net/URLClassLoader)

    I3: t8:ref:cls:java/lang/String (ID:s5(EFLGS):uint32) =ADD
t0:cls:java/net/URLClassLoader$4,t7(0:fo:java/net/URLClassLoader$4.val$clsName):intptr

=>    I4: CALL t9(0:h:WriteBarrier):ptr:intptr
(AU:t0:cls:java/net/URLClassLoader$4,t8:ref:cls:java/lang/String,t2:cls:java/lang/String)



The question is what is in the CALL? I see only the method:
gc_heap_slot_write_ref and this method does not save anything into fields.
Does it mean that WB support in Jitrino.OPT is incomplete today?

-- 
Mikhail Fursov

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message