mirror of
https://github.com/uffejakobsen/acme.git
synced 2025-02-19 09:31:42 +00:00
removed useless code concerning FITS_BYTE flag
git-svn-id: https://svn.code.sf.net/p/acme-crossass/code-0/trunk@255 4df02467-bbd4-4a76-a152-e7ce94205b78
This commit is contained in:
parent
cf167a34e4
commit
1441da12ac
37
src/alu.c
37
src/alu.c
@ -455,13 +455,13 @@ static void parse_quoted(char closing_quote)
|
|||||||
Throw_error("There's more than one character.");
|
Throw_error("There's more than one character.");
|
||||||
// parse character
|
// parse character
|
||||||
value = (intval_t) (unsigned char) encoding_encode_char(GLOBALDYNABUF_CURRENT[0]);
|
value = (intval_t) (unsigned char) encoding_encode_char(GLOBALDYNABUF_CURRENT[0]);
|
||||||
PUSH_INT_ARG(value, NUMBER_FITS_BYTE, 0); // FIXME - why set FITS_BYTE? it's only really useful for undefined values!
|
PUSH_INT_ARG(value, 0, 0); // no flags, no addr refs
|
||||||
}
|
}
|
||||||
// Now GotByte = char following closing quote (or CHAR_EOS on error)
|
// Now GotByte = char following closing quote (or CHAR_EOS on error)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
fail:
|
fail:
|
||||||
PUSH_INT_ARG(0, NUMBER_FITS_BYTE, 0); // dummy
|
PUSH_INT_ARG(0, 0, 0); // dummy, no flags, no addr refs
|
||||||
alu_state = STATE_ERROR;
|
alu_state = STATE_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1265,7 +1265,7 @@ static void int_create_byte(struct object *self, intval_t byte)
|
|||||||
{
|
{
|
||||||
self->type = &type_number;
|
self->type = &type_number;
|
||||||
self->u.number.ntype = NUMTYPE_INT;
|
self->u.number.ntype = NUMTYPE_INT;
|
||||||
self->u.number.flags = NUMBER_FITS_BYTE; // FIXME - if DEFINED anyway, what use is there for FITS_BYTE?
|
self->u.number.flags = 0;
|
||||||
self->u.number.val.intval = byte;
|
self->u.number.val.intval = byte;
|
||||||
self->u.number.addr_refs = 0;
|
self->u.number.addr_refs = 0;
|
||||||
}
|
}
|
||||||
@ -1412,9 +1412,9 @@ static void number_assign(struct object *self, const struct object *new_value, b
|
|||||||
if ((own_flags & (NUMBER_EVER_UNDEFINED | NUMBER_FITS_BYTE)) == NUMBER_EVER_UNDEFINED)
|
if ((own_flags & (NUMBER_EVER_UNDEFINED | NUMBER_FITS_BYTE)) == NUMBER_EVER_UNDEFINED)
|
||||||
other_flags &= ~NUMBER_FITS_BYTE;
|
other_flags &= ~NUMBER_FITS_BYTE;
|
||||||
// now OR together "fits byte", "defined" and "tainted"
|
// now OR together "fits byte", "defined" and "tainted"
|
||||||
// (any hypothetical problems about "new value is later found out to
|
// (any hypothetical problems like "what if new value is later found out
|
||||||
// _not_ fit byte" would be detected when assigning a different value
|
// to _not_ fit byte?" would be detected in a later pass because trying
|
||||||
// raises an error in a later pass)
|
// to assign that new value would throw an error)
|
||||||
own_flags |= other_flags & (NUMBER_FITS_BYTE | NUMBER_EVER_UNDEFINED);
|
own_flags |= other_flags & (NUMBER_FITS_BYTE | NUMBER_EVER_UNDEFINED);
|
||||||
|
|
||||||
self->u.number.flags = own_flags;
|
self->u.number.flags = own_flags;
|
||||||
@ -1720,7 +1720,7 @@ static void intfloat_fix_result_after_comparison(struct object *self, const stru
|
|||||||
self->u.number.val.intval = result;
|
self->u.number.val.intval = result;
|
||||||
self->u.number.addr_refs = 0;
|
self->u.number.addr_refs = 0;
|
||||||
flags = (self->u.number.flags | other->u.number.flags) & NUMBER_EVER_UNDEFINED; // EVER_UNDEFINED flags are ORd together
|
flags = (self->u.number.flags | other->u.number.flags) & NUMBER_EVER_UNDEFINED; // EVER_UNDEFINED flags are ORd together
|
||||||
flags |= NUMBER_FITS_BYTE; // FITS_BYTE gets set
|
flags |= NUMBER_FITS_BYTE; // comparison results are either 0 or 1, so fit in byte
|
||||||
// (FORCEBITS are cleared)
|
// (FORCEBITS are cleared)
|
||||||
self->u.number.flags = flags;
|
self->u.number.flags = flags;
|
||||||
}
|
}
|
||||||
@ -1728,7 +1728,7 @@ static void intfloat_fix_result_after_comparison(struct object *self, const stru
|
|||||||
static void intfloat_fix_result_after_dyadic(struct object *self, const struct object *other)
|
static void intfloat_fix_result_after_dyadic(struct object *self, const struct object *other)
|
||||||
{
|
{
|
||||||
self->u.number.flags |= other->u.number.flags & (NUMBER_EVER_UNDEFINED | NUMBER_FORCEBITS); // EVER_UNDEFINED and FORCEBITs are ORd together
|
self->u.number.flags |= other->u.number.flags & (NUMBER_EVER_UNDEFINED | NUMBER_FORCEBITS); // EVER_UNDEFINED and FORCEBITs are ORd together
|
||||||
self->u.number.flags &= ~NUMBER_FITS_BYTE; // FITS_BYTE is cleared
|
self->u.number.flags &= ~NUMBER_FITS_BYTE; // clear FITS_BYTE because result could be anything
|
||||||
}
|
}
|
||||||
|
|
||||||
// undefined/int/float:
|
// undefined/int/float:
|
||||||
@ -1760,7 +1760,7 @@ static void undef_handle_dyadic_operator(struct object *self, const struct op *o
|
|||||||
case OPID_NOTEQUAL:
|
case OPID_NOTEQUAL:
|
||||||
case OPID_EQUALS:
|
case OPID_EQUALS:
|
||||||
// only for comparisons:
|
// only for comparisons:
|
||||||
self->u.number.flags |= NUMBER_FITS_BYTE; // FITS_BYTE gets set
|
self->u.number.flags |= NUMBER_FITS_BYTE; // result is either 0 or 1, so fits in byte
|
||||||
self->u.number.flags &= ~NUMBER_FORCEBITS; // FORCEBITS are cleared
|
self->u.number.flags &= ~NUMBER_FORCEBITS; // FORCEBITS are cleared
|
||||||
goto shared;
|
goto shared;
|
||||||
|
|
||||||
@ -1782,7 +1782,7 @@ static void undef_handle_dyadic_operator(struct object *self, const struct op *o
|
|||||||
}
|
}
|
||||||
// CAUTION: comparisons goto label below instead of jumping here
|
// CAUTION: comparisons goto label below instead of jumping here
|
||||||
self->u.number.flags |= (other->u.number.flags & NUMBER_FORCEBITS); // FORCEBITs are ORd together
|
self->u.number.flags |= (other->u.number.flags & NUMBER_FORCEBITS); // FORCEBITs are ORd together
|
||||||
self->u.number.flags &= ~NUMBER_FITS_BYTE; // FITS_BYTE is cleared
|
self->u.number.flags &= ~NUMBER_FITS_BYTE; // clear FITS_BYTE because result could be anything
|
||||||
shared:
|
shared:
|
||||||
self->u.number.flags |= (other->u.number.flags & NUMBER_EVER_UNDEFINED); // EVER_UNDEFINED flags are ORd together
|
self->u.number.flags |= (other->u.number.flags & NUMBER_EVER_UNDEFINED); // EVER_UNDEFINED flags are ORd together
|
||||||
self->u.number.ntype = NUMTYPE_UNDEFINED;
|
self->u.number.ntype = NUMTYPE_UNDEFINED;
|
||||||
@ -2253,23 +2253,8 @@ static void number_fix_result(struct object *self)
|
|||||||
else if (self->u.number.flags & NUMBER_FORCES_16)
|
else if (self->u.number.flags & NUMBER_FORCES_16)
|
||||||
self->u.number.flags &= ~NUMBER_FORCES_8;
|
self->u.number.flags &= ~NUMBER_FORCES_8;
|
||||||
|
|
||||||
if (self->u.number.ntype == NUMTYPE_UNDEFINED) {
|
if (self->u.number.ntype == NUMTYPE_UNDEFINED)
|
||||||
self->u.number.val.intval = 0; // FIXME - should not be needed!
|
self->u.number.val.intval = 0; // FIXME - should not be needed!
|
||||||
} else if (self->u.number.ntype == NUMTYPE_INT) {
|
|
||||||
// if value is sure, check to set FITS BYTE
|
|
||||||
if ((!(self->u.number.flags & NUMBER_EVER_UNDEFINED))
|
|
||||||
&& (self->u.number.val.intval <= 255)
|
|
||||||
&& (self->u.number.val.intval >= -128))
|
|
||||||
self->u.number.flags |= NUMBER_FITS_BYTE; // FIXME - what for? isn't this flag only of use when undefined?
|
|
||||||
} else if (self->u.number.ntype == NUMTYPE_FLOAT) {
|
|
||||||
// if value is sure, check to set FITS BYTE
|
|
||||||
if ((!(self->u.number.flags & NUMBER_EVER_UNDEFINED))
|
|
||||||
&& (self->u.number.val.fpval <= 255.0)
|
|
||||||
&& (self->u.number.val.fpval >= -128.0))
|
|
||||||
self->u.number.flags |= NUMBER_FITS_BYTE; // FIXME - what for? isn't this flag only of use when undefined?
|
|
||||||
} else {
|
|
||||||
Bug_found("IllegalNumberType4", self->u.number.ntype);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// list/string:
|
// list/string:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user