summaryrefslogtreecommitdiffstats
path: root/js/src/frontend/BytecodeEmitter.cpp
Commit message (Collapse)AuthorAgeLines
* Issue #1465 - Implement optional catch binding.wolfbeast2020-02-27-23/+34
|
* Revert #1137 - Remove unboxed arrayswolfbeast2020-02-23-8/+9
| | | | | - accounting for removal of watch()/unwatch() - updated for intermediate code changes.
* Bug 1454285 - Part 2: Disallow using innermostEmitterScope while the value ↵Gaming4JC2019-12-17-27/+32
| | | | | | does not match the bytecode environment. Tag #1287
* Bug 1454285 - Part 1: Specify the current scope when emitting await and ↵Gaming4JC2019-12-17-42/+62
| | | | | | .generator. Tag #1287
* Bug 1379525 - Part 1: Await on the value before yielding or returning inside ↵Gaming4JC2019-12-17-9/+21
| | | | | | async generator. Tag #1287
* Bug 1364608 - Stash rval in AsyncIteratorClose.Gaming4JC2019-12-17-2/+16
| | | | Tag #1287
* Bug 1331092 - Part 11: Await on the innerResult.value when innerResult.done ↵Gaming4JC2019-12-17-0/+9
| | | | | | is true in yield*. Tag #1287
* Bug 1331092 - Part 9: Implement for-await-of.Gaming4JC2019-12-17-9/+32
| | | | Tag #1287
* Bug 1331092 - Part 7: Implement Async Generator yield*.Gaming4JC2019-12-17-12/+118
| | | | Tag #1287
* Bug 1331092 - Part 2: Implement Async Generator except yield*.Gaming4JC2019-12-17-7/+19
| | | | Tag #1287
* Bug 1316098 - Optimize out result object allocation for await/return in ↵Gaming4JC2019-12-17-3/+22
| | | | | | async function. Tag #1287
* Bug 1343481 - Part 7: Add BytecodeEmitter::emitDotGenerator and make ↵Gaming4JC2019-12-17-28/+49
| | | | | | yield/await nodes unary. Tag #1287
* Bug 1343481 - Part 3: Add JSOP_AWAIT and rename {yieldIndex,yieldOffset} to ↵Gaming4JC2019-12-17-12/+12
| | | | | | {yieldAndAwaitIndex,yieldAndAwaitOffset}. Tag #1287
* Bug 1343481 - Part 2: Stop using StarGegerator for async function.Gaming4JC2019-12-17-8/+15
| | | | Tag #1287
* Bug 1343481 - Part 1: Remove {JSFunction,JSScript,LazyScript}.isGenerator() ↵Gaming4JC2019-12-17-7/+12
| | | | | | method. Tag #1287
* 1339395 - Part 7: Remove no longer needed check for jsid strings which are ↵Gaming4JC2019-07-18-35/+4
| | | | indices from frontend.
* 1339395 - Part 3: Add BytecodeEmitter support for object rest and spread ↵Gaming4JC2019-07-18-45/+259
| | | | properties.
* 1339395 - Part 2: Add parser support for rest and spread object properties.Gaming4JC2019-07-18-0/+12
|
* 1344477 - Part 1: Add JSOP_CALL_IGNORES_RV for function call that ignores ↵Gaming4JC2019-07-18-25/+39
| | | | return value.
* 1216630 - Rename preludeStart and postludeEnd to toStringStart and ↵Gaming4JC2019-07-18-2/+2
| | | | toStringEnd and misc fixes.
* 1216630 - Print class source when calling toString on the constructor.Gaming4JC2019-07-18-1/+9
| | | | | | | | | | This is accomplished in the following ways. LazyScripts and JSScripts now have 4 offsets: - Source begin and end for the actual source. This is used for lazy parsing. - toString begin and end for toString. Some kinds of functions, like async, only have a different begin offset. Class constructors have different offsets for both begin and end. For syntactically present (i.e. non-default) constructors, the class source span is remembered directly on the LazyScript or JSScript. The toString implementation then splices out the substring directly. For default constructors, a new SRC_CLASS SrcNote type is added. It's binary and has as its arguments the begin and end offsets of the class expression or statement. MakeDefaultConstructor reads the note and overrides the cloned self-hosted function's source object. This is probably the least intrusive way to accomplish this.
* 1342273 - Improve frontend tracelogging. [PARTIAL] Only implemented const to ↵Gaming4JC2019-07-18-15/+17
| | | | rvalue changes, no tracelogging
* 1283712 - Part 3: Add Parser::errorWithNotes and Parser::errorWithNotesAt.Gaming4JC2019-07-18-3/+4
|
* 1317375 - Implement "Template Literals Revision / Lifting Template Literal ↵Gaming4JC2019-07-18-0/+5
| | | | Restriction" ECMAScript proposal
* Remove JSOP_SPREADCALLARRAY and just use JSOP_NEWARRAY again.wolfbeast2019-06-18-5/+4
|
* Make use of ArrayObjects in favor of generic JS objects.wolfbeast2019-06-12-2/+2
| | | | | ArrayObjects has been a thing for years but been under-used. About time they are used where prudent.
* Improve efficiency of (C++) heap allocations related towolfbeast2019-05-28-10/+18
| | | | | | BytecodeEmitter::code. While there, also add some sanity checks and clean up code.
* Rename TokenStream::reportStrictWarningErrorNumberVA towolfbeast2019-04-06-4/+4
| | | | | | | TokenStream::reportExtraWarningErrorNumberVA for clarity. Emit Extra Warnings instead of Strict Warnings from the BCE where it makes sense.
* Split Parser::report into Parser::zeport (a temporary name) that useswolfbeast2019-04-05-2/+4
| | | | | the current offset, and Parser::reportWithNode that derives it from a Node.
* Stage 1-1: Implement Function.prototype.toString revision proposal.wolfbeast2019-02-02-1/+2
| | | | Tag #960
* Convert the trailing array of BindingNames at the end of the various kinds ↵trav902018-09-02-2/+3
| | | | of scope data into raw unsigned chars into which those BindingNames are placement-new'd, rather than memcpy-ing non-trivial classes around and failing to comply with the C++ object model
* Bug 1360839 - Call IteratorClose due to abrupt completion from yieldjanekptacijarabaci2018-03-25-8/+62
| | | | Issue #74
* Bug 1357075 - Pad a nop to unwind to the scope just before a destructuring ↵janekptacijarabaci2018-03-25-0/+8
| | | | | | iterator close trynote Issue #74
* Bug 1346862 - Fix IteratorClose due to non-local jumps being catchable by ↵janekptacijarabaci2018-03-25-13/+7
| | | | | | try statements inside for-of Issue #74
* Bug 1342553, Bug 1343072, Bug 1344753 (details in the description)janekptacijarabaci2018-03-25-147/+306
| | | | | | | | | | Bug 1342553 - Part 0.1: Use try-catch for IteratorClose in for-of Bug 1343072 - Update HasLiveStackValueAtDepth to follow the change in JSTRY_FOR_OF Bug 1344753 - Update for-of stack depth in ControlFlowGenerator::processWhileOrForInLoop Issue #74
* Bug 1338796 - Do not call iterator.return if iterator.throw is present in yield*janekptacijarabaci2018-03-25-122/+158
| | | | Issue #74
* Bug 1322069 - Add TryEmitterjanekptacijarabaci2018-03-25-169/+341
| | | | Issue #74
* Bug 1334799 - Handle stack value in correct order when leaving for-of loop ↵janekptacijarabaci2018-03-25-3/+3
| | | | | | from finally block Issue #74
* Bug 1332881 - Handle stack value in correct order when leaving loop and ↵janekptacijarabaci2018-03-25-0/+6
| | | | | | try-finally Issue #74
* Bug 1147371: Implement calling IteratorClose and "return" on iterators in yield*janekptacijarabaci2018-03-24-28/+52
| | | | Issue #74
* Bug 1147371: Implement IteratorClose for array destructuringjanekptacijarabaci2018-03-24-92/+126
| | | | Issue #74
* Bug 1147371: Rename allowContentSpread to allowContentIterjanekptacijarabaci2018-03-24-10/+20
| | | | Issue #74
* Bug 1147371: Implement IteratorClose for for-ofjanekptacijarabaci2018-03-24-164/+455
| | | | Issue #74
* Bug 1204028: Evaluate LHS reference before RHS in destructuringjanekptacijarabaci2018-03-20-88/+189
| | | | | Issue #73 [Depends on] Bug 1147371: Implement IteratorClose
* Bug 1322314 - Do not emit ParseNode twice in ↵janekptacijarabaci2018-03-20-138/+119
| | | | | | | BytecodeEmitter::emitDestructuringOpsArray Issue #73 [Depends on] Bug 1147371: Implement IteratorClose
* Bug 1322314 - Disallow emitting ParseNode twicejanekptacijarabaci2018-03-20-25/+4
| | | | | Issue #73 [Depends on] Bug 1147371: Implement IteratorClose
* Follow up: A opening bracket { was added; Added "function()->explicitName()" ↵janekptacijarabaci2018-03-19-1/+1
| | | | | | instead of "function()->name()" Issue #78
* Part 2: Call NameFunctions after emittingjanekptacijarabaci2018-03-19-2/+0
| | | | Issue #78
* Part 1: Implement ES6 function name property semanticsjanekptacijarabaci2018-03-19-12/+99
| | | | Issue #78
* Bug 1320042: Rename BytecodeEmitter::emitConditionallyExecuted{SOMETHING} to ↵janekptacijarabaci2018-03-19-16/+16
| | | | | | | | BytecodeEmitter::emit{SOMETHING}InBranch Issue #78 [Depends on] Bug 883377: Implement ES6 function "name" property semantics