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); |