79 lines
3.5 KiB
Text
79 lines
3.5 KiB
Text
|
Misc:
|
||
|
- use custom printf to avoid C library compatibility issues
|
||
|
- rename CONFIG_ALL_UNICODE, CONFIG_BIGNUM, CONFIG_ATOMICS, CONFIG_CHECK_JSVALUE ?
|
||
|
- unify coding style and naming conventions
|
||
|
- use names from the ECMA spec in library implementation
|
||
|
- modules: if no ".", use a well known module loading path ?
|
||
|
- use JSHoistedDef only for global variables (JSHoistedDef.var_name != JS_ATOM_NULL)
|
||
|
- add index in JSVarDef and is_arg flag to merge args and vars in JSFunctionDef
|
||
|
- replace most JSVarDef flags with var_type enumeration
|
||
|
- use byte code emitters with typed arguments (for clarity)
|
||
|
- use 2 bytecode DynBufs in JSFunctionDef, one for reading, one for writing
|
||
|
and use the same wrappers in all phases
|
||
|
- use more generic method for line numbers in resolve_variables and resolve_labels
|
||
|
- use custom timezone support to avoid C library compatibility issues
|
||
|
|
||
|
Memory:
|
||
|
- test border cases for max number of atoms, object properties, string length
|
||
|
- add emergency malloc mode for out of memory exceptions.
|
||
|
- test all DynBuf memory errors
|
||
|
- test all js_realloc memory errors
|
||
|
- bignum: handle memory errors
|
||
|
- use memory pools for objects, etc?
|
||
|
- improve JS_ComputeMemoryUsage() with more info
|
||
|
|
||
|
Optimizations:
|
||
|
- 64-bit atoms in 64-bit mode ?
|
||
|
- use auto-init properties for more global objects
|
||
|
- reuse stack slots for disjoint scopes, if strip
|
||
|
- optimize `for of` iterator for built-in array objects
|
||
|
- add heuristic to avoid some cycles in closures
|
||
|
- small String (0-2 charcodes) with immediate storage
|
||
|
- perform static string concatenation at compile time
|
||
|
- optimize string concatenation with ropes or miniropes?
|
||
|
- add implicit numeric strings for Uint32 numbers?
|
||
|
- optimize `s += a + b`, `s += a.b` and similar simple expressions
|
||
|
- ensure string canonical representation and optimise comparisons and hashes?
|
||
|
- remove JSObject.first_weak_ref, use bit+context based hashed array for weak references
|
||
|
- optimize function storage with length and name accessors?
|
||
|
- property access optimization on the global object, functions,
|
||
|
prototypes and special non extensible objects.
|
||
|
- create object literals with the correct length by backpatching length argument
|
||
|
- remove redundant set_loc_uninitialized/check_uninitialized opcodes
|
||
|
- peephole optim: push_atom_value, to_propkey -> push_atom_value
|
||
|
- peephole optim: put_loc x, get_loc_check x -> set_loc x
|
||
|
- comparative performance benchmark
|
||
|
- use variable name when throwing uninitialized exception if available
|
||
|
- convert slow array to fast array when all properties != length are numeric
|
||
|
- optimize destructuring assignments for global and local variables
|
||
|
- implement some form of tail-call-optimization
|
||
|
- optimize OP_apply
|
||
|
- optimize f(...b)
|
||
|
|
||
|
Extensions:
|
||
|
- support more features in [features] section
|
||
|
- add built-in preprocessor in compiler, get rid of jscompress
|
||
|
handle #if, #ifdef, #line, limited support for #define
|
||
|
- get rid of __loadScript, use more common name
|
||
|
- BSD sockets
|
||
|
- Workers
|
||
|
|
||
|
REPL:
|
||
|
- debugger
|
||
|
- readline: support MS Windows terminal
|
||
|
- readline: handle dynamic terminal resizing
|
||
|
- multiline editing
|
||
|
- runtime object and function inspectors
|
||
|
- interactive object browser
|
||
|
- use more generic approach to display evaluation results
|
||
|
- improve directive handling: dispatch, colorize, completion...
|
||
|
- save history
|
||
|
- close all predefined methods in repl.js and jscalc.js
|
||
|
|
||
|
Test262o: 0/11262 errors, 463 excluded
|
||
|
Test262o commit: 7da91bceb9ce7613f87db47ddd1292a2dda58b42 (es5-tests branch)
|
||
|
|
||
|
Test262: 4/67619 errors, 913 excluded, 1660 skipped
|
||
|
Test262bn: 4/69722 errors, 846 excluded, 672 skipped
|
||
|
test262 commit: 19fd4bea797646ae9bbfc9d325f14052ca370b54
|