forked from cory/tildefriends
		
	
		
			
	
	
		
			81 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			81 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|  | - 64-bit atoms in 64-bit mode? | ||
|  | - 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 | ||
|  | 
 | ||
|  | 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: | ||
|  | - 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 | ||
|  | - debugger keyword support | ||
|  | - 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 | ||
|  | - limited support for web assembly  | ||
|  | - get rid of __loadScript, use more common name | ||
|  | - BSD sockets | ||
|  | - Process or thread control | ||
|  | - use custom printf to avoid C library compatibility issues | ||
|  | - use custom timezone support to avoid C library compatibility issues | ||
|  | 
 | ||
|  | REPL: | ||
|  | - strip internal functions from stack trace | ||
|  | - readline: support MS Windows terminal | ||
|  | - readline: handle dynamic terminal resizing | ||
|  | - multiline editing | ||
|  | - debugger | ||
|  | - 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:   2/67351 errors, 839 excluded, 1370 skipped | ||
|  | Test262bn: 2/69452 errors, 772 excluded, 383 skipped | ||
|  | test262 commit: d65b9b35be091147edf31ec527a47cb95a327217 |