return aop;
}
-/* #define DPS_OPT */ /* turn this on after some more testing. */
+/* #define LAZY_DPS_OPT */ /* turn this on after some more testing. */
-static int _currentDPS;
-static int _desiredDPS;
-static int _lazyDPS = 0;
+static int _currentDPS; /* Current processor DPS. */
+static int _desiredDPS; /* DPS value compiler thinks we should be using. */
+static int _lazyDPS = 0; /* if non-zero, we are doing lazy evaluation of DPS changes. */
+/*-----------------------------------------------------------------*/
+/* genSetDPTR: generate code to select which DPTR is in use (zero */
+/* selects standard DPTR (DPL/DPH/DPX), non-zero selects DS390 */
+/* alternate DPTR (DPL1/DPH1/DPX1). */
+/*-----------------------------------------------------------------*/
static void genSetDPTR(int n)
{
-#ifdef DPS_OPT
+
+#ifdef LAZY_DPS_OPT
+ /* If we are doing lazy evaluation, simply note the desired
+ * change, but don't emit any code yet.
+ */
if (_lazyDPS)
{
_desiredDPS = n;
- /* emitcode(";", "_desiredDPS = %d", n); */
return;
}
#endif
}
}
-static void _startAopGetLoop(void)
+/*-----------------------------------------------------------------*/
+/* _startLazyDPSEvaluation: call to start doing lazy DPS evaluation*/
+/* */
+/* Any code that operates on DPTR (NB: not on the individual */
+/* components, like DPH) *must* call _flushLazyDPS() before using */
+/* DPTR within a lazy DPS evaluation block. */
+/* */
+/* Note that aopPut and aopGet already contain the proper calls to */
+/* _flushLazyDPS, so it is safe to use these calls within a lazy */
+/* DPS evaluation block. */
+/* */
+/* Also, _flushLazyDPS must be called before any flow control */
+/* operations that could potentially branch out of the block. */
+/* */
+/* Lazy DPS evaluation is simply an optimization (though an */
+/* important one), so if in doubt, leave it out. */
+/*-----------------------------------------------------------------*/
+static void _startLazyDPSEvaluation(void)
{
_currentDPS = 0;
_desiredDPS = 0;
_lazyDPS = 1;
}
-static void _endAopGetLoop(void)
-{
- _lazyDPS = 0;
- if (_currentDPS)
- {
- genSetDPTR(0);
- }
- _currentDPS = 0;
- _desiredDPS = 0;
-}
-
-static void _aopFlushDPS(void)
+/*-----------------------------------------------------------------*/
+/* _flushLazyDPS: emit code to force the actual DPS setting to the */
+/* desired one. Call before using DPTR within a lazy DPS evaluation*/
+/* block. */
+/*-----------------------------------------------------------------*/
+static void _flushLazyDPS(void)
{
if (!_lazyDPS)
{
+ /* nothing to do. */
return;
}
+
if (_desiredDPS != _currentDPS)
{
if (_desiredDPS)
emitcode("dec", "dps");
}
_currentDPS = _desiredDPS;
- /* emitcode(";", "_currentDPS = _desiredDPS = %d", _currentDPS); */
}
}
+/*-----------------------------------------------------------------*/
+/* _endLazyDPSEvaluation: end lazy DPS evaluation block. */
+/* */
+/* Forces us back to the safe state (standard DPTR selected). */
+/*-----------------------------------------------------------------*/
+static void _endLazyDPSEvaluation(void)
+{
+ if (_currentDPS)
+ {
+ genSetDPTR(0);
+ _flushLazyDPS();
+ }
+ _lazyDPS = 0;
+ _currentDPS = 0;
+ _desiredDPS = 0;
+}
+
+
+
/*-----------------------------------------------------------------*/
/* pointerCode - returns the code for a pointer type */
/*-----------------------------------------------------------------*/
if (useDP2)
{
genSetDPTR(1);
- _aopFlushDPS();
+ _flushLazyDPS();
emitcode ("mov","dptr,#%s", sym->rname);
genSetDPTR(0);
}
}
}
- _aopFlushDPS();
+ _flushLazyDPS();
while (offset > aop->coff) {
emitcode ("inc","dptr");
{
genSetDPTR(1);
}
- _aopFlushDPS();
+ _flushLazyDPS();
if (aop->code) {
werror(E_INTERNAL_ERROR,__FILE__,__LINE__,
if (aop->type == AOP_DPTR2)
{
genSetDPTR(1);
- _aopFlushDPS();
+ _flushLazyDPS();
}
while (size--)
{
size = AOP_SIZE(op) - 1;
offset = 1;
- _startAopGetLoop();
+ _startLazyDPSEvaluation();
l = aopGet(op->aop,offset++,FALSE,FALSE,TRUE);
MOVA(l);
aopGet(op->aop,
offset++,FALSE,FALSE,FALSE));
}
- _endAopGetLoop();
+ _endLazyDPSEvaluation();
tlbl = newiTempLabel(NULL);
tlbl = newiTempLabel(NULL);
size--;
}
- _startAopGetLoop();
+ _startLazyDPSEvaluation();
if (AOP_NEEDSACC(oper))
{
emitcode("push", "b");
emitcode("orl","a,%s",aopGet(AOP(oper),offset++,FALSE,FALSE,FALSE));
}
}
- _endAopGetLoop();
+ _endLazyDPSEvaluation();
if (AOP_NEEDSACC(oper))
{
}
size = AOP_SIZE(IC_RESULT(ic));
- _startAopGetLoop();
+ _startLazyDPSEvaluation();
while (size--) {
char *l = aopGet(AOP(IC_LEFT(ic)),offset,FALSE,FALSE,TRUE);
MOVA(l);
emitcode("cpl","a");
aopPut(AOP(IC_RESULT(ic)),"a",offset++);
}
- _endAopGetLoop();
+ _endLazyDPSEvaluation();
release:
first it then copy the rest in place */
D(emitcode(";", "genUminusFloat"););
- _startAopGetLoop();
+ _startLazyDPSEvaluation();
size = AOP_SIZE(op) - 1;
l = aopGet(AOP(op),3,FALSE,FALSE,TRUE);
MOVA(l);
offset);
offset++;
}
- _endAopGetLoop();
+ _endLazyDPSEvaluation();
}
/*-----------------------------------------------------------------*/
size = AOP_SIZE(IC_LEFT(ic));
offset = 0 ;
//CLRC ;
- _startAopGetLoop();
+ _startLazyDPSEvaluation();
while(size--) {
char *l = aopGet(AOP(IC_LEFT(ic)),offset,FALSE,FALSE,TRUE);
if (!strcmp(l,"a")) {
}
aopPut(AOP(IC_RESULT(ic)),"a",offset++);
}
- _endAopGetLoop();
+ _endLazyDPSEvaluation();
/* if any remaining bytes in the result */
/* we just need to propagate the sign */
static void pushSide(operand * oper, int size)
{
int offset = 0;
- _startAopGetLoop();
+ _startLazyDPSEvaluation();
while (size--) {
char *l = aopGet(AOP(oper),offset++,FALSE,TRUE,FALSE);
if (AOP_TYPE(oper) != AOP_REG &&
} else
emitcode("push","%s",l);
}
- _endAopGetLoop();
+ _endLazyDPSEvaluation();
}
/*-----------------------------------------------------------------*/
{
int offset = 0;
int size = AOP_SIZE(oper);
+
+ _startLazyDPSEvaluation();
while (size--) {
aopPut(AOP(oper),fReturn[offset],offset);
offset++;
}
+ _endLazyDPSEvaluation();
}
emitcode("mov","%s,_spx",r->name);
size = AOP_SIZE(IC_LEFT(ic));
- _startAopGetLoop();
+ _startLazyDPSEvaluation();
while(size--) {
char *l = aopGet(AOP(IC_LEFT(ic)),
emitcode("inc","%s",r->name);
}
- _endAopGetLoop();
+ _endLazyDPSEvaluation();
emitcode("mov","_spx,%s",r->name);
aopOp(IC_LEFT(ic),ic,FALSE, FALSE);
size = AOP_SIZE(IC_LEFT(ic));
/* push it on the stack */
- _startAopGetLoop();
+ _startLazyDPSEvaluation();
while(size--) {
l = aopGet(AOP(IC_LEFT(ic)),offset++,FALSE,TRUE,TRUE);
if (*l == '#') {
}
emitcode("push","%s",l);
}
- _endAopGetLoop();
+ _endLazyDPSEvaluation();
return ;
}
// pushSide(IC_LEFT(ic), AOP_SIZE(IC_LEFT(ic)));
size = AOP_SIZE(IC_LEFT(ic));
- _startAopGetLoop();
+ _startLazyDPSEvaluation();
while (size--) {
l = aopGet(AOP(IC_LEFT(ic)),offset++,FALSE,TRUE,FALSE);
if (AOP_TYPE(IC_LEFT(ic)) != AOP_REG &&
} else
emitcode("push","%s",l);
}
- _endAopGetLoop();
+ _endLazyDPSEvaluation();
freeAsmop(IC_LEFT(ic),NULL,ic,TRUE);
}
aopOp(IC_LEFT(ic),ic,FALSE, FALSE);
size = AOP_SIZE(IC_LEFT(ic));
offset = (size-1);
- _startAopGetLoop();
+ _startLazyDPSEvaluation();
while (size--)
{
emitcode("pop","%s",aopGet(AOP(IC_LEFT(ic)),offset--,
FALSE,TRUE,TRUE));
}
- _endAopGetLoop();
+ _endLazyDPSEvaluation();
freeAsmop(IC_LEFT(ic),NULL,ic,TRUE);
}
aopOp(IC_LEFT(sic),sic,FALSE, TRUE);
size = AOP_SIZE(IC_LEFT(sic));
- _startAopGetLoop();
+ _startLazyDPSEvaluation();
while (size--) {
char *l = aopGet(AOP(IC_LEFT(sic)),offset,
FALSE, FALSE, TRUE);
l);
offset++;
}
- _endAopGetLoop();
+ _endLazyDPSEvaluation();
freeAsmop (IC_LEFT(sic),NULL,sic,TRUE);
}
_G.sendSet = NULL;
OP_SYMBOL(IC_RESULT(ic))->spildir )) ||
IS_TRUE_SYMOP(IC_RESULT(ic)) ) {
+#ifdef LAZY_DPS_OPT
+ /* Not really related to LAZY_DPS_OPT, but don't want
+ * another testing flag right now...
+ */
+ _G.accInUse++;
+ aopOp(IC_RESULT(ic),ic,FALSE, TRUE);
+ _G.accInUse--;
+
+ assignResultValue(IC_RESULT(ic));
+
+ freeAsmop(IC_RESULT(ic),NULL, ic,TRUE);
+
+#else
if (!isOperandInFarSpace(IC_RESULT(ic)))
{
- _G.accInUse++;
+ _G.accInUse++;
aopOp(IC_RESULT(ic),ic,FALSE, FALSE);
- _G.accInUse--;
+ _G.accInUse--;
- assignResultValue(IC_RESULT(ic));
+ assignResultValue(IC_RESULT(ic));
- freeAsmop(IC_RESULT(ic),NULL, ic,TRUE);
- }
+ freeAsmop(IC_RESULT(ic),NULL, ic,TRUE);
+ }
else
{
/* Result is in far space, and requires DPTR to access
aopPut(AOP(IC_RESULT(ic)),"a",++offset);
}
freeAsmop(IC_RESULT(ic),NULL,ic,TRUE);
- }
+ }
+#endif
}
/* adjust the stack for parameters if
aopOp(IC_LEFT(sic),sic,FALSE, FALSE);
size = AOP_SIZE(IC_LEFT(sic));
- _startAopGetLoop();
+ _startLazyDPSEvaluation();
while (size--)
{
char *l = aopGet(AOP(IC_LEFT(sic)),offset,
}
offset++;
}
- _endAopGetLoop();
+ _endLazyDPSEvaluation();
freeAsmop (IC_LEFT(sic),NULL,sic,TRUE);
}
_G.sendSet = NULL;
aopOp(IC_LEFT(ic),ic,FALSE, TRUE);
size = AOP_SIZE(IC_LEFT(ic));
- _startAopGetLoop();
+ _startLazyDPSEvaluation();
while (size--) {
char *l ;
if (AOP_TYPE(IC_LEFT(ic)) == AOP_DPTR) {
emitcode("mov","%s,%s",fReturn[offset++],l);
}
}
- _endAopGetLoop();
+ _endLazyDPSEvaluation();
if (pushed) {
while(pushed) {
aopPut(AOP(IC_RESULT(ic)),"a",0);
} else {
- _startAopGetLoop();
+ _startLazyDPSEvaluation();
while (icount--)
{
emitcode ("inc","%s",aopGet(AOP(IC_LEFT(ic)),0,FALSE,FALSE,FALSE));
}
- _endAopGetLoop();
+ _endLazyDPSEvaluation();
}
return TRUE ;
outBitC(IC_RESULT(ic));
} else {
size = getDataSize(IC_RESULT(ic));
- _startAopGetLoop();
+ _startLazyDPSEvaluation();
while (size--) {
MOVA(aopGet(AOP(IC_RIGHT(ic)),offset,FALSE,FALSE,TRUE));
emitcode("addc","a,#00");
aopPut(AOP(IC_RESULT(ic)),"a",offset++);
}
- _endAopGetLoop();
+ _endLazyDPSEvaluation();
}
goto release ;
}
}
size = getDataSize(pushResult ? IC_LEFT(ic) : IC_RESULT(ic));
- _startAopGetLoop();
+ _startLazyDPSEvaluation();
while(size--)
{
if (AOP_TYPE(IC_LEFT(ic)) == AOP_ACC)
}
offset++;
}
- _endAopGetLoop();
+ _endLazyDPSEvaluation();
if (pushResult)
{
AOP_TYPE(IC_RESULT(ic)) == AOP_REG &&
sameRegs(AOP(IC_LEFT(ic)), AOP(IC_RESULT(ic)))) {
- _startAopGetLoop();
+ _startLazyDPSEvaluation();
while (icount--)
{
emitcode ("dec","%s",aopGet(AOP(IC_RESULT(ic)),0,FALSE,FALSE,FALSE));
}
- _endAopGetLoop();
+ _endLazyDPSEvaluation();
return TRUE ;
}
/* if literal, add a,#-lit, else normal subb */
- _startAopGetLoop();
+ _startLazyDPSEvaluation();
while (size--) {
MOVA(aopGet(AOP(IC_LEFT(ic)),offset,FALSE,FALSE,TRUE));
if (AOP_TYPE(IC_RIGHT(ic)) != AOP_LIT)
}
offset++;
}
- _endAopGetLoop();
+ _endLazyDPSEvaluation();
if (pushResult)
{
offset = size - 1 ;
CLRC;
- _startAopGetLoop();
+ _startLazyDPSEvaluation();
while (size--) {
l = aopGet(AOP(left),offset,FALSE,FALSE,TRUE);
MOVA(l);
if (AOP_SIZE(result) > 1)
aopPut(AOP(result),"a",offset--);
}
- _endAopGetLoop();
+ _endLazyDPSEvaluation();
/* now we need to put the carry into the
highest order byte of the result */
aopPut(AOP(result),"a",offset++);
}
- _startAopGetLoop();
+ _startLazyDPSEvaluation();
while (size--) {
l = aopGet(AOP(left),offset,FALSE,FALSE,TRUE);
MOVA(l);
if (AOP_SIZE(result) > 1)
aopPut(AOP(result),"a",offset++);
}
- _endAopGetLoop();
+ _endLazyDPSEvaluation();
}
/* now we need to put the carry into the
highest order byte of the result */
size = AOP_SIZE(result);
offset=0;
- _startAopGetLoop();
+ _startLazyDPSEvaluation();
while (size--) {
l = aopGet(AOP(left),offset,FALSE,TRUE,FALSE);
if (*l == '@' && (IS_AOP_PREG(result))) {
aopPut(AOP(result),l,offset);
offset++;
}
- _endAopGetLoop();
+ _endLazyDPSEvaluation();
}
tlbl = newiTempLabel(NULL);
MOVA(l);
emitcode("add","a,acc");
aopPut(AOP(result),"a",offset++);
- _startAopGetLoop();
+ _startLazyDPSEvaluation();
while (--size) {
l = aopGet(AOP(result),offset,FALSE,FALSE,TRUE);
MOVA(l);
emitcode("rlc","a");
aopPut(AOP(result),"a",offset++);
}
- _endAopGetLoop();
+ _endLazyDPSEvaluation();
reAdjustPreg(AOP(result));
emitcode("","%05d$:",tlbl1->key+100);
size = AOP_SIZE(result);
offset=0;
- _startAopGetLoop();
+ _startLazyDPSEvaluation();
while (size--) {
l = aopGet(AOP(left),offset,FALSE,TRUE,FALSE);
if (*l == '@' && IS_AOP_PREG(result)) {
aopPut(AOP(result),l,offset);
offset++;
}
- _endAopGetLoop();
+ _endLazyDPSEvaluation();
}
/* mov the highest order bit to OVR */
emitcode("sjmp","%05d$",tlbl1->key+100);
emitcode("","%05d$:",tlbl->key+100);
emitcode("mov","c,ov");
- _startAopGetLoop();
+ _startLazyDPSEvaluation();
while (size--) {
l = aopGet(AOP(result),offset,FALSE,FALSE,TRUE);
MOVA(l);
emitcode("rrc","a");
aopPut(AOP(result),"a",offset--);
}
- _endAopGetLoop();
+ _endLazyDPSEvaluation();
reAdjustPreg(AOP(result));
emitcode("","%05d$:",tlbl1->key+100);
emitcode("djnz","b,%05d$",tlbl->key+100);
size = AOP_SIZE(result);
offset=0;
- _startAopGetLoop();
+ _startLazyDPSEvaluation();
while (size--) {
l = aopGet(AOP(left),offset,FALSE,TRUE,FALSE);
if (*l == '@' && IS_AOP_PREG(result)) {
aopPut(AOP(result),l,offset);
offset++;
}
- _endAopGetLoop();
+ _endLazyDPSEvaluation();
}
tlbl = newiTempLabel(NULL);
emitcode("sjmp","%05d$",tlbl1->key+100);
emitcode("","%05d$:",tlbl->key+100);
CLRC;
- _startAopGetLoop();
+ _startLazyDPSEvaluation();
while (size--) {
l = aopGet(AOP(result),offset,FALSE,FALSE,TRUE);
MOVA(l);
emitcode("rrc","a");
aopPut(AOP(result),"a",offset--);
}
- _endAopGetLoop();
+ _endLazyDPSEvaluation();
reAdjustPreg(AOP(result));
emitcode("","%05d$:",tlbl1->key+100);
/* get the string representation of the name */
l = aopGet(AOP(left),0,FALSE,TRUE,FALSE);
size = AOP_SIZE(result);
- _startAopGetLoop();
+ _startLazyDPSEvaluation();
while (size--) {
if (offset)
sprintf(buffer,"(%s + %d)",l+1,offset);
sprintf(buffer,"%s",l+1);
aopPut(AOP(result),buffer,offset++);
}
- _endAopGetLoop();
+ _endLazyDPSEvaluation();
freeAsmop(left,NULL,ic,TRUE);
freeAsmop(result,NULL,ic,TRUE);
else
{
/* we need to get it byte by byte */
- _startAopGetLoop();
+ _startLazyDPSEvaluation();
if (AOP_TYPE(left) != AOP_DPTR)
{
emitcode("mov","dpl,%s",aopGet(AOP(left),0,FALSE,FALSE,TRUE));
emitcode("pop", "dph");
emitcode("pop", "dpl");
}
- _endAopGetLoop();
+ _endLazyDPSEvaluation();
}
}
/* so dptr know contains the address */
if (AOP_TYPE(left) == AOP_IMMD)
emitcode("mov","dptr,%s",aopGet(AOP(left),0,TRUE,FALSE,FALSE));
else { /* we need to get it byte by byte */
- _startAopGetLoop();
+ _startLazyDPSEvaluation();
emitcode("mov","dpl,%s",aopGet(AOP(left),0,FALSE,FALSE,TRUE));
emitcode("mov","dph,%s",aopGet(AOP(left),1,FALSE,FALSE,TRUE));
emitcode("mov","dpx,%s",aopGet(AOP(left),2,FALSE,FALSE,TRUE));
- _endAopGetLoop();
+ _endLazyDPSEvaluation();
}
}
/* so dptr know contains the address */
emitcode("mov","b,#%d",pointerCode(retype));
}
else { /* we need to get it byte by byte */
- _startAopGetLoop();
+ _startLazyDPSEvaluation();
emitcode("mov","dpl,%s",aopGet(AOP(left),0,FALSE,FALSE,TRUE));
emitcode("mov","dph,%s",aopGet(AOP(left),1,FALSE,FALSE,TRUE));
if (options.model == MODEL_FLAT24)
{
emitcode("mov","b,%s",aopGet(AOP(left),2,FALSE,FALSE,TRUE));
}
- _endAopGetLoop();
+ _endLazyDPSEvaluation();
}
}
/* so dptr know contains the address */
else
{
/* we need to get it byte by byte */
- _startAopGetLoop();
+ _startLazyDPSEvaluation();
if (AOP_TYPE(result) != AOP_DPTR)
{
emitcode("mov","dpl,%s",aopGet(AOP(result),0,FALSE,FALSE,TRUE));
emitcode("pop", "dph");
emitcode("pop", "dpl");
}
- _endAopGetLoop();
+ _endLazyDPSEvaluation();
}
}
/* so dptr know contains the address */
size = AOP_SIZE(right);
offset = 0 ;
- _startAopGetLoop();
+ _startLazyDPSEvaluation();
while (size--) {
char *l = aopGet(AOP(right),offset++,FALSE,FALSE,TRUE);
MOVA(l);
if (size)
emitcode("inc","dptr");
}
- _endAopGetLoop();
+ _endLazyDPSEvaluation();
}
freeAsmop(right,NULL,ic,TRUE);
/* if the operand is already in dptr
then we do nothing else we move the value to dptr */
if (AOP_TYPE(result) != AOP_STR) {
- _startAopGetLoop();
+ _startLazyDPSEvaluation();
/* if this is remateriazable */
if (AOP_TYPE(result) == AOP_IMMD) {
emitcode("mov","dptr,%s",aopGet(AOP(result),0,TRUE,FALSE,FALSE));
emitcode("mov","dpx,%s",aopGet(AOP(result),2,FALSE,FALSE,TRUE));
emitcode("mov","b,%s",aopGet(AOP(result),3,FALSE,FALSE,TRUE));
}
- _endAopGetLoop();
+ _endLazyDPSEvaluation();
}
/* so dptr know contains the address */
freeAsmop(result,NULL,ic,TRUE);
D(emitcode(";", "genFarFarAssign "););
/* first push the right side on to the stack */
- _startAopGetLoop();
+ _startLazyDPSEvaluation();
while (size--) {
l = aopGet(AOP(right),offset++,FALSE,FALSE,TRUE);
MOVA(l);
aopPut(AOP(result),"a",--offset);
}
freeAsmop(result,NULL,ic,FALSE);
- _endAopGetLoop();
+ _endLazyDPSEvaluation();
}
offset = 0 ;
if(AOP_TYPE(right) == AOP_LIT)
lit = (unsigned long)floatFromVal(AOP(right)->aopu.aop_lit);
+
if((size > 1) &&
(AOP_TYPE(result) != AOP_REG) &&
(AOP_TYPE(right) == AOP_LIT) &&
- !IS_FLOAT(operandType(right)) &&
- (lit < 256L)){
+ !IS_FLOAT(operandType(right))
+#ifndef LAZY_DPS_OPT
+ && (lit < 256L)
+#endif
+ )
+ {
+#ifdef LAZY_DPS_OPT
+ D(emitcode(";", "Kevin's better literal load code"););
+ _startLazyDPSEvaluation();
+ while (size && ((unsigned int)((lit >> (offset*8)) & 0xff) != 0))
+ {
+ aopPut(AOP(result),
+ aopGet(AOP(right),offset,FALSE,FALSE,TRUE),
+ offset);
+ offset++;
+ size--;
+ }
+ /* And now fill the rest with zeros. */
+ if (size)
+ {
+ emitcode("clr","a");
+ }
+ while (size--)
+ {
+ aopPut(AOP(result), "a", offset++);
+ }
+ _endLazyDPSEvaluation();
+#else
emitcode("clr","a");
- _startAopGetLoop();
+ _startLazyDPSEvaluation();
while (size--)
{
if((unsigned int)((lit >> (size*8)) & 0x0FFL)== 0)
aopGet(AOP(right),size,FALSE,FALSE,FALSE),
size);
}
- _endAopGetLoop();
- } else {
- _startAopGetLoop();
+ _endLazyDPSEvaluation();
+#endif
+ }
+ else
+ {
+ _startLazyDPSEvaluation();
while (size--)
{
aopPut(AOP(result),
offset);
offset++;
}
- _endAopGetLoop();
+ _endLazyDPSEvaluation();
}
release:
/* if they in different places then copy */
size = AOP_SIZE(result);
offset = 0 ;
- _startAopGetLoop();
+ _startLazyDPSEvaluation();
while (size--) {
aopPut(AOP(result),
aopGet(AOP(right),offset,FALSE,FALSE,FALSE),
offset);
offset++;
}
- _endAopGetLoop();
+ _endLazyDPSEvaluation();
goto release;
}
/* the first two bytes are known */
size = GPTRSIZE - 1;
offset = 0 ;
- _startAopGetLoop();
+ _startLazyDPSEvaluation();
while (size--) {
aopPut(AOP(result),
aopGet(AOP(right),offset,FALSE,FALSE,FALSE),
offset);
offset++;
}
- _endAopGetLoop();
+ _endLazyDPSEvaluation();
/* the last byte depending on type */
switch (p_type) {
/* just copy the pointers */
size = AOP_SIZE(result);
offset = 0 ;
- _startAopGetLoop();
+ _startLazyDPSEvaluation();
while (size--) {
aopPut(AOP(result),
aopGet(AOP(right),offset,FALSE,FALSE,FALSE),
offset);
offset++;
}
- _endAopGetLoop();
+ _endLazyDPSEvaluation();
goto release ;
}
/* we move to result for the size of source */
size = AOP_SIZE(right);
offset = 0 ;
- _startAopGetLoop();
+ _startLazyDPSEvaluation();
while (size--) {
aopPut(AOP(result),
aopGet(AOP(right),offset,FALSE,FALSE,FALSE),
offset);
offset++;
}
- _endAopGetLoop();
+ _endLazyDPSEvaluation();
/* now depending on the sign of the source && destination */
size = AOP_SIZE(result) - AOP_SIZE(right);