Optimize llDumpList2String(expr, "") to (string)expr.

It works on all VMs and it's always a gain, so it's not worth adding an option to deactivate it.
This commit is contained in:
Sei Lisa 2017-05-31 14:39:42 +02:00
parent b4d9d5bc8c
commit b5994b79fe

View file

@ -1009,6 +1009,14 @@ class foldconst(object):
# Convert llGetListLength(expr) to (expr != [])
node = {'nt':'CONST', 't':'list', 'value':[]}
parent[index] = node = {'nt':'!=', 't':'list', 'ch':[child[0], node]}
elif (node['name'] == 'llDumpList2String'
and child[1]['nt'] == 'CONST'
and child[1]['t'] in ('string', 'key')
and child[1]['value'] == u""):
# Convert llDumpList2String(expr, "") to (string)(expr)
del child[1]
node['nt'] = 'CAST'
del node['name']
elif SEFargs and 'SEF' in self.symtab[0][node['name']]:
# The function is marked as SEF in the symbol table, and the
# arguments are all side-effect-free. The result is SEF.