|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
public interface CalcRexAggImplementor
Translates a call to an aggregate function to calculator assembly language.
Implementors are held in a CalcRexImplementorTable
.
Method Summary | |
---|---|
boolean |
canImplement(RexCall call)
Returns whether this implementor can handle the given call. |
void |
implementAdd(RexCall call,
CalcReg accumulatorRegister,
RexToCalcTranslator translator)
Generates instructions to add a new value to an aggregation. |
void |
implementDrop(RexCall call,
CalcReg accumulatorRegister,
RexToCalcTranslator translator)
Generates instructions to implement this call, and returns the register which holds the result. |
void |
implementInitAdd(RexCall call,
CalcReg accumulatorRegister,
RexToCalcTranslator translator)
Generates instructions to initialize and add a new value to an aggregation. |
void |
implementInitialize(RexCall call,
CalcReg accumulatorRegister,
RexToCalcTranslator translator)
Generates instructions to initialize an accumulator for a call to this aggregate function, and returns the register which holds the accumulator. |
Method Detail |
---|
void implementInitialize(RexCall call, CalcReg accumulatorRegister, RexToCalcTranslator translator)
For example, for SUM(x)
, this method generates O
s8; V 0; T; MOVE O0, C0;
and returns the O0
register.
call
- The call to the aggregate function to be implementedaccumulatorRegister
- The accumulator register to be populatedtranslator
- Calculator code generatorvoid implementAdd(RexCall call, CalcReg accumulatorRegister, RexToCalcTranslator translator)
For example, for SUM(x)
, this method generates I
s8; O s8; T; ADD O0, I0;
.
call
- The call to the aggregate function to be implementedaccumulatorRegister
- The accumulator registertranslator
- Calculator code generatorvoid implementInitAdd(RexCall call, CalcReg accumulatorRegister, RexToCalcTranslator translator)
call
- The call to the aggregate function to be implementedaccumulatorRegister
- The accumulator registertranslator
- Calculator code generatorvoid implementDrop(RexCall call, CalcReg accumulatorRegister, RexToCalcTranslator translator)
For example, for SUM(x)
, this method generates I
s8; O s8; T; SUB O0, I0;
call
- The call to the aggregate function to be implemented.accumulatorRegister
- The accumulator registertranslator
- Calculator code generatorboolean canImplement(RexCall call)
call
- The call to the aggregate function to be implemented
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |