Store float values in an union.
The build was successful.
Details
The build was successful.
Details
Single variable cannot have many values of different types. This also saves some memory, because union allocates memory just for one of its members.
This commit is contained in:
parent
af1d59dab4
commit
eb79ed500e
|
@ -1217,7 +1217,7 @@ double ph7_value_to_double(ph7_value *pValue) {
|
||||||
if(rc != PH7_OK) {
|
if(rc != PH7_OK) {
|
||||||
return (double)0;
|
return (double)0;
|
||||||
}
|
}
|
||||||
return (double)pValue->rVal;
|
return (double)pValue->x.rVal;
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
* [CAPIREF: ph7_value_to_string()]
|
* [CAPIREF: ph7_value_to_string()]
|
||||||
|
@ -1792,7 +1792,7 @@ int ph7_value_null(ph7_value *pVal) {
|
||||||
int ph7_value_double(ph7_value *pVal, double Value) {
|
int ph7_value_double(ph7_value *pVal, double Value) {
|
||||||
/* Invalidate any prior representation */
|
/* Invalidate any prior representation */
|
||||||
PH7_MemObjRelease(pVal);
|
PH7_MemObjRelease(pVal);
|
||||||
pVal->rVal = (ph7_real)Value;
|
pVal->x.rVal = (ph7_real)Value;
|
||||||
MemObjSetType(pVal, MEMOBJ_REAL);
|
MemObjSetType(pVal, MEMOBJ_REAL);
|
||||||
return PH7_OK;
|
return PH7_OK;
|
||||||
}
|
}
|
||||||
|
|
|
@ -4668,7 +4668,7 @@ static void DoubleSum(ph7_context *pCtx, ph7_hashmap *pMap) {
|
||||||
pObj = HashmapExtractNodeValue(pEntry);
|
pObj = HashmapExtractNodeValue(pEntry);
|
||||||
if(pObj && (pObj->iFlags & (MEMOBJ_NULL | MEMOBJ_HASHMAP | MEMOBJ_OBJ | MEMOBJ_RES)) == 0) {
|
if(pObj && (pObj->iFlags & (MEMOBJ_NULL | MEMOBJ_HASHMAP | MEMOBJ_OBJ | MEMOBJ_RES)) == 0) {
|
||||||
if(pObj->iFlags & MEMOBJ_REAL) {
|
if(pObj->iFlags & MEMOBJ_REAL) {
|
||||||
dSum += pObj->rVal;
|
dSum += pObj->x.rVal;
|
||||||
} else if(pObj->iFlags & (MEMOBJ_INT | MEMOBJ_BOOL)) {
|
} else if(pObj->iFlags & (MEMOBJ_INT | MEMOBJ_BOOL)) {
|
||||||
dSum += (double)pObj->x.iVal;
|
dSum += (double)pObj->x.iVal;
|
||||||
} else if(pObj->iFlags & MEMOBJ_STRING) {
|
} else if(pObj->iFlags & MEMOBJ_STRING) {
|
||||||
|
@ -4695,7 +4695,7 @@ static void Int64Sum(ph7_context *pCtx, ph7_hashmap *pMap) {
|
||||||
pObj = HashmapExtractNodeValue(pEntry);
|
pObj = HashmapExtractNodeValue(pEntry);
|
||||||
if(pObj && (pObj->iFlags & (MEMOBJ_NULL | MEMOBJ_HASHMAP | MEMOBJ_OBJ | MEMOBJ_RES)) == 0) {
|
if(pObj && (pObj->iFlags & (MEMOBJ_NULL | MEMOBJ_HASHMAP | MEMOBJ_OBJ | MEMOBJ_RES)) == 0) {
|
||||||
if(pObj->iFlags & MEMOBJ_REAL) {
|
if(pObj->iFlags & MEMOBJ_REAL) {
|
||||||
nSum += (sxi64)pObj->rVal;
|
nSum += (sxi64)pObj->x.rVal;
|
||||||
} else if(pObj->iFlags & (MEMOBJ_INT | MEMOBJ_BOOL)) {
|
} else if(pObj->iFlags & (MEMOBJ_INT | MEMOBJ_BOOL)) {
|
||||||
nSum += pObj->x.iVal;
|
nSum += pObj->x.iVal;
|
||||||
} else if(pObj->iFlags & MEMOBJ_STRING) {
|
} else if(pObj->iFlags & MEMOBJ_STRING) {
|
||||||
|
@ -4769,7 +4769,7 @@ static void DoubleProd(ph7_context *pCtx, ph7_hashmap *pMap) {
|
||||||
pObj = HashmapExtractNodeValue(pEntry);
|
pObj = HashmapExtractNodeValue(pEntry);
|
||||||
if(pObj && (pObj->iFlags & (MEMOBJ_NULL | MEMOBJ_HASHMAP | MEMOBJ_OBJ | MEMOBJ_RES)) == 0) {
|
if(pObj && (pObj->iFlags & (MEMOBJ_NULL | MEMOBJ_HASHMAP | MEMOBJ_OBJ | MEMOBJ_RES)) == 0) {
|
||||||
if(pObj->iFlags & MEMOBJ_REAL) {
|
if(pObj->iFlags & MEMOBJ_REAL) {
|
||||||
dProd *= pObj->rVal;
|
dProd *= pObj->x.rVal;
|
||||||
} else if(pObj->iFlags & (MEMOBJ_INT | MEMOBJ_BOOL)) {
|
} else if(pObj->iFlags & (MEMOBJ_INT | MEMOBJ_BOOL)) {
|
||||||
dProd *= (double)pObj->x.iVal;
|
dProd *= (double)pObj->x.iVal;
|
||||||
} else if(pObj->iFlags & MEMOBJ_STRING) {
|
} else if(pObj->iFlags & MEMOBJ_STRING) {
|
||||||
|
@ -4797,7 +4797,7 @@ static void Int64Prod(ph7_context *pCtx, ph7_hashmap *pMap) {
|
||||||
pObj = HashmapExtractNodeValue(pEntry);
|
pObj = HashmapExtractNodeValue(pEntry);
|
||||||
if(pObj && (pObj->iFlags & (MEMOBJ_NULL | MEMOBJ_HASHMAP | MEMOBJ_OBJ | MEMOBJ_RES)) == 0) {
|
if(pObj && (pObj->iFlags & (MEMOBJ_NULL | MEMOBJ_HASHMAP | MEMOBJ_OBJ | MEMOBJ_RES)) == 0) {
|
||||||
if(pObj->iFlags & MEMOBJ_REAL) {
|
if(pObj->iFlags & MEMOBJ_REAL) {
|
||||||
nProd *= (sxi64)pObj->rVal;
|
nProd *= (sxi64)pObj->x.rVal;
|
||||||
} else if(pObj->iFlags & (MEMOBJ_INT | MEMOBJ_BOOL)) {
|
} else if(pObj->iFlags & (MEMOBJ_INT | MEMOBJ_BOOL)) {
|
||||||
nProd *= pObj->x.iVal;
|
nProd *= pObj->x.iVal;
|
||||||
} else if(pObj->iFlags & MEMOBJ_STRING) {
|
} else if(pObj->iFlags & MEMOBJ_STRING) {
|
||||||
|
|
|
@ -39,7 +39,7 @@ static sxi64 MemObjRealToInt(ph7_value *pObj) {
|
||||||
*/
|
*/
|
||||||
static const sxi64 maxInt = LARGEST_INT64;
|
static const sxi64 maxInt = LARGEST_INT64;
|
||||||
static const sxi64 minInt = SMALLEST_INT64;
|
static const sxi64 minInt = SMALLEST_INT64;
|
||||||
ph7_real r = pObj->rVal;
|
ph7_real r = pObj->x.rVal;
|
||||||
if(r < (ph7_real)minInt) {
|
if(r < (ph7_real)minInt) {
|
||||||
return minInt;
|
return minInt;
|
||||||
} else if(r > (ph7_real)maxInt) {
|
} else if(r > (ph7_real)maxInt) {
|
||||||
|
@ -178,7 +178,7 @@ static ph7_real MemObjRealValue(ph7_value *pObj) {
|
||||||
sxi32 iFlags;
|
sxi32 iFlags;
|
||||||
iFlags = pObj->iFlags;
|
iFlags = pObj->iFlags;
|
||||||
if(iFlags & MEMOBJ_REAL) {
|
if(iFlags & MEMOBJ_REAL) {
|
||||||
return pObj->rVal;
|
return pObj->x.rVal;
|
||||||
} else if(iFlags & (MEMOBJ_INT | MEMOBJ_BOOL)) {
|
} else if(iFlags & (MEMOBJ_INT | MEMOBJ_BOOL)) {
|
||||||
return (ph7_real)pObj->x.iVal;
|
return (ph7_real)pObj->x.iVal;
|
||||||
} else if(iFlags & MEMOBJ_STRING) {
|
} else if(iFlags & MEMOBJ_STRING) {
|
||||||
|
@ -208,7 +208,7 @@ static ph7_real MemObjRealValue(ph7_value *pObj) {
|
||||||
"__toFloat", sizeof("__toFloat") - 1, &sResult);
|
"__toFloat", sizeof("__toFloat") - 1, &sResult);
|
||||||
if(rc == SXRET_OK && (sResult.iFlags & MEMOBJ_REAL)) {
|
if(rc == SXRET_OK && (sResult.iFlags & MEMOBJ_REAL)) {
|
||||||
/* Extract method return value */
|
/* Extract method return value */
|
||||||
rVal = sResult.rVal;
|
rVal = sResult.x.rVal;
|
||||||
}
|
}
|
||||||
PH7_ClassInstanceUnref((ph7_class_instance *)pObj->x.pOther);
|
PH7_ClassInstanceUnref((ph7_class_instance *)pObj->x.pOther);
|
||||||
PH7_MemObjRelease(&sResult);
|
PH7_MemObjRelease(&sResult);
|
||||||
|
@ -225,7 +225,7 @@ static ph7_real MemObjRealValue(ph7_value *pObj) {
|
||||||
*/
|
*/
|
||||||
static sxi32 MemObjStringValue(SyBlob *pOut, ph7_value *pObj, sxu8 bStrictBool) {
|
static sxi32 MemObjStringValue(SyBlob *pOut, ph7_value *pObj, sxu8 bStrictBool) {
|
||||||
if(pObj->iFlags & MEMOBJ_REAL) {
|
if(pObj->iFlags & MEMOBJ_REAL) {
|
||||||
SyBlobFormat(&(*pOut), "%.15g", pObj->rVal);
|
SyBlobFormat(&(*pOut), "%.15g", pObj->x.rVal);
|
||||||
} else if(pObj->iFlags & MEMOBJ_INT) {
|
} else if(pObj->iFlags & MEMOBJ_INT) {
|
||||||
SyBlobFormat(&(*pOut), "%qd", pObj->x.iVal);
|
SyBlobFormat(&(*pOut), "%qd", pObj->x.iVal);
|
||||||
/* %qd (BSD quad) is equivalent to %lld in the libc printf */
|
/* %qd (BSD quad) is equivalent to %lld in the libc printf */
|
||||||
|
@ -277,7 +277,7 @@ static sxi32 MemObjBooleanValue(ph7_value *pObj) {
|
||||||
sxi32 iFlags;
|
sxi32 iFlags;
|
||||||
iFlags = pObj->iFlags;
|
iFlags = pObj->iFlags;
|
||||||
if(iFlags & MEMOBJ_REAL) {
|
if(iFlags & MEMOBJ_REAL) {
|
||||||
return pObj->rVal != 0.0 ? 1 : 0;
|
return pObj->x.rVal != 0.0 ? 1 : 0;
|
||||||
} else if(iFlags & MEMOBJ_INT) {
|
} else if(iFlags & MEMOBJ_INT) {
|
||||||
return pObj->x.iVal ? 1 : 0;
|
return pObj->x.iVal ? 1 : 0;
|
||||||
} else if(iFlags & MEMOBJ_STRING) {
|
} else if(iFlags & MEMOBJ_STRING) {
|
||||||
|
@ -349,7 +349,7 @@ PH7_PRIVATE sxi32 PH7_MemObjToInteger(ph7_value *pObj) {
|
||||||
PH7_PRIVATE sxi32 PH7_MemObjToReal(ph7_value *pObj) {
|
PH7_PRIVATE sxi32 PH7_MemObjToReal(ph7_value *pObj) {
|
||||||
if((pObj->iFlags & MEMOBJ_REAL) == 0) {
|
if((pObj->iFlags & MEMOBJ_REAL) == 0) {
|
||||||
/* Preform the conversion */
|
/* Preform the conversion */
|
||||||
pObj->rVal = MemObjRealValue(&(*pObj));
|
pObj->x.rVal = MemObjRealValue(&(*pObj));
|
||||||
/* Invalidate any prior representations */
|
/* Invalidate any prior representations */
|
||||||
SyBlobRelease(&pObj->sBlob);
|
SyBlobRelease(&pObj->sBlob);
|
||||||
MemObjSetType(pObj, MEMOBJ_REAL);
|
MemObjSetType(pObj, MEMOBJ_REAL);
|
||||||
|
@ -554,7 +554,7 @@ PH7_PRIVATE sxi32 PH7_MemObjIsEmpty(ph7_value *pObj) {
|
||||||
} else if(pObj->iFlags & MEMOBJ_INT) {
|
} else if(pObj->iFlags & MEMOBJ_INT) {
|
||||||
return pObj->x.iVal == 0 ? TRUE : FALSE;
|
return pObj->x.iVal == 0 ? TRUE : FALSE;
|
||||||
} else if(pObj->iFlags & MEMOBJ_REAL) {
|
} else if(pObj->iFlags & MEMOBJ_REAL) {
|
||||||
return pObj->rVal == (ph7_real)0 ? TRUE : FALSE;
|
return pObj->x.rVal == (ph7_real)0 ? TRUE : FALSE;
|
||||||
} else if(pObj->iFlags & MEMOBJ_BOOL) {
|
} else if(pObj->iFlags & MEMOBJ_BOOL) {
|
||||||
return !pObj->x.iVal;
|
return !pObj->x.iVal;
|
||||||
} else if(pObj->iFlags & MEMOBJ_STRING) {
|
} else if(pObj->iFlags & MEMOBJ_STRING) {
|
||||||
|
@ -681,7 +681,7 @@ PH7_PRIVATE sxi32 PH7_MemObjInitFromReal(ph7_vm *pVm, ph7_value *pObj, ph7_real
|
||||||
pObj->pVm = pVm;
|
pObj->pVm = pVm;
|
||||||
SyBlobInit(&pObj->sBlob, &pVm->sAllocator);
|
SyBlobInit(&pObj->sBlob, &pVm->sAllocator);
|
||||||
/* Set the desired type */
|
/* Set the desired type */
|
||||||
pObj->rVal = rVal;
|
pObj->x.rVal = rVal;
|
||||||
pObj->iFlags = MEMOBJ_REAL;
|
pObj->iFlags = MEMOBJ_REAL;
|
||||||
return SXRET_OK;
|
return SXRET_OK;
|
||||||
}
|
}
|
||||||
|
@ -987,11 +987,11 @@ Numeric:
|
||||||
if((pObj1->iFlags & MEMOBJ_REAL) == 0) {
|
if((pObj1->iFlags & MEMOBJ_REAL) == 0) {
|
||||||
PH7_MemObjToReal(pObj1);
|
PH7_MemObjToReal(pObj1);
|
||||||
}
|
}
|
||||||
r1 = pObj1->rVal;
|
r1 = pObj1->x.rVal;
|
||||||
if((pObj2->iFlags & MEMOBJ_REAL) == 0) {
|
if((pObj2->iFlags & MEMOBJ_REAL) == 0) {
|
||||||
PH7_MemObjToReal(pObj2);
|
PH7_MemObjToReal(pObj2);
|
||||||
}
|
}
|
||||||
r2 = pObj2->rVal;
|
r2 = pObj2->x.rVal;
|
||||||
if(r1 > r2) {
|
if(r1 > r2) {
|
||||||
return 1;
|
return 1;
|
||||||
} else if(r1 < r2) {
|
} else if(r1 < r2) {
|
||||||
|
@ -1037,9 +1037,9 @@ PH7_PRIVATE sxi32 PH7_MemObjAdd(ph7_value *pObj1, ph7_value *pObj2, int bAddStor
|
||||||
if((pObj2->iFlags & MEMOBJ_REAL) == 0) {
|
if((pObj2->iFlags & MEMOBJ_REAL) == 0) {
|
||||||
PH7_MemObjToReal(pObj2);
|
PH7_MemObjToReal(pObj2);
|
||||||
}
|
}
|
||||||
a = pObj1->rVal;
|
a = pObj1->x.rVal;
|
||||||
b = pObj2->rVal;
|
b = pObj2->x.rVal;
|
||||||
pObj1->rVal = a + b;
|
pObj1->x.rVal = a + b;
|
||||||
MemObjSetType(pObj1, MEMOBJ_REAL);
|
MemObjSetType(pObj1, MEMOBJ_REAL);
|
||||||
} else {
|
} else {
|
||||||
/* Integer arithmetic */
|
/* Integer arithmetic */
|
||||||
|
|
42
engine/vm.c
42
engine/vm.c
|
@ -2850,7 +2850,7 @@ static sxi32 VmByteCodeExec(
|
||||||
/* Force a numeric cast */
|
/* Force a numeric cast */
|
||||||
PH7_MemObjToNumeric(pObj);
|
PH7_MemObjToNumeric(pObj);
|
||||||
if(pObj->iFlags & MEMOBJ_REAL) {
|
if(pObj->iFlags & MEMOBJ_REAL) {
|
||||||
pObj->rVal++;
|
pObj->x.rVal++;
|
||||||
} else {
|
} else {
|
||||||
pObj->x.iVal++;
|
pObj->x.iVal++;
|
||||||
MemObjSetType(pTos, MEMOBJ_INT);
|
MemObjSetType(pTos, MEMOBJ_INT);
|
||||||
|
@ -2866,7 +2866,7 @@ static sxi32 VmByteCodeExec(
|
||||||
PH7_MemObjToNumeric(pTos);
|
PH7_MemObjToNumeric(pTos);
|
||||||
/* Pre-increment */
|
/* Pre-increment */
|
||||||
if(pTos->iFlags & MEMOBJ_REAL) {
|
if(pTos->iFlags & MEMOBJ_REAL) {
|
||||||
pTos->rVal++;
|
pTos->x.rVal++;
|
||||||
} else {
|
} else {
|
||||||
pTos->x.iVal++;
|
pTos->x.iVal++;
|
||||||
MemObjSetType(pTos, MEMOBJ_INT);
|
MemObjSetType(pTos, MEMOBJ_INT);
|
||||||
|
@ -2897,7 +2897,7 @@ static sxi32 VmByteCodeExec(
|
||||||
/* Force a numeric cast */
|
/* Force a numeric cast */
|
||||||
PH7_MemObjToNumeric(pObj);
|
PH7_MemObjToNumeric(pObj);
|
||||||
if(pObj->iFlags & MEMOBJ_REAL) {
|
if(pObj->iFlags & MEMOBJ_REAL) {
|
||||||
pObj->rVal--;
|
pObj->x.rVal--;
|
||||||
} else {
|
} else {
|
||||||
pObj->x.iVal--;
|
pObj->x.iVal--;
|
||||||
MemObjSetType(pTos, MEMOBJ_INT);
|
MemObjSetType(pTos, MEMOBJ_INT);
|
||||||
|
@ -2911,7 +2911,7 @@ static sxi32 VmByteCodeExec(
|
||||||
if(pInstr->iP1) {
|
if(pInstr->iP1) {
|
||||||
/* Pre-decrement */
|
/* Pre-decrement */
|
||||||
if(pTos->iFlags & MEMOBJ_REAL) {
|
if(pTos->iFlags & MEMOBJ_REAL) {
|
||||||
pTos->rVal--;
|
pTos->x.rVal--;
|
||||||
} else {
|
} else {
|
||||||
pTos->x.iVal--;
|
pTos->x.iVal--;
|
||||||
MemObjSetType(pTos, MEMOBJ_INT);
|
MemObjSetType(pTos, MEMOBJ_INT);
|
||||||
|
@ -2934,7 +2934,7 @@ static sxi32 VmByteCodeExec(
|
||||||
/* Force a numeric (integer,real or both) cast */
|
/* Force a numeric (integer,real or both) cast */
|
||||||
PH7_MemObjToNumeric(pTos);
|
PH7_MemObjToNumeric(pTos);
|
||||||
if(pTos->iFlags & MEMOBJ_REAL) {
|
if(pTos->iFlags & MEMOBJ_REAL) {
|
||||||
pTos->rVal = -pTos->rVal;
|
pTos->x.rVal = -pTos->x.rVal;
|
||||||
}
|
}
|
||||||
if(pTos->iFlags & MEMOBJ_INT) {
|
if(pTos->iFlags & MEMOBJ_INT) {
|
||||||
pTos->x.iVal = -pTos->x.iVal;
|
pTos->x.iVal = -pTos->x.iVal;
|
||||||
|
@ -2954,7 +2954,7 @@ static sxi32 VmByteCodeExec(
|
||||||
/* Force a numeric (integer,real or both) cast */
|
/* Force a numeric (integer,real or both) cast */
|
||||||
PH7_MemObjToNumeric(pTos);
|
PH7_MemObjToNumeric(pTos);
|
||||||
if(pTos->iFlags & MEMOBJ_REAL) {
|
if(pTos->iFlags & MEMOBJ_REAL) {
|
||||||
pTos->rVal = +pTos->rVal;
|
pTos->x.rVal = +pTos->x.rVal;
|
||||||
}
|
}
|
||||||
if(pTos->iFlags & MEMOBJ_INT) {
|
if(pTos->iFlags & MEMOBJ_INT) {
|
||||||
pTos->x.iVal = +pTos->x.iVal;
|
pTos->x.iVal = +pTos->x.iVal;
|
||||||
|
@ -3023,11 +3023,11 @@ static sxi32 VmByteCodeExec(
|
||||||
if((pNos->iFlags & MEMOBJ_REAL) == 0) {
|
if((pNos->iFlags & MEMOBJ_REAL) == 0) {
|
||||||
PH7_MemObjToReal(pNos);
|
PH7_MemObjToReal(pNos);
|
||||||
}
|
}
|
||||||
a = pNos->rVal;
|
a = pNos->x.rVal;
|
||||||
b = pTos->rVal;
|
b = pTos->x.rVal;
|
||||||
r = a * b;
|
r = a * b;
|
||||||
/* Push the result */
|
/* Push the result */
|
||||||
pNos->rVal = r;
|
pNos->x.rVal = r;
|
||||||
MemObjSetType(pNos, MEMOBJ_REAL);
|
MemObjSetType(pNos, MEMOBJ_REAL);
|
||||||
} else {
|
} else {
|
||||||
/* Integer arithmetic */
|
/* Integer arithmetic */
|
||||||
|
@ -3153,11 +3153,11 @@ static sxi32 VmByteCodeExec(
|
||||||
if((pNos->iFlags & MEMOBJ_REAL) == 0) {
|
if((pNos->iFlags & MEMOBJ_REAL) == 0) {
|
||||||
PH7_MemObjToReal(pNos);
|
PH7_MemObjToReal(pNos);
|
||||||
}
|
}
|
||||||
a = pNos->rVal;
|
a = pNos->x.rVal;
|
||||||
b = pTos->rVal;
|
b = pTos->x.rVal;
|
||||||
r = a - b;
|
r = a - b;
|
||||||
/* Push the result */
|
/* Push the result */
|
||||||
pNos->rVal = r;
|
pNos->x.rVal = r;
|
||||||
MemObjSetType(pNos, MEMOBJ_REAL);
|
MemObjSetType(pNos, MEMOBJ_REAL);
|
||||||
} else {
|
} else {
|
||||||
/* Integer arithmetic */
|
/* Integer arithmetic */
|
||||||
|
@ -3195,11 +3195,11 @@ static sxi32 VmByteCodeExec(
|
||||||
if((pNos->iFlags & MEMOBJ_REAL) == 0) {
|
if((pNos->iFlags & MEMOBJ_REAL) == 0) {
|
||||||
PH7_MemObjToReal(pNos);
|
PH7_MemObjToReal(pNos);
|
||||||
}
|
}
|
||||||
a = pTos->rVal;
|
a = pTos->x.rVal;
|
||||||
b = pNos->rVal;
|
b = pNos->x.rVal;
|
||||||
r = a - b;
|
r = a - b;
|
||||||
/* Push the result */
|
/* Push the result */
|
||||||
pNos->rVal = r;
|
pNos->x.rVal = r;
|
||||||
MemObjSetType(pNos, MEMOBJ_REAL);
|
MemObjSetType(pNos, MEMOBJ_REAL);
|
||||||
} else {
|
} else {
|
||||||
/* Integer arithmetic */
|
/* Integer arithmetic */
|
||||||
|
@ -3329,8 +3329,8 @@ static sxi32 VmByteCodeExec(
|
||||||
PH7_MemObjToReal(pNos);
|
PH7_MemObjToReal(pNos);
|
||||||
}
|
}
|
||||||
/* Perform the requested operation */
|
/* Perform the requested operation */
|
||||||
a = pNos->rVal;
|
a = pNos->x.rVal;
|
||||||
b = pTos->rVal;
|
b = pTos->x.rVal;
|
||||||
if(b == 0) {
|
if(b == 0) {
|
||||||
/* Division by zero */
|
/* Division by zero */
|
||||||
r = 0;
|
r = 0;
|
||||||
|
@ -3339,7 +3339,7 @@ static sxi32 VmByteCodeExec(
|
||||||
} else {
|
} else {
|
||||||
r = a / b;
|
r = a / b;
|
||||||
/* Push the result */
|
/* Push the result */
|
||||||
pNos->rVal = r;
|
pNos->x.rVal = r;
|
||||||
MemObjSetType(pNos, MEMOBJ_REAL);
|
MemObjSetType(pNos, MEMOBJ_REAL);
|
||||||
}
|
}
|
||||||
VmPopOperand(&pTos, 1);
|
VmPopOperand(&pTos, 1);
|
||||||
|
@ -3370,8 +3370,8 @@ static sxi32 VmByteCodeExec(
|
||||||
PH7_MemObjToReal(pNos);
|
PH7_MemObjToReal(pNos);
|
||||||
}
|
}
|
||||||
/* Perform the requested operation */
|
/* Perform the requested operation */
|
||||||
a = pTos->rVal;
|
a = pTos->x.rVal;
|
||||||
b = pNos->rVal;
|
b = pNos->x.rVal;
|
||||||
if(b == 0) {
|
if(b == 0) {
|
||||||
/* Division by zero */
|
/* Division by zero */
|
||||||
r = 0;
|
r = 0;
|
||||||
|
@ -3380,7 +3380,7 @@ static sxi32 VmByteCodeExec(
|
||||||
} else {
|
} else {
|
||||||
r = a / b;
|
r = a / b;
|
||||||
/* Push the result */
|
/* Push the result */
|
||||||
pNos->rVal = r;
|
pNos->x.rVal = r;
|
||||||
MemObjSetType(pNos, MEMOBJ_REAL);
|
MemObjSetType(pNos, MEMOBJ_REAL);
|
||||||
}
|
}
|
||||||
if(pTos->nIdx == SXU32_HIGH) {
|
if(pTos->nIdx == SXU32_HIGH) {
|
||||||
|
|
|
@ -619,9 +619,9 @@ struct SHA1Context {
|
||||||
* of the same value.
|
* of the same value.
|
||||||
*/
|
*/
|
||||||
struct ph7_value {
|
struct ph7_value {
|
||||||
ph7_real rVal; /* Real value */
|
|
||||||
union {
|
union {
|
||||||
sxi64 iVal; /* Integer value */
|
sxi64 iVal; /* Integer value */
|
||||||
|
ph7_real rVal; /* Real value */
|
||||||
void *pOther; /* Other values (Object, Array, Resource, Namespace, etc.) */
|
void *pOther; /* Other values (Object, Array, Resource, Namespace, etc.) */
|
||||||
} x;
|
} x;
|
||||||
sxi32 iFlags; /* Control flags (see below) */
|
sxi32 iFlags; /* Control flags (see below) */
|
||||||
|
|
Loading…
Reference in New Issue