📄 changelog
字号:
1999-01-19 Markku Rossi <mtr@amme.ssh.fi>
* jsint.h (struct js_vm_st): Implemented file descriptor limit.
Now you can specify the maximum amount of file descriptors the
interpreter can allocate. Thanks to Indrek Mandre
<indrek@warp.edu.ee>.
1999-01-11 Markku Rossi <mtr@amme.ssh.fi>
* b_string.c (method): Fixed the append() method to accept also
integer arguments.
1999-01-08 Markku Rossi <mtr@amme.ssh.fi>
* js.c (iofunc_close): Fixed a memory leak by freeing the
context.
1998-11-25 Markku Rossi <mtr@amme.ssh.fi>
* js.c (js_create_interp): Added a sanity check to assure that the
js.h and jsint.h APIs share a common view about the node size.
* js.h (struct js_type_st): Changed the JSType to be compatible
with the internal JSNode.
* operands.def: Changed the with-chain to use a JSUIntAlign count
instead of a JSUInt32 count.
* jsint.h: New integer type JSUIntAlign that can be used to align
structures on correct byte boundaries.
(struct js_heap_memory_block_st): Changed to use JSUIntAlign
integers instead of JSUInt32s. Now the memory allocation seems to
work on Alpha machines.
1998-10-26 Markku Rossi <mtr@purple.ngs.fi>
* vmswt0.c (js_vm_switch0_exec): Added support for anonymous
functions.
* vmswitch.c (js_vm_switch_exec): Added support for anonymous
functions.
* vmjumps.c (js_vm_jumps_exec): Added support for anonymous
functions.
* vm.c (js_vm_execute): Added support for anonymous functions.
* jsint.h: Added argument `anonymous_function_offset' to
JSVMExecute. All uses changed.
* operands.def: Tagged all symbol and jump operands with
comments. Now these operands can be handled automatically.
New operands `load_global_w' and `jsr_w'.
Added support for function pointers.
* js.c (js_create_interp): Pass the `options.warn_undef' to the
virtual machine.
* jsint.h (JS_OPERAND_CMP_EQ): Fixed to handle the `object _OP_
string / number' cases. Now the == and != is ECMA compatible.
(JS_IS_PRIMITIVE_VALUE): New macro to check whether the argument
is a primitive value or not.
* utils.c (js_vm_to_primitive): Implement ToPrimitive() type
conversion.
1998-10-20 Markku Rossi <mtr@purple.ngs.fi>
* js.c (js_global_method_delete): New function to delete the user
defined global method from the memory.
* jsint.h (JS_SUBROUTINE_CALL): Fixed to check that we have
enought stack space for yet another subroutine call. The same
thing is also checked in the `locals' operand, but some functions
don't use any local variables, and therefore, the stack usage
wasn't ever checked.
* operands.def: Fixed `locals' to use the
JS_RESERVE_STACK_FOR_FUNCTION preprocessor constant.
1998-10-16 Markku Rossi <mtr@purple.ngs.fi>
* jsint.h (JS_IS_FINITE): New macro to determine whether a number
node is a finite number.
* b_date.c: Implemented MakeTime(), MakeDay(), MakeDate(), and
TimeClip() operators.
Implemented the global method invocation of the Date()
constructor.
* b_regexp.c (new_proc): Fixed to work with 0 arguments.
1998-10-12 Markku Rossi <mtr@purple.ngs.fi>
* operands.def: Cleaned up namespace by fixing load_property's
goto labels.
Fixed call_method to lookup the methods also from the prototypes
of string, array, and func built-in objects.
1998-10-07 Markku Rossi <mtr@purple.ngs.fi>
* heap.c: Optimized the heap memory consumption by fixing the
block headers and the freelist block handling. The total savings
in the memory usage (with the js_vm_make_function() fix) are about
15 %.
* jsint.h (js_vm_make_function): Fixed a typo that caused us to
allocate one JSVirtualMachine for each function, instead of one
JSFunction.
(struct js_heap_memory_block_st): Optimized the header from 12
bytes to 4 (on 32bit machines).
(struct js_heap_freelist_block_st): Header for the memory block
when it is on the freelist.
1998-10-05 Markku Rossi <mtr@purple.ngs.fi>
* operands.def: ECMA compliancy fixes for the `mod' operand.
1998-10-02 Markku Rossi <mtr@purple.ngs.fi>
* main.c: New option -E, --events to print the interpreter
events.
* js.h (struct js_interp_options_st): Added event hooks.
* vmjumps.c: Implemented byte-code execution hooks.
* jsint.h: Implemented event hooks for garbage collection and
byte-code operand execution.
* b_regexp.c: Implemented the `The RegExp Constructor Called as a
Function'.
ECMAScript compliance fixes for the method argument checks.
1998-10-01 Markku Rossi <mtr@purple.ngs.fi>
* utils.c (js_vm_to_string): Fixed to work with native Objects.
* vm.c (js_vm_call_method): Fixed to call the built-in Object's
method proc, if the property hasn't bee defined in the native
object instance.
* jsint.h: Added some consts to function arguments.
* b_object.c (method): Implemented toString() method.
* alloc.c (js_strdup_i): Added const to the dupped string
argument.
* operands.def: Fixed the operand `call_method' to call the method
from the object's constructor, if the object hasn't redefined the
called method.
* regex.c: Updated regex.{c,h} files from the glibc-2.0.96. Added
some re-entrancy fixed to regex.c.
1998-09-29 Markku Rossi <mtr@purple.ngs.fi>
* b_dir.c: New built-in object `Directory' to handle directories.
* md5.h: Keep the namespace clean! Defined MD5_CTX to
_JS_MD5_CTX.
1998-09-25 Markku Rossi <mtr@purple.ngs.fi>
* b_core.c (print_global_method): New global method `print()' to
print its arguments to system's standard output stream.
* js.h (struct js_interp_options_st): New security options
`secure_builtin_{file,system}'.
* main.c: New option -r, --secure to turn on security options.
1998-09-24 Markku Rossi <mtr@purple.ngs.fi>
* heap.c (BLOCK_SIZE): Changed to 200 * 1024 bytes on 32 bit and
bigger systems.
(js_vm_alloc): Fixed the `alloc_size' calculation for cases when
it is bigger than BLOCK_SIZE. Now we can re-use those bigger
blocks more efficiently.
1998-09-22 Markku Rossi <mtr@purple.ngs.fi>
* js.c (js_create_interp): Added debug call for
js_alloc_dump_blocks() to find out how much memory one interpreter
takes. Maybe the heap.c:BLOCK_SIZE should be an option in the
JSInterpOptions.
1998-09-21 Markku Rossi <mtr@purple.ngs.fi>
* b_regexp.c (js_builtin_RegExp): Removed the re_set_syntax()
call, since the correct default is already present in the regex.c.
* regex.c: Initialized the default syntax to RE_SYNTAX_GNU_AWK.
This removes the re-entrancy problem from b_regexp.c.
* operands.def: ECMA compliancy fixes for the `and', `or', `xor',
`shift_left', `shift_right', and `shift_rright' operands.
* jsint.h (JS_OPERAND_BINARY): New macro to implement binary and,
or, and xor operands.
1998-09-17 Markku Rossi <mtr@purple.ngs.fi>
* vmswitch.c (link_code): Fixed to handle the debugging
information.
* operands.def: Fixed operand `throw' to convert the thrown value
to an error when the exception is thrown to the top-level.
1998-09-15 Markku Rossi <mtr@purple.ngs.fi>
* operands.def: ECMA compliancy fixes for the `mul', `div', and
`neg' operands.
1998-09-10 Markku Rossi <mtr@purple.ngs.fi>
* js.c (js_eval_source): When evaluating the on-demand-compiler
source files, warn only about `with-clobber' cases.
* operands.def: Made the cmp_{eq,ne}, sub, and add byte-code
operands ECMAScript compatible.
Implemented cmp_{seq,sne} operands.
New operand `const_i' to push a Int32 integer to the stack.
1998-09-09 Markku Rossi <mtr@purple.ngs.fi>
* jsint.h (JS_IS_NUMBER): New macro to determine whether a node is
a number or not.
1998-09-08 Markku Rossi <mtr@purple.ngs.fi>
* b_math.c (method): Fixed max() and min() to allow multiple
arguments.
Made ECMAScript compatible.
* utils.c (js_vm_to_boolean): New function to perform the
`ToBoolean()' type conversion.
* b_bool.c (method): Implemented the `valueOf' method.
Implemented global function invocation `Boolean()'.
* b_string.c (method): Implemented the `valueOf()' method.
Implemented global function invocation `String()'.
Made the `new' invocation ECMAScript compatible.
(method): Fixed concat() to accept any number of arguments.
* b_array.c: Implemented global function invocation `Array()'.
Fixed some argument checks.
* b_object.c: Implemented some ECMAScript features. Some things
are still unimplemented.
* utils.c (js_vm_to_object): New function to perform the
`ToObject()' type conversion.
* jsint.h (struct js_vm_st): New symbol s_toSource.
* utils.c (js_vm_to_int32): New function to perform the
`ToInt32()' type conversion.
* jsint.h: Created new macros
JS_MAKE_{POSITIVE,NEGATIVE}_INFINITY(),
JS_IS_{POSITIVE,NEGATIVE}_INFINITY() to handle infinity values.
* js.c: Moved the error() global method to b_core.c.
* b_core.c: Made ECMAScript compatible.
1998-09-07 Markku Rossi <mtr@purple.ngs.fi>
* jsint.h (JS_OPERAND_CMP): New macro to implement relational
comparison.
* main.c: New compiler option `-Wdeprecated'.
* operands.def: Added the missing line break sequence to the end
of the warning from the load_global operand.
Made the load_array's error messages more verbose.
Re-implemented the cmp_{lt,gt,le,ge} operands.
Re-implemented the add operand.
Re-implemented the div operand.
Added a missing JS_POP() to mul operand's one argument
combination.
New operand load_nth_arg.
* b_core.c: Cleaned up the error messages.
(parseInt_global_method): Made ECMAScript compatible.
1998-09-04 Markku Rossi <mtr@purple.ngs.fi>
* operands.def: New operands `cmp_seq' and `cmp_sne' for strict
equals and does-not-equal comparisons.
* js.h: New API function js_lookup_class() to lookup the class
handle by its name.
New API function js_isa() to check whether an object is an
instance of a given class.
1998-09-02 Markku Rossi <mtr@purple.ngs.fi>
* js.h: New API function js_version() that returns the interpreter
version number as a string of format "MAJOR.MINOR.PATCH".
1998-09-01 Markku Rossi <mtr@purple.ngs.fi>
* b_system.c: Removed the flush method.
* b_file.c (method): Fixed the read() method to always return a
string.
1998-08-26 Markku Rossi <mtr@purple.ngs.fi>
* iostream.c (js_iostream_file): Added argument <do_close> that
specifies whether the actual `FILE *' file pointer will be closed
when the stream is destroyed. Normally, we don't want to close
stdin, stdout, or stderr when the interpreter is destoyed.
1998-08-25 Markku Rossi <mtr@purple.ngs.fi>
* js.h: New API function js_apply() to apply function to
arguments.
* vm.c (js_vm_apply): Fixed to work also with built-in functions.
* jsint.h: Removed the <func_name> argument from the JSVMExecute
function type. All uses changed.
1998-08-24 Markku Rossi <mtr@purple.ngs.fi>
* js.h: Keep the namespace clean! Renamed DLLEXPORT to
JS_DLLEXPORT.
New API functions: js_result(), js_{get,set}_options(), and
js_instantiate_class().
1998-08-21 Markku Rossi <mtr@purple.ngs.fi>
* jsint.h: Keep the namespace clean! Renamed
HOST_LINE_BREAK_SEQUENCE{,_LEN} to JS_HOST_LINE_BREAK{,_LEN}.
* js.h: W32 portability fixes. Now the header should co-operate
with Borland's and MS compilers.
Added support for user-defined classes.
1998-08-20 Markku Rossi <mtr@purple.ngs.fi>
* b_vm.c (property): New property verboseStacktrace.
* jsint.h (struct js_vm_st): New flag `verbose_stacktrace'.
* operands.def: Added a new slot to the stack frame: args_fix.
The args_fix holds the relocation information from the `min_args'
operand. The operand `return' needs that information when it is
returning from a function that was called with too few arguments.
All uses of STACKFRAME were changed.
1998-08-19 Markku Rossi <mtr@purple.ngs.fi>
* b_system.c (property): New property `lineBreakSequence'. The
value of the property is a string that is the line break sequence
on the underlying system.
* jsint.h: Added portability defines for the line break sequence.
* b_file.c (property): New instance properties `autoFlush' and
`bufferSize'.
(method): Fixed writeln() to use the host dependent line break
sequence. The sequence is defined in jsint.h.
* jsint.h: Re-implemented all I/O stuffs to use JSIOStream
interface. All uses of the old `FILE *' interface, including the
stdin, stdout, and stderr streams, are changed.
1998-08-18 Markku Rossi <mtr@purple.ngs.fi>
* js.c (call_method_global_method): New global method to call
methods from objects with a given array of arguments.
* vm.c (js_vm_call_method): New function to call method from an
object.
* jsint.h: New function js_vm_call_method() to call a method from
an object.
Changed the exec functions of different dispatchers to accept one
extra parameter: the object that should be used as the `this'
object.
1998-08-17 Markku Rossi <mtr@purple.ngs.fi>
* js.h: Added DllExport's to all public API functions. These must
be exported explicitly on w32.
* b_file.c (method): Ported to w32. The member
struct_st.st_blksize is not present there.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -