Sei Lisa
57cacf29bb
Return a float when typecasting returns zero (fixes inconsistent type)
2015-09-22 14:14:26 +02:00
Sei Lisa
aee638e900
Return denormals as 0 in (float)"number". Found by Pedro Oval.
2015-09-21 21:15:48 +02:00
Sei Lisa
2d72b8e198
Fix llList2CSV with -nan in vector and quaternion (with test case).
2015-09-09 18:14:27 +02:00
Sei Lisa
2044f888d4
Fix bug where (typecast)[single_expr] was output as (typecast)(list)single_expr, producing a syntax error in the output for lack of extra parentheses.
2015-09-09 04:14:55 +02:00
Sei Lisa
6b7b366f63
Fix llRot2Euler exception
2015-09-08 03:47:00 +02:00
Sei Lisa
bc4f574b33
Managed to deal with the '-nan' case in llList2CSV. Add test cases.
2015-09-07 02:56:44 +02:00
Sei Lisa
0122d6ed70
On second thought, disable explicitcast for list+nonlist and nonlist+list entirely, as they are not the same as list+(list)nonlist and (list)nonlist+list anyway.
2015-09-05 03:09:46 +02:00
Sei Lisa
d8649deebd
nonlist + list was returning the type of the nonlist element. Fixed and added a
...
regression test.
Funnily enough, it was correct if explicit cast was active. Removed from explicit cast now that it's active for all.
2015-09-04 05:56:05 +02:00
Sei Lisa
aa74e6ed64
Sadly, Python can't represent -nan, even though llList2CSV can display it. Add a note to that effect.
2015-09-04 05:46:18 +02:00
Sei Lisa
15f1a07a72
There were more translated events. After an exhaustive analysis this is the definitive list.
2015-08-21 03:35:20 +02:00
Sei Lisa
e264260477
Two events produce different internal names than the event name itself. This was causing the reused names for these events to increase memory usage instead of reducing it. Fixed.
2015-08-21 01:20:28 +02:00
Sei Lisa
f8a6d3d86c
Reorganize so that warningPass is always set at least once when constfold is set.
2015-08-19 05:41:21 +02:00
Sei Lisa
cd9bfd426e
Update list of pre-allocated keywords.
2015-07-26 00:13:00 +02:00
Sei Lisa
1636e56266
The llGetListLength optimization can be applied to arbitrary expressions.
2015-07-13 07:16:32 +02:00
Sei Lisa
1a67db64dc
Get rid of builtins.txt.dat by adding a parameter to the parser ctor.
2015-07-09 20:35:14 +02:00
Sei Lisa
1160fea8cf
Fix extendedtypecast problem with negative constants after typecasts.
2015-06-23 06:54:04 +02:00
Sei Lisa
4cc268b574
Fix parenthesizing of expressions having ~ or !
2015-06-17 18:30:32 +02:00
Sei Lisa
f5d150f7c9
Fix typo in IsBool and add coverage test. Report and fix by Code Violet.
2015-06-17 02:51:46 +02:00
Sei Lisa
52ebe20a67
Refine a comment
2015-06-17 02:31:58 +02:00
Sei Lisa
e35431cecf
Forgot to truncate llSqrt to F32.
2015-06-16 04:41:36 +02:00
Sei Lisa
bfabcd16db
Fix parser bug where list = anytype was accepted. Fix also the test suite.
2015-06-16 04:16:59 +02:00
Sei Lisa
cdc3a63179
Fix problem due to not copying a node. It still needs more analysis, but this patch is an improvement in that it fixes known problematic cases and doesn't seem to introduce new ones.
2015-06-14 05:11:32 +02:00
Sei Lisa
aaa8d3b7f4
Fix crash when a global was optimized out and another global depended on it.
2015-06-14 03:36:54 +02:00
Sei Lisa
e1d0753fec
When a state is removed, remove its global declaration too.
2015-06-13 02:19:15 +02:00
Sei Lisa
d8629f9200
Update behaviour of llListFindList for LSO.
2015-05-24 04:22:31 +02:00
Sei Lisa
faf296fa74
Fix bug with scripts that have UTF-8 characters.
...
The parser expects bytes, not unicode.
2015-05-03 05:19:14 +02:00
Sei Lisa
4302ea846d
Don't fall through after optimizing a negable comparison, as it's folded already and the variables were incorrectly set and broke our invariants.
2015-04-21 06:11:25 +02:00
Sei Lisa
d58bc2d350
Implement library function parameter optimization.
...
So far only two kinds: angle in llSensor[Repeat] and null keys in functions that take a key parameter.
Closes two TODOs.
2015-04-21 04:56:09 +02:00
Sei Lisa
17bf0b7a1e
Fix recently introduced bug: function renaming failed.
2015-04-17 03:37:24 +02:00
Sei Lisa
be86216124
Do -(b + -c) -> -b+c. Also when a-b is transformed to a+-b, fold -b.
2015-03-29 06:09:26 +02:00
Sei Lisa
a859b3e8e4
Loop over (0, 1) instead of duplicating the code.
2015-03-29 05:43:38 +02:00
Sei Lisa
a19d49d193
Implement optimization of a>=const -> a>const-1 and similar, and fix cases where | -> & or a<0 -> a&0x80000000 is counter-productive.
...
The logic becomes quite convoluted.
2015-03-29 03:47:54 +02:00
Sei Lisa
274b563390
No need to simplify !!! to ! as FoldCond already takes care of that.
2015-03-29 01:27:08 +01:00
Sei Lisa
9aae475125
Implement bool(x < 0) -> bool(x & 0x80000000) w/ function domain check.
...
Cleans up three TODOs.
2015-03-29 00:16:17 +01:00
Sei Lisa
2cb9ad6fe5
Implement a first version of IsBool and use it to optimize && -> &
2015-03-28 23:49:10 +01:00
Sei Lisa
08f48a5c32
Make program flow more consistent, add TODO, refine another TODO.
2015-03-28 23:47:45 +01:00
Sei Lisa
01d8bba3f4
Don't always output a space after the unary minus, only when necessary.
2015-03-28 23:35:08 +01:00
Sei Lisa
4fbbda60a7
Elaborate on the TODO.
2015-03-28 23:34:07 +01:00
Sei Lisa
b8a7e88f1a
Add TODO item
2015-03-28 23:31:11 +01:00
Sei Lisa
c154d5eb0d
Deal with a number of issues in some expressions.
...
- Move TODO of <0 to !=-1 to boolean, as it's counter-productive otherwise.
- All a!=b except list!=list are equivalent to !(a==b).
- Change a>b to b<a to simplify cases to analize.
- Proper fall-through in some spots, or return in some others where it didn't apply.
- Simplify handling of a<-2147483648 as a&0, falling through, instead of coping with it ourselves.
2015-03-28 20:23:47 +01:00
Sei Lisa
de33c2df01
Simplify operands of bitwise OR expressions as booleans. Deals with a TODO in a more general way.
2015-03-28 20:16:06 +01:00
Sei Lisa
6813bb0458
Make the second pass of FoldScript look a bit more logic.
2015-03-28 20:14:17 +01:00
Sei Lisa
2a617b34d0
Fix bug where a<<1 was not immediately optimized, and other minor changes.
...
* Add a TODO.
* Don't make two fold passes if DCR is off.
* Remove comment about parentheses that no longer applies.
2015-03-28 14:45:53 +01:00
Sei Lisa
edbc240408
Remove 'Local' from symbol table; add note about an unimplemented feature; improve symbol table documentation; rename a helper variable.
2015-03-27 02:12:32 +01:00
Sei Lisa
921955f321
Implement function overriding syntax extension, fixing a bug on the way.
...
The funcoverride option allows defining multiple functions with the same name, each overriding the former. That's for compatibility with Firestorm, whose optimizer does that.
While on it, fix a bug where defining a function whose name matches a library function was not reporting an error, and rename self.functions to self.funclibrary for clarity. It also brings consistency with other parts of the code and with the code documentation.
2015-03-27 00:35:37 +01:00
Sei Lisa
3839863a21
EInternal is no longer reused.
2015-03-26 23:26:36 +01:00
Sei Lisa
e21173170e
Simplify the builtins.txt parser REs by checking the types in the code.
...
Gives us more granularity reporting errors.
2015-03-26 23:08:54 +01:00
Sei Lisa
c8bec32242
Add a comment to prevent mistakes.
2015-03-15 19:49:52 +01:00
Sei Lisa
56f40a9c76
Ensure the script is Unicode before parsing.
2015-03-15 19:19:57 +01:00
Sei Lisa
b8f73bb5e1
Don't open the script in binary mode, open it in text mode.
...
Not too sure about this change, but it eliminates CRs before LFs.
2015-03-15 02:18:01 +01:00