Rename jsR_numbertostring to jsR_stringfromnumber.
Create readonly length property on string objects.
Implement Function.prototype.toString()
Alloc interned strings at the end of the string nodes.
Put js_Object contents in a union.
Implement Function.prototype.apply()
More builtins. Fix prototype chains for builtin classes and prototypes.
Implement Number and Object classes.
Refactor ToString and ToNumber functions. Add ToPrimitive.
Implement relational and equality operators.
Reorder switch cases to match opcode order.
Support 'typeof' operator.
Return value of last evaluated expression in eval and script code.
Don't pass pointless 'sp' pointer throughout lexer now that we use
Simplify newline tests since we normalize line endings in next().
Handle \uXXXX escapes in identifiers.
Fix bug in number parsing.
Rewrite lexer to use a proper lookahead token.
Save line number where the token starts for improved error messages.
Import UTF-8 and runestring functions from plan9port.
Remember to remove openames.h when cleaning.
Move object creation functions into jsobject.c
Rename functions that push new objects on the stack.
Add allocation counter to trigger garbage collector during interpretation.
Add constructors called with 'new' keyword.
Improve stackidx function to return "undefined" for out-of-bounds accesses.
Define some global functions and values.
Create function objects with initial properties.
Set prototype internal property when creating objects.
Remember file name and line where a function object came from.
Compile global/eval code as script objects rather than regular functions.
Keep the current environment scope chain in the js_State struct.
Add object property accessor functions to public API.
Fix the shape of the outer API a bit. Implement eval.
Beautify opcode dumping format.
Handle "this" by always keeping it in stack[0].
Clean up. Rearrange files. Rename functions.
Add JS_NORETURN declaration to longjumping functions.
Add callable CFunctions and a print() function.
Remember main.c in tags.
Prepare for objects with internal properties, and closures as objects.
js_pushlstring() for pushing literal (and interned strings).
Don't bother setting undefined slots in array literal elisions.
Calculate stack index for both positive and negative numbers.
Implement value stack and use it in the interpreter.
Fix compilation warning.
Add js_Object with js_Property binary search tree.
Optimise string interning.
Clean up handling of function declarations / statements / expressions.
Set 'this' object for all types of function calls.
Separate variable declaration and initialization.
Create var bindings for self function and function declarations.
Use emitname() for identifiers, and emitstring() for string literals.
Document some trickier byte codes.
Compile logical or/and operators with early termination.
Use special TCALL opcode for foo.bar() calls that set 'this' for the call.
Auto-generate list of operator names.
Improve naming of macros in lexer.
Begin generating byte code.
Simplify constant folding function.
Add warning function to parser. Warn but accept function expressions
Improve regexp context detection.
Count lines in block comments as well.
Check future reserved words in parser to allow them as IdentifierName tokens.
Add UNDEF expression to handle array elisions properly.
Preserve regexp flags. Escape more characters when dumping strings.
Add proper pretty-printing functions.
Ensure that we can seek in the file in js_loadfile.
Clean split between loader, parser and pretty-printer.
Rename files and put stuff in the correct headers.
Parse array literals with elisions.
Reorder statement cases to align with spec text.
Remove pointless STM_BLOCK nodes.
Pretty-print AST to javascript syntax.
Clean up interface between lexer and parser.
Pretty print and indent STM_BLOCK nodes.
Parse labelled statements.