nashorn/src/jdk/nashorn/internal/runtime/JSONFunctions.java
changeset 17981 9b8e085aa1fe
parent 17771 9fedae4933e4
child 18317 2f5434c9c9fd
equal deleted inserted replaced
17979:adae4d39ee07 17981:9b8e085aa1fe
    23  * questions.
    23  * questions.
    24  */
    24  */
    25 
    25 
    26 package jdk.nashorn.internal.runtime;
    26 package jdk.nashorn.internal.runtime;
    27 
    27 
       
    28 import static jdk.nashorn.internal.runtime.arrays.ArrayIndex.getArrayIndexNoThrow;
       
    29 import static jdk.nashorn.internal.runtime.arrays.ArrayIndex.isValidArrayIndex;
       
    30 
    28 import java.lang.invoke.MethodHandle;
    31 import java.lang.invoke.MethodHandle;
    29 import java.util.Iterator;
    32 import java.util.Iterator;
    30 import java.util.List;
       
    31 import jdk.nashorn.internal.ir.LiteralNode;
    33 import jdk.nashorn.internal.ir.LiteralNode;
    32 import jdk.nashorn.internal.ir.Node;
    34 import jdk.nashorn.internal.ir.Node;
    33 import jdk.nashorn.internal.ir.ObjectNode;
    35 import jdk.nashorn.internal.ir.ObjectNode;
    34 import jdk.nashorn.internal.ir.PropertyNode;
    36 import jdk.nashorn.internal.ir.PropertyNode;
    35 import jdk.nashorn.internal.ir.UnaryNode;
    37 import jdk.nashorn.internal.ir.UnaryNode;
    36 import jdk.nashorn.internal.parser.JSONParser;
    38 import jdk.nashorn.internal.parser.JSONParser;
    37 import jdk.nashorn.internal.parser.TokenType;
    39 import jdk.nashorn.internal.parser.TokenType;
    38 import jdk.nashorn.internal.runtime.linker.Bootstrap;
    40 import jdk.nashorn.internal.runtime.linker.Bootstrap;
    39 import static jdk.nashorn.internal.runtime.arrays.ArrayIndex.getArrayIndexNoThrow;
       
    40 import static jdk.nashorn.internal.runtime.arrays.ArrayIndex.isValidArrayIndex;
       
    41 
    41 
    42 /**
    42 /**
    43  * Utilities used by "JSON" object implementation.
    43  * Utilities used by "JSON" object implementation.
    44  */
    44  */
    45 public final class JSONFunctions {
    45 public final class JSONFunctions {
   169 
   169 
   170         } else if (node instanceof ObjectNode) {
   170         } else if (node instanceof ObjectNode) {
   171             final ObjectNode   objNode  = (ObjectNode) node;
   171             final ObjectNode   objNode  = (ObjectNode) node;
   172             final ScriptObject object   = ((GlobalObject)global).newObject();
   172             final ScriptObject object   = ((GlobalObject)global).newObject();
   173             final boolean      strict   = global.isStrictContext();
   173             final boolean      strict   = global.isStrictContext();
   174             final List<Node>   elements = objNode.getElements();
   174 
   175 
   175             for (final PropertyNode pNode: objNode.getElements()) {
   176             for (final Node elem : elements) {
       
   177                 final PropertyNode pNode     = (PropertyNode) elem;
       
   178                 final Node         valueNode = pNode.getValue();
   176                 final Node         valueNode = pNode.getValue();
   179 
   177 
   180                 final String name = pNode.getKeyName();
   178                 final String name = pNode.getKeyName();
   181                 final Object value = convertNode(global, valueNode);
   179                 final Object value = convertNode(global, valueNode);
   182                 setPropertyValue(object, name, value, strict);
   180                 setPropertyValue(object, name, value, strict);