; etc/TODO: Remove 'switch' item, as it is now implemented.

This commit is contained in:
Vibhav Pant 2017-02-13 22:54:05 +05:30
parent 271dcf8652
commit fffd4ffd74

View file

@ -35,20 +35,6 @@ Change src/bytecode.c so that calls from byte-code functions to byte-code
functions don't go through Ffuncall/funcall_lambda/exec_byte_code but instead
stay within exec_byte_code.
** Add new 'switch' byte-code
This byte-code would take one argument from the stack (the object to test)
and one argument from the constant-pool (a switch table, implemented as an
'eq' hash table) and would jump to the "label" contained in the hash table.
Then add a 'case' special-form that can be compiled to this byte-code.
This would behave just like cl-case, but instead of expanding to cond+eq it
would be its own special form and would be compiled specially.
Then change pcase to use 'case' when applicable.
Then change the byte-compiler to recognize (cond ((eq x 'foo) bar) ...)
and turn it into a 'case' for more efficient execution.
** Improve the byte-compiler to recognize immutable (lexical) bindings
and get rid of them if they're used only once and/or they're bound to
a constant expression.