# Class: com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.opt.AbstractEBlockOptimizer

Skeleton for an IR [basic block](BasicBlock) optimizer.

## Constructor: AbstractEBlockOptimizer
- parameter: `dataChainsUpdatePolicy`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.opt.DataChainsUpdatePolicy`

Description: Create a block optimizer.
parameter: dataChainsUpdatePolicy: block optimizers should have a policy of            [DataChainsUpdatePolicy#UPDATE_IF_OPTIMIZED](DataChainsUpdatePolicy#UPDATE_IF_OPTIMIZED) or            [DataChainsUpdatePolicy#UPDATE_IF_REQUIRED](DataChainsUpdatePolicy#UPDATE_IF_REQUIRED)

## Protected Method: optimizeBlock
- parameter: `b`, type: `com.pnfsoftware.jeb.core.units.code.asm.cfg.BasicBlock<com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEStatement>`
- return type: `int`

Description: Attempt to optimize a basic block. All instruction in the block may be modified.
parameter: b: a basic block
return: the number of optimizations performed in the block; a negative value can be returned         to indicate a transaction failure \(critical error\),

## Protected Method: perform
- return type: `int`


