src/jdk/nashorn/internal/codegen/Attr.java

changeset 416
ce9cbe70f915
parent 412
be2087629eb9
child 417
20b2c2dc20e8
equal deleted inserted replaced
415:edca88d3a03e 416:ce9cbe70f915
52 import java.util.Deque; 52 import java.util.Deque;
53 import java.util.HashSet; 53 import java.util.HashSet;
54 import java.util.Iterator; 54 import java.util.Iterator;
55 import java.util.List; 55 import java.util.List;
56 import java.util.Set; 56 import java.util.Set;
57
58 import jdk.nashorn.internal.codegen.types.Type; 57 import jdk.nashorn.internal.codegen.types.Type;
59 import jdk.nashorn.internal.ir.AccessNode; 58 import jdk.nashorn.internal.ir.AccessNode;
60 import jdk.nashorn.internal.ir.BinaryNode; 59 import jdk.nashorn.internal.ir.BinaryNode;
61 import jdk.nashorn.internal.ir.Block; 60 import jdk.nashorn.internal.ir.Block;
62 import jdk.nashorn.internal.ir.CallNode; 61 import jdk.nashorn.internal.ir.CallNode;
341 340
342 start(catchNode); 341 start(catchNode);
343 catchNestingLevel++; 342 catchNestingLevel++;
344 343
345 // define block-local exception variable 344 // define block-local exception variable
346 final Symbol def = defineSymbol(block, exception.getName(), IS_VAR | IS_LET | IS_ALWAYS_DEFINED); 345 final String exname = exception.getName();
346 final Symbol def = defineSymbol(block, exname, IS_VAR | IS_LET | IS_ALWAYS_DEFINED);
347 newType(def, Type.OBJECT); //we can catch anything, not just ecma exceptions 347 newType(def, Type.OBJECT); //we can catch anything, not just ecma exceptions
348 348
349 addLocalDef(exception.getName()); 349 addLocalDef(exname);
350 350
351 return true; 351 return true;
352 } 352 }
353 353
354 @Override 354 @Override
676 } 676 }
677 } 677 }
678 678
679 if (scopeBlock != null) { 679 if (scopeBlock != null) {
680 assert lc.contains(scopeBlock); 680 assert lc.contains(scopeBlock);
681 lc.setFlag(scopeBlock, Block.NEEDS_SCOPE); 681 lc.setBlockNeedsScope(scopeBlock);
682 } 682 }
683 } 683 }
684 } 684 }
685 685
686 /** 686 /**

mercurial