786 args.add(LiteralNode.newInstance(unaryNode, property));
787 args.add(strictFlagNode);
788
789 } else if (rhs instanceof IndexNode) {
790 final IndexNode indexNode = (IndexNode)rhs;
791 final Expression base = indexNode.getBase();
792 final Expression index = indexNode.getIndex();
793
794 args.add(base);
795 args.add(index);
796 args.add(strictFlagNode);
797
798 } else {
799 return LiteralNode.newInstance(unaryNode, true);
800 }
801 return new RuntimeNode(unaryNode, request, args);
802 }
803
804 @Override
805 public Node leaveForNode(final ForNode forNode) {
806 if (forNode.isForIn()) {
807 return forNode.setIterator(lc, newObjectInternal(ITERATOR_PREFIX)); //NASHORN-73
808 }
809
810 return end(forNode);
811 }
812
813 @Override
814 public Node leaveFunctionNode(final FunctionNode functionNode) {
815 final FunctionNode finalizedFunction;
816 if (isUnparsedFunction(functionNode)) {
817 finalizedFunction = functionNode;
818 } else {
819 finalizedFunction =
820 markProgramBlock(
821 removeUnusedSlots(
822 createSyntheticInitializers(
823 finalizeParameters(
824 lc.applyTopFlags(functionNode))))
825 .setThisProperties(lc, thisProperties.pop().size()));
826 }
|
786 args.add(LiteralNode.newInstance(unaryNode, property));
787 args.add(strictFlagNode);
788
789 } else if (rhs instanceof IndexNode) {
790 final IndexNode indexNode = (IndexNode)rhs;
791 final Expression base = indexNode.getBase();
792 final Expression index = indexNode.getIndex();
793
794 args.add(base);
795 args.add(index);
796 args.add(strictFlagNode);
797
798 } else {
799 return LiteralNode.newInstance(unaryNode, true);
800 }
801 return new RuntimeNode(unaryNode, request, args);
802 }
803
804 @Override
805 public Node leaveForNode(final ForNode forNode) {
806 if (forNode.isForIn() || forNode.isForOf()) {
807 return forNode.setIterator(lc, newObjectInternal(ITERATOR_PREFIX)); //NASHORN-73
808 }
809
810 return end(forNode);
811 }
812
813 @Override
814 public Node leaveFunctionNode(final FunctionNode functionNode) {
815 final FunctionNode finalizedFunction;
816 if (isUnparsedFunction(functionNode)) {
817 finalizedFunction = functionNode;
818 } else {
819 finalizedFunction =
820 markProgramBlock(
821 removeUnusedSlots(
822 createSyntheticInitializers(
823 finalizeParameters(
824 lc.applyTopFlags(functionNode))))
825 .setThisProperties(lc, thisProperties.pop().size()));
826 }
|