harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Egor Pasko <egor.pa...@gmail.com>
Subject Re: [drlvm][jit] Instoptimizer in MemoryValueNumberingPass
Date Tue, 13 May 2008 02:57:31 GMT
On the 0x442 day of Apache Harmony Simon Chow wrote:
> Hi all
> I am trying to add read barriers mechanism in DRLVM ( just for practice :=)
> )
> As the first step, I am inserting read barrier inst in HIR,
> I define a new modifier set like this:
> enum LoadModifier {
>     Load_NoReadBarrier       = 0x1 << 27,
>     Load_ReadBarrier       = 0x2 << 27,
>     Load_Mask         = 0x3 << 27,
>     LoadModifier_IsShiftedBy = 27,
>     LoadModifier_BitsToEncode = 1,
>     LoadModifier_BitsConsumed = 2
> };
> it will be used in TauLdInd.

you want to optimise some barriers out, right?
looks good

> My question is about Instoptimizer of MemoryValueNumberingPass, I am not
> familiar with it.
> First,
> What is this pass mainly used for?

MemOpt is used to eliminate unnecessary store+load pairs. It puts
corresponding operations into a hash. Then eliminates loads if sees
loads in this hash.

> Second,
> In the caseTauStInd case of the switch in dispatch method:
> 
> Modifier mod(Modifier(inst->getAutoCompressModifier()) |
> Modifier(Speculative_No) );
> setHashToInst(inst, getKey(Operation(Op_TauLdInd, inst->getType(), mod),
> addrOp->getId()));
> 
> What does it do here? Why is Op_TauLdInd  used in a caseTauStInd case?

load operation is stored as if it is there. So, if you have a new load
op you search if there is the same one in the hash.

-- 
Egor Pasko


Mime
View raw message