Lines Matching refs:pandaGen
64 abstract expand(pandaGen: PandaGen, compiler: Compiler): Array<IRNode>;
72 expand(pandaGen: PandaGen): Array<IRNode> {
74 return this.loadLexEnvVar(pandaGen);
76 return this.loadLocalVar(pandaGen);
80 private loadLocalVar(pandaGen: PandaGen): Array<IRNode> {
83 let bindVreg = pandaGen.getVregForVariable(v);
87 insns.push(loadAccumulator(getVregisterCache(pandaGen, CacheList.HOLE)));
96 private loadLexEnvVar(pandaGen: PandaGen): Array<IRNode> {
121 expand(pandaGen: PandaGen): Array<IRNode> {
123 return this.storeLexEnvVar(pandaGen);
125 return this.storeLocalVar(pandaGen);
129 private storeLocalVar(pandaGen: PandaGen): Array<IRNode> {
132 let bindVreg = pandaGen.getVregForVariable(v);
137 let tempReg = pandaGen.getTemp();
139 insns.push(loadAccumulator(getVregisterCache(pandaGen, CacheList.HOLE)));
142 pandaGen.freeTemps(tempReg);
146 checkConstAssignment(pandaGen, v, insns, this.node);
154 private storeLexEnvVar(pandaGen: PandaGen): Array<IRNode> {
159 let valueReg: VReg = pandaGen.getTemp();
161 pandaGen.setInstType(storeAccInst, v.getTypeIndex());
176 checkConstAssignment(pandaGen, v, insns, this.node);
184 pandaGen.freeTemps(valueReg);