Lines Matching full:this
4 * you may not use this file except in compliance with the License.
58 this.beginLabel = beginLabel;
59 this.endLabel = endLabel;
63 return this.beginLabel;
67 return this.endLabel;
77 this.catchBeginLabel = catchBeginLabel;
78 this.labelPairs.push(labelPair);
79 this.depth = TryStatement.getcurrentTryStatementDepth();
81 pandaGen.getCatchMap().set(catchBeginLabel, this);
85 return this.labelPairs;
89 return this.catchBeginLabel;
93 return this.depth;
98 let lastLabelPair = this.labelPairs.pop();
100 …this.labelPairs.push(new LabelPair(lastLabelPair.getBeginLabel(), inlinedLabelPair.getBeginLabel()…
101 … this.labelPairs.push(new LabelPair(inlinedLabelPair.getEndLabel(), lastLabelPair.getEndLabel()));
118 this.outer = TryStatement.currentTryStatement;
129 if (this.outer) {
131 this.outer.catchTable.splitLabelPair(labelPairs[labelPairs.length - 1]);
133 this.stmt = stmt;
134 this.catchTable = catchTable;
136 this.trybuilder = trybuilder;
139 TryStatement.currentTryStatement = this;
144 TryStatement.currentTryStatement = this.outer;
160 return this.outer;
164 return this.stmt;
168 return this.catchTable;
172 return this.loopEnvLevel;
176 this.loopEnvLevel += 1;
180 this.loopEnvLevel -= 1;
191 this.compiler = compiler;
192 this.pandaGen = pandaGen;
193 this.stmt = Stmt;
211 if ((<ts.TryStatement>this.stmt).finallyBlock) {
212 this.tryStatement = new TryStatement(this.stmt, catchTable, this);
214 this.tryStatement = new TryStatement(this.stmt, catchTable);
217 this.compiler.compileStatement((<ts.TryStatement>this.stmt).tryBlock);
220 this.tryStatement.destroy();
224 if ((<ts.TryStatement>this.stmt).finallyBlock) {
225 this.compiler.compileStatement((<ts.TryStatement>this.stmt).finallyBlock!);
230 let catchClause = (<ts.TryStatement>this.stmt).catchClause;
232 this.compiler.pushScope(catchClause);
233 compileCatchClauseVariableDeclaration(this.compiler, catchClause.variableDeclaration);
235 this.compiler.pushScope(catchBlock);
236 catchBlock.statements.forEach((stmt) => this.compiler.compileStatement(stmt));
237 this.compiler.popScope();
238 this.compiler.popScope();
241 let exceptionVreg = this.pandaGen.getTemp();
242 this.pandaGen.storeAccumulator(this.stmt, exceptionVreg);
243 this.compiler.compileStatement((<ts.TryStatement>this.stmt).finallyBlock!);
244 this.pandaGen.loadAccumulator(this.stmt, exceptionVreg);
245 this.pandaGen.throw(this.stmt);
246 this.pandaGen.freeTemps(exceptionVreg);
252 this.compiler.compileStatement((<ts.TryStatement>this.stmt).finallyBlock!);
266 this.labelTarget = labelTarget;
267 this.doneReg = doneReg;
268 this.iterator = iterator;
269 this.hasLoopEnv = hasLoopEnv;
270 this.loopEnv = loopEnv ? loopEnv : undefined;
274 let stmt = <ts.ForOfStatement>this.stmt;
275 let compiler = <Compiler>this.compiler;
276 let pandaGen = this.pandaGen;
277 this.tryStatement = new TryStatement(stmt, catchTable, this);
279 let resultReg = this.pandaGen.getTemp();
285 pandaGen.storeAccumulator(stmt, this.doneReg);
287 pandaGen.label(stmt, this.labelTarget.getContinueTargetLabel()!);
288 if (this.hasLoopEnv) {
292 this.compileIteratorNext(stmt, pandaGen, this.iterator, resultReg);
295 pandaGen.jumpIfTrue(stmt, this.labelTarget.getBreakTargetLabel());
301 pandaGen.storeAccumulator(stmt, this.doneReg);
303 let lref = LReference.generateLReference(this.compiler, stmt.initializer, isDeclaration);
307 this.compiler.compileStatement(stmt.statement);
308 this.tryStatement.destroy();
315 let pandaGen = this.pandaGen;
318 pandaGen.storeAccumulator(this.stmt, exceptionVreg);
320 pandaGen.loadAccumulator(this.stmt, this.doneReg);
322 (<ts.ForOfStatement>this.stmt).expression,
327 pandaGen.loadObjProperty(this.stmt, this.iterator.getObject(), "return");
328 pandaGen.storeAccumulator(this.stmt, this.iterator.getNextMethod());
329 …pandaGen.condition(this.stmt, ts.SyntaxKind.ExclamationEqualsEqualsToken, getVregisterCache(pandaG…
330 pandaGen.call(this.stmt, [this.iterator.getNextMethod(), this.iterator.getObject()], true);
331 if (this.iterator.getType() == IteratorType.Async) {
332 (<AsyncGeneratorFunctionBuilder>(this.compiler.getFuncBuilder())).await(this.stmt);
335 pandaGen.label(this.stmt, noReturn);
336 pandaGen.loadAccumulator(this.stmt, exceptionVreg);
337 pandaGen.throw(this.stmt);
343 …if (cfc == ControlFlowChange.Break || continueTargetLabel != this.labelTarget.getContinueTargetLab…
345 let innerResult = this.pandaGen.getTemp();
346 this.pandaGen.loadObjProperty(this.stmt, this.iterator.getObject(), "return");
347 this.pandaGen.storeAccumulator(this.stmt, this.iterator.getNextMethod());
348 …this.pandaGen.condition(this.stmt, ts.SyntaxKind.ExclamationEqualsEqualsToken, getVregisterCache(t…
349 … this.pandaGen.call(this.stmt, [this.iterator.getNextMethod(), this.iterator.getObject()], true);
351 this.pandaGen.storeAccumulator(this.stmt, innerResult);
352 this.pandaGen.throwIfNotObject(this.stmt, innerResult);
354 this.pandaGen.label(this.stmt, noReturn);
355 this.pandaGen.freeTemps(innerResult);
362 (<AsyncGeneratorFunctionBuilder>(this.compiler.getFuncBuilder())).await(this.stmt);