17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26 package jdk.nashorn.internal.objects;
27
28 import static jdk.nashorn.internal.runtime.ECMAErrors.typeError;
29 import static jdk.nashorn.internal.runtime.ScriptRuntime.UNDEFINED;
30 import static jdk.nashorn.internal.runtime.linker.Lookup.MH;
31
32 import java.io.IOException;
33 import java.io.PrintWriter;
34 import java.lang.invoke.MethodHandle;
35 import java.lang.invoke.MethodHandles;
36 import java.lang.ref.SoftReference;
37 import java.util.HashMap;
38 import java.util.LinkedHashMap;
39 import java.util.List;
40 import java.util.Map;
41 import jdk.nashorn.internal.objects.annotations.Attribute;
42 import jdk.nashorn.internal.objects.annotations.Property;
43 import jdk.nashorn.internal.objects.annotations.ScriptClass;
44 import jdk.nashorn.internal.runtime.ConsString;
45 import jdk.nashorn.internal.runtime.Context;
46 import jdk.nashorn.internal.runtime.GlobalFunctions;
47 import jdk.nashorn.internal.runtime.GlobalObject;
48 import jdk.nashorn.internal.runtime.JSType;
49 import jdk.nashorn.internal.runtime.NativeJavaPackage;
50 import jdk.nashorn.internal.runtime.OptionsObject;
51 import jdk.nashorn.internal.runtime.PropertyDescriptor;
52 import jdk.nashorn.internal.runtime.Scope;
53 import jdk.nashorn.internal.runtime.ScriptFunction;
54 import jdk.nashorn.internal.runtime.ScriptObject;
55 import jdk.nashorn.internal.runtime.ScriptRuntime;
56 import jdk.nashorn.internal.runtime.ScriptingFunctions;
57 import jdk.nashorn.internal.runtime.Source;
377 * @return true if strict mode enabled in {@link Global#getThisContext()}
378 */
379 static boolean isStrict() {
380 return getThisContext()._strict;
381 }
382
383 // GlobalObject interface implementation
384
385 @Override
386 public void initBuiltinObjects() {
387 if (this.builtinObject != null) {
388 // already initialized, just return
389 return;
390 }
391
392 init();
393 }
394
395 @Override
396 public ScriptFunction newScriptFunction(final String name, final MethodHandle handle, final ScriptObject scope, final boolean strict) {
397 return new ScriptFunctionImpl(name, handle, scope, strict, null);
398 }
399
400 @Override
401 public Object wrapAsObject(final Object obj) {
402 if (obj instanceof Boolean) {
403 return new NativeBoolean((Boolean)obj);
404 } else if (obj instanceof Number) {
405 return new NativeNumber(((Number)obj).doubleValue());
406 } else if (obj instanceof String || obj instanceof ConsString) {
407 return new NativeString((CharSequence)obj);
408 } else if (obj instanceof Object[]) { // extension
409 return new NativeArray((Object[])obj);
410 } else if (obj instanceof double[]) { // extension
411 return new NativeArray((double[])obj);
412 } else if (obj instanceof long[]) {
413 return new NativeArray((long[])obj);
414 } else if (obj instanceof int[]) {
415 return new NativeArray((int[])obj);
416 } else {
417 // FIXME: more special cases? Map? List?
|
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26 package jdk.nashorn.internal.objects;
27
28 import static jdk.nashorn.internal.runtime.ECMAErrors.typeError;
29 import static jdk.nashorn.internal.runtime.ScriptRuntime.UNDEFINED;
30 import static jdk.nashorn.internal.runtime.linker.Lookup.MH;
31
32 import java.io.IOException;
33 import java.io.PrintWriter;
34 import java.lang.invoke.MethodHandle;
35 import java.lang.invoke.MethodHandles;
36 import java.lang.ref.SoftReference;
37 import java.util.LinkedHashMap;
38 import java.util.List;
39 import java.util.Map;
40 import jdk.nashorn.internal.objects.annotations.Attribute;
41 import jdk.nashorn.internal.objects.annotations.Property;
42 import jdk.nashorn.internal.objects.annotations.ScriptClass;
43 import jdk.nashorn.internal.runtime.ConsString;
44 import jdk.nashorn.internal.runtime.Context;
45 import jdk.nashorn.internal.runtime.GlobalFunctions;
46 import jdk.nashorn.internal.runtime.GlobalObject;
47 import jdk.nashorn.internal.runtime.JSType;
48 import jdk.nashorn.internal.runtime.NativeJavaPackage;
49 import jdk.nashorn.internal.runtime.OptionsObject;
50 import jdk.nashorn.internal.runtime.PropertyDescriptor;
51 import jdk.nashorn.internal.runtime.Scope;
52 import jdk.nashorn.internal.runtime.ScriptFunction;
53 import jdk.nashorn.internal.runtime.ScriptObject;
54 import jdk.nashorn.internal.runtime.ScriptRuntime;
55 import jdk.nashorn.internal.runtime.ScriptingFunctions;
56 import jdk.nashorn.internal.runtime.Source;
376 * @return true if strict mode enabled in {@link Global#getThisContext()}
377 */
378 static boolean isStrict() {
379 return getThisContext()._strict;
380 }
381
382 // GlobalObject interface implementation
383
384 @Override
385 public void initBuiltinObjects() {
386 if (this.builtinObject != null) {
387 // already initialized, just return
388 return;
389 }
390
391 init();
392 }
393
394 @Override
395 public ScriptFunction newScriptFunction(final String name, final MethodHandle handle, final ScriptObject scope, final boolean strict) {
396 return new ScriptFunctionImpl(name, handle, scope, null, strict, false);
397 }
398
399 @Override
400 public Object wrapAsObject(final Object obj) {
401 if (obj instanceof Boolean) {
402 return new NativeBoolean((Boolean)obj);
403 } else if (obj instanceof Number) {
404 return new NativeNumber(((Number)obj).doubleValue());
405 } else if (obj instanceof String || obj instanceof ConsString) {
406 return new NativeString((CharSequence)obj);
407 } else if (obj instanceof Object[]) { // extension
408 return new NativeArray((Object[])obj);
409 } else if (obj instanceof double[]) { // extension
410 return new NativeArray((double[])obj);
411 } else if (obj instanceof long[]) {
412 return new NativeArray((long[])obj);
413 } else if (obj instanceof int[]) {
414 return new NativeArray((int[])obj);
415 } else {
416 // FIXME: more special cases? Map? List?
|