Commit Graph

1026 Commits

Author SHA1 Message Date
Jacek Caban 11453b2414 jscript: Always alloc the first chunk of code buffer. 2012-01-03 12:37:22 +01:00
Jacek Caban da07748ca2 jscript: Get rid of return_type_t. 2011-12-30 15:41:07 +01:00
Jacek Caban 83e8658894 jscript: Get rid of no longer needed interp_tree. 2011-12-30 15:41:06 +01:00
Jacek Caban cdd90254dd jscript: Get rid of no longer needed compile_interp_fallback since we can handle all execution by bytecode.
We use compiler on whole functions body now. There is still some work
done to move it one level up (to whole source string) to do some work
that's currently done (sometimes in a hacky way) by parser, but the most
critical part is done.
2011-12-30 15:41:06 +01:00
Jacek Caban e0552ad8c3 jscript: Use bytecode for labeled continue and break statements. 2011-12-30 15:41:06 +01:00
Jacek Caban b82a6982a9 jscript: Get rid of no longer needed type field of return_type_t structure. 2011-12-30 15:41:05 +01:00
Jacek Caban fc092da98e jscript: Use bytecode for return statement implementation. 2011-12-30 15:41:05 +01:00
Jacek Caban dd7a5301e6 jscript: Make compiler responsible for proper return from regular code vs. eval-interpreted code. 2011-12-30 15:41:04 +01:00
Jacek Caban 11ccf0f33e jscript: Handle invalid continue statements in compiler. 2011-12-30 15:41:01 +01:00
Jacek Caban 7361cdc2f3 jscript: Handle invalid break statements in compiler. 2011-12-30 15:40:58 +01:00
Jacek Caban 59619073a8 jscript: Added bytecode dumper implementation. 2011-12-29 16:18:51 +01:00
Jacek Caban ee6e6986fb jscript: Moved instr_off from statement_t to source_elements_t. 2011-12-29 16:18:50 +01:00
Jacek Caban b3907c40f7 jscript: No longer support per-statement compilation. 2011-12-29 16:18:50 +01:00
Jacek Caban 6710e7ec6f jscript: Get rid of stat_eval_table. 2011-12-29 16:18:49 +01:00
Jacek Caban f08fcff4fd jscript: Moved exec_source to the bottom of the file. 2011-12-29 16:18:48 +01:00
Jacek Caban 2dcb8d412f jscript: Always use bytecode for while statement. 2011-12-29 16:18:48 +01:00
Jacek Caban c6932d8069 jscript: Always use bytecode for try statement. 2011-12-29 16:18:47 +01:00
Jacek Caban 985c6a1943 jscript: Always use bytecode for switch statement. 2011-12-29 16:18:46 +01:00
Jacek Caban f904bc8e78 jscript: Always use bytecode for for statement. 2011-12-29 16:18:46 +01:00
Jacek Caban 2c0920f8c3 jscript: Always use bytecode for for..in statement. 2011-12-29 16:18:45 +01:00
Jacek Caban 1c0fe6002d jscript: Always use bytecode for with statement. 2011-12-29 16:18:44 +01:00
Jacek Caban d7fd00fdab jscript: Added more control flow tests. 2011-12-28 17:49:35 +01:00
Jacek Caban 8f8c852897 jscript: Get rid of no longer needed no_fallback hack. 2011-12-28 17:49:30 +01:00
Jacek Caban c5c2276a9f jscript: Added bytecode versions of break and continue statements. 2011-12-28 17:49:19 +01:00
Jacek Caban 80113b5c5c jscript: Use labels in compiler for ending loops. 2011-12-28 17:49:15 +01:00
Jacek Caban 3b56e49ef9 jscript: Added bytecode version of try statement. 2011-12-28 17:48:48 +01:00
Jacek Caban 02ff8d1853 jscript: Use bytecode for throw statement. 2011-12-28 17:48:42 +01:00
Jacek Caban 3f4f9f0f40 jscript: Rename throw opcode to throw_ref. 2011-12-28 17:48:37 +01:00
Jacek Caban 661241a392 jscript: Added bytecode version of for..in statement. 2011-12-28 17:48:32 +01:00
Jacek Caban a6530f4032 jscript: Use bytecode for labelled statement stub. 2011-12-27 16:55:09 +01:00
Jacek Caban c57dd899a4 jscript: Added bytecode version of switch statement. 2011-12-27 16:55:08 +01:00
Jacek Caban abffe88e19 jscript: Added bytecode version of with statement. 2011-12-27 16:55:08 +01:00
Jacek Caban 17fedc448b jscript: Added bytecode version of for loop statement. 2011-12-27 16:55:07 +01:00
Jacek Caban f5425aeeca jscript: Added bytecode version of while statement. 2011-12-27 16:55:07 +01:00
Jacek Caban 95677c5099 jscript: Added new jmp_z opcode, more appropriate for branches. 2011-12-20 20:06:30 +01:00
Jacek Caban e5d7d50faa jscript: Renamed jmp_z and jmp_nz to cnd_z and cnd_nz. 2011-12-20 20:06:30 +01:00
Jacek Caban 00030ff66f jscript: Get rid of no longer needed identifier in exprval_t. 2011-12-20 20:06:29 +01:00
Jacek Caban f5a3f1417e jscript: Get rid of no longer used expr_eval flags. 2011-12-20 20:06:29 +01:00
Jacek Caban 5c158f1df6 jscript: Use compiler to handle variable statement. 2011-12-20 20:06:28 +01:00
Alistair Leslie-Hughes 1a9d9e0f76 jscript: Don't double free IObjectWithSite interface. 2011-12-20 10:13:10 +01:00
Jacek Caban 7c3160ae02 jscript: Use compiler for hanling empty statements. 2011-12-19 20:15:47 +01:00
Jacek Caban cf2fc11e31 jscript: Use compiler for handling if statement. 2011-12-19 20:15:47 +01:00
Jacek Caban ccba279b89 jscript: Use compiler for handling expression statements. 2011-12-19 20:15:47 +01:00
Jacek Caban 2f3e27f09a jscript: Use bytecode for execution main code block in exec_source. 2011-12-19 20:15:46 +01:00
Jacek Caban f6023c428a jscript: Use bytecode for block statement implementation. 2011-12-19 20:15:46 +01:00
Jacek Caban 42aefd424d jscript: Store type information in statement nodes. 2011-12-19 20:15:45 +01:00
Jacek Caban 47fa932ac0 jscript: Return VARIANT directly from expr_eval. 2011-12-16 16:38:29 +01:00
Jacek Caban 6b1077e2cb jscript: Invoke bytecode directly from expr_eval. 2011-12-16 16:38:29 +01:00
Jacek Caban fecc2fcb5e jscript: Get rid of no longer needed expression eval entry. 2011-12-16 16:38:28 +01:00
Jacek Caban 5e6faaea12 jscript: Use bytecode for object literal implementation. 2011-12-16 16:38:28 +01:00
Jacek Caban b268e41da6 jscript: Use bytecode for function expression implementation. 2011-12-16 16:38:28 +01:00
Jacek Caban 5086bb2cd9 jscript: Get rid of no longer needed EXPR_NEWREF flag. 2011-12-15 17:46:47 +01:00
Jacek Caban 63366f8f1b jscript: Always use compiler for member, array and identifier expressions. 2011-12-15 17:46:47 +01:00
Jacek Caban 43a2d8b990 jscript: Don't pass EXPR_NEWREF to name expression in array_expression_eval. 2011-12-15 17:46:46 +01:00
Jacek Caban 595646066b jscript: Call expressions needling EXPR_NEWREF flag directly. 2011-12-15 17:46:46 +01:00
Jacek Caban fd6ecbd781 jscript: Throw type error on invalid delete. 2011-12-15 17:46:42 +01:00
Jacek Caban 7845fe595d jscript: Added more deleting tests. 2011-12-15 17:46:41 +01:00
Jacek Caban 3fd2979fba jscript: Use byte code for deleting identifier expressions. 2011-12-15 17:46:41 +01:00
Jacek Caban 3caf287630 jscript: Use bytecode for typeof expression implementation. 2011-12-13 18:59:10 +01:00
Jacek Caban 64ef20ce53 jscript: Initialize VARIANT before passing it to disp_propget. 2011-12-12 15:50:50 +01:00
Jacek Caban 2c8e8948df jscript: Properly handle NULL IDispatch in stack_pop_object. 2011-12-12 15:50:46 +01:00
Jacek Caban 6f35c8fd5d jscript: Use bytecode for instanceof implementation. 2011-12-12 15:50:46 +01:00
Jacek Caban f8e3e92be3 jscript: Don't use EXPR_NEWREF in forin_statement_event. 2011-12-12 15:50:45 +01:00
Jacek Caban 106fcb8e87 jscript: Don't use EXPR_NEWREF in for_statement_event. 2011-12-12 15:50:45 +01:00
Jacek Caban 7c3728d728 jscript: Use bytecode for '<<=' expression implementation. 2011-12-09 21:15:29 +01:00
Jacek Caban a80392e5ea jscript: Use bytecode for '<<' expression implementation. 2011-12-09 21:15:28 +01:00
Jacek Caban 7904932a9e jscript: Use bytecode for '>>>=' expression implementation. 2011-12-09 21:15:28 +01:00
Jacek Caban 96e822a33e jscript: Use bytecode for '>>>' expression implementation. 2011-12-09 21:15:28 +01:00
Jacek Caban fcdd85267d jscript: Fixed memory leaks. 2011-12-09 21:15:27 +01:00
Jacek Caban d30bfb6e54 jscript: Use bytecode for '>>=' expression. 2011-12-08 18:00:16 +01:00
Jacek Caban 28013dfa6f jscript: Use bytecode for '>>' expression. 2011-12-08 18:00:14 +01:00
Jacek Caban fc4948af2c jscript: Use bytecode for '&=' expression implementation. 2011-12-08 18:00:12 +01:00
Jacek Caban 1ef486421e jscript: Use bytecode for binary and implementation. 2011-12-08 18:00:11 +01:00
Jacek Caban 558d759465 jscript: Use bytecode for array literal expressions. 2011-12-08 18:00:09 +01:00
Jacek Caban 4d0e360266 jscript: Use bytecode for pre-decrement implementation. 2011-12-08 18:00:07 +01:00
Jacek Caban 667cc2e68a jscript: Use bytecode for pre-increment expression implementation. 2011-12-08 18:00:05 +01:00
Jacek Caban 0325ec71e9 scrrun: Moved script extensions registration to scrrun.dll. 2011-12-07 17:50:02 +01:00
Jacek Caban e1da3d7242 jscript: Use bytecode for post-decrement expression. 2011-12-07 17:50:02 +01:00
Jacek Caban a508149fad jscript: Use bytecode for post-increment expression. 2011-12-07 17:50:01 +01:00
Jacek Caban aa809f1b7e jscript: Added bytecode version of array expression. 2011-12-07 17:50:01 +01:00
Jacek Caban 9c9157a144 jscript: Use binary_expression_t instead of array_expression_t. 2011-12-07 17:50:01 +01:00
Jacek Caban 4da0cf39f4 jscript: Use bytecode for all call expressions. 2011-12-07 17:50:00 +01:00
Jacek Caban 3aa7cee00e jscript: Use bytecode for calls on identifier and member expressions. 2011-12-07 17:50:00 +01:00
Francois Gouget 0a065cb4bd jscript: Make interp_expression_eval() static. 2011-12-06 17:54:33 +01:00
Jacek Caban 9749de29bc jscript: Use bytecode for '^=' expression implementation. 2011-12-06 15:50:59 +01:00
Jacek Caban c74641acf2 jscript: Use bytecode for '|=' expression. 2011-12-06 15:50:59 +01:00
Jacek Caban a289b8e0a4 jscript: Added bytecode version of member expression. 2011-12-06 15:50:59 +01:00
Jacek Caban 822fdde42d jscript: Use bytecode for '%=' expression implementation. 2011-12-06 15:50:59 +01:00
Jacek Caban e9bd2e47f8 jscript: Use bytecode for '/=' expression implementation. 2011-12-06 15:50:59 +01:00
Jacek Caban 0ff59f444b jscript: Use bytecode for '*=' expression implementation. 2011-12-06 15:50:59 +01:00
Jacek Caban 7b022dbbb8 jscript: Use bytecode for '-=' expression implementation. 2011-12-05 12:25:14 +01:00
Jacek Caban 087afe8b79 jscript: Use bytecode for '+=' expression implementation. 2011-12-05 12:25:09 +01:00
Jacek Caban 8511797c07 jscript: Use bytecode for invalid assignments. 2011-12-05 12:25:04 +01:00
Jacek Caban 5b2c2c5cf9 jscript: Use bytecode for assignment to member expression. 2011-12-05 12:24:59 +01:00
Jacek Caban 9aafd03110 jscript: Use bytecode for assigning to array expression. 2011-12-05 12:24:55 +01:00
Jacek Caban d3d2f063b6 jscript: Use bytecode for assignment to identifier. 2011-12-05 12:24:50 +01:00
Jacek Caban 9f9f5ae0a7 jscript: Use bytecode for '>=' expression implementation. 2011-12-01 14:18:41 +01:00
Jacek Caban f3e18fbf03 jscript: Use bytecode for '>' expression implementation. 2011-12-01 14:18:37 +01:00
Jacek Caban fb51810a95 jscript: Use bytecode for '<=' expression implementation. 2011-12-01 14:18:33 +01:00
Jacek Caban e5a31cc2d0 jscript: Use bytecode for '<' expression implementation. 2011-12-01 14:18:29 +01:00
Jacek Caban 82368f5cfe jscript: Get rid of no longer needed EXPRVAL_NAMEREF. 2011-11-30 11:51:29 +01:00
Jacek Caban 962307da6c jscript: Use bytecode for delete member expression. 2011-11-30 11:51:25 +01:00
Jacek Caban facc2189d2 jscript: Use bytecode for delete on array expression implementation. 2011-11-30 11:51:20 +01:00
Jacek Caban 6c47177cb1 jscript: Mark some functions as static. 2011-11-30 11:51:16 +01:00
Jacek Caban 0505e03b57 jscript: Use bytecode for binary xor expressions. 2011-11-29 13:26:29 +01:00
Jacek Caban 96b13314eb jscript: Use bytecode for binary or implementation. 2011-11-29 13:26:26 +01:00
Jacek Caban 7a20965bd2 jscript: Use bytecode for modulo expression implementation. 2011-11-29 13:26:22 +01:00
Jacek Caban 09306e434e jscript: Use bytecode for '/' expression implementation. 2011-11-29 13:26:18 +01:00
Jacek Caban cf68237c80 jscript: Use bytecode for '*' expression implementation. 2011-11-29 13:26:15 +01:00
Jacek Caban bd80daff96 jscript: Added bytecode-based version of identifier expression. 2011-11-28 16:40:50 +01:00
Jacek Caban 518f4c4983 jscript: Use bytecode for new expression implementation. 2011-11-28 16:40:49 +01:00
Jacek Caban 25e58de596 jscript: Use bytecode for conditional expressions. 2011-11-28 16:40:49 +01:00
Jacek Caban 88dc54a7f7 jscript: Use bytecode for logical and expression. 2011-11-28 16:40:49 +01:00
Jacek Caban 28375af386 jscript: Use bytecode for logical or expression. 2011-11-28 16:40:49 +01:00
Jacek Caban 58952a07d0 jscript: Use bytecode for '==' and '!=' expression. 2011-11-25 16:21:58 +01:00
Jacek Caban 413fe9a462 jscript: Use bytecode for unary '-' expression. 2011-11-25 16:21:58 +01:00
Jacek Caban b13c6a27c3 jscript: Use bytecode for '-' expression implementation. 2011-11-25 16:21:58 +01:00
Jacek Caban 47314a92d7 jscript: Use bytecode for comma expression implementation. 2011-11-25 16:21:58 +01:00
Jacek Caban 172fa4fa99 jscript: Fixed memory leaks.
Spotted by Piotr.
2011-11-25 16:21:57 +01:00
Jacek Caban 0b50c32c83 jscript: Use bytecode for void expression. 2011-11-24 20:57:01 +01:00
Jacek Caban 83667e74d6 jscript: Use bytecode for this expression implementation. 2011-11-24 20:57:01 +01:00
Jacek Caban 9050c3725f jscript: Always use bytecode version of literal expressions. 2011-11-24 20:57:01 +01:00
Jacek Caban e4f92ef473 jscript: Use bytecode for regexp literals. 2011-11-24 20:57:01 +01:00
Jacek Caban 83c53d855a jscript: Use bytecode for null literal. 2011-11-24 20:57:01 +01:00
Jacek Caban a218e06854 jscript: Use bytecode for double literal. 2011-11-23 12:29:22 +01:00
Jacek Caban e5e7803a55 jscript: Use bytecode for string literal. 2011-11-23 12:29:17 +01:00
Jacek Caban 13d96df4bd jscript: Use bytecode for bool literal implementation. 2011-11-23 12:29:14 +01:00
Jacek Caban b3feafab41 jscript: Use bytecode for int literal implementation. 2011-11-23 12:29:10 +01:00
Jacek Caban 1c824ea606 jscript: Use bytecode for 'in' expression implementation. 2011-11-23 12:29:05 +01:00
Jacek Caban b1b0aadaab jscript: Use bytecode for '+' expression implementation. 2011-11-22 17:17:13 +01:00
Jacek Caban dcca57fd87 jscript: Added tests of unary '+' on not existent property. 2011-11-22 17:17:05 +01:00
Jacek Caban 35b9c42f53 jscript: Use bytecode for unary '+' expression. 2011-11-21 16:16:44 +01:00
Jacek Caban 2d83bdcfbe jscript: Use bytecode for binary negation implementation. 2011-11-21 16:16:42 +01:00
Jacek Caban 418af7eda9 jscript: Use bytecode interpreter for logical negation expression. 2011-11-18 15:37:08 +01:00
Jacek Caban 32602170a5 jscript: Use bytecode interpreter for '!==' expressions. 2011-11-18 15:37:08 +01:00
Jacek Caban b473f5d5c6 jscript: Added minimal bytecode compiler/interpreter and use it for '===' expressions. 2011-11-18 15:37:08 +01:00
Jacek Caban 8b66110e51 jscript: Store expression type in expression_t. 2011-11-18 15:37:07 +01:00
Jacek Caban fe9cb0c266 jscript: Use a helper function to allocate expression structs. 2011-11-18 15:37:07 +01:00
Nikolay Sivov b4987d095f jscript: Use specified expression length to trace it. 2011-11-02 20:01:27 +01:00
Hans Leidekker ed4143b912 jscript: Add a version resource. 2011-11-01 12:14:15 +01:00
Jacek Caban 6ffe4cb59f jscript: Moved return_type_t declaration to engine.c. 2011-10-25 16:57:26 +02:00
Andrew Talbot e67aaab27a jscript: Add breaks to some switch statements. 2011-10-10 13:30:18 +02:00
Andrew Talbot 30cab39056 jscript: Mark a fall-through in a switch statement. 2011-10-10 13:30:05 +02:00
Jacek Caban c46c47cbf3 jscript: Removed useless undef ACTSCPSITE_THIS. 2011-09-19 18:32:51 +02:00
Francois Gouget 405c3ef483 jscript/tests: Some tests require that the user interface be in English. 2011-09-19 17:56:04 +02:00
Piotr Caban 726f003293 jscript/tests: Added decodeURI tests. 2011-09-02 18:28:24 +02:00
Piotr Caban e4ec169fd9 jscript: Added decodeURI implementation. 2011-09-02 18:28:14 +02:00
Piotr Caban df96b7297b jscript: Throw exception on error in JSGlobal_encodeURIComponent. 2011-09-02 18:10:14 +02:00
Piotr Caban 65a7f47531 jscript: Limit name hash computations number. 2011-09-02 18:10:12 +02:00
Piotr Caban f1a237d682 jscript: Use hash table when accessing object properties by name. 2011-09-02 18:10:09 +02:00