Class JSObject
java.lang.Object
com.oracle.truffle.api.object.DynamicObject
com.oracle.truffle.js.runtime.objects.JSDynamicObject
com.oracle.truffle.js.runtime.objects.JSObject
- All Implemented Interfaces:
com.oracle.truffle.api.interop.TruffleObject
- Direct Known Subclasses:
JSClassObject
The common base class for all JavaScript objects (values of type Object according to the spec).
Includes static methods for dealing with JS objects (internal methods).
-
Nested Class Summary
Nested classes/interfaces inherited from class com.oracle.truffle.js.runtime.objects.JSDynamicObject
JSDynamicObject.IsIdenticalOrUndefinedNested classes/interfaces inherited from class com.oracle.truffle.api.object.DynamicObject
com.oracle.truffle.api.object.DynamicObject.DynamicField -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final com.oracle.truffle.api.strings.TruffleStringprotected static final String[]static final com.oracle.truffle.api.strings.TruffleStringstatic final com.oracle.truffle.api.object.HiddenKeystatic final com.oracle.truffle.api.strings.TruffleStringstatic final com.oracle.truffle.api.strings.TruffleStringstatic final com.oracle.truffle.api.strings.TruffleStringstatic final com.oracle.truffle.api.strings.TruffleStringstatic final com.oracle.truffle.api.strings.TruffleString -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedJSObject(com.oracle.truffle.api.object.Shape shape, JSDynamicObject proto) -
Method Summary
Modifier and TypeMethodDescriptionprotected JSObjectcopyWithoutProperties(com.oracle.truffle.api.object.Shape shape) static com.oracle.truffle.api.strings.TruffleStringstatic booleandefineOwnProperty(JSDynamicObject obj, Object key, PropertyDescriptor desc) static booleandefineOwnProperty(JSDynamicObject obj, Object key, PropertyDescriptor desc, boolean doThrow) static booleandelete(JSDynamicObject obj, long index) static booleandelete(JSDynamicObject obj, long index, boolean isStrict) static booleandelete(JSDynamicObject obj, long index, boolean isStrict, JSClassProfile classProfile) static booleandelete(JSDynamicObject obj, Object key) static booleandelete(JSDynamicObject obj, Object key, boolean isStrict) static booleandelete(JSDynamicObject obj, Object key, boolean isStrict, JSClassProfile classProfile) static List<com.oracle.truffle.api.strings.TruffleString> enumerableOwnNames(JSDynamicObject thisObj) 7.3.21 EnumerableOwnNames (O).protected static String[]filterEnumerableNames(JSDynamicObject target, Iterable<Object> ownKeys, JSClass jsclass) static Objectget(JSDynamicObject obj, long index) static Objectget(JSDynamicObject obj, long index, JSClassProfile jsclassProfile) static Objectget(JSDynamicObject obj, Object key) static Objectget(JSDynamicObject obj, Object key, JSClassProfile jsclassProfile) static ScriptArraygetArray(JSDynamicObject obj) com.oracle.truffle.api.strings.TruffleStringReturns builtinTag as per Object.prototype.toString().static com.oracle.truffle.api.strings.TruffleStringThe property [[Class]] of the object.getIterator(com.oracle.truffle.api.interop.InteropLibrary self, JSInteropGetIteratorNode getIteratorNode) static JSClassstatic JSContextfinal Class<? extends com.oracle.truffle.api.TruffleLanguage<?>> getMembers(boolean internal) static ObjectgetMethod(JSDynamicObject obj, Object name) static ObjectgetMethod(JSDynamicObject obj, Object receiver, Object name) static ObjectgetOrDefault(JSDynamicObject obj, long index, Object receiver, Object defaultValue) static ObjectgetOrDefault(JSDynamicObject obj, long index, Object receiver, Object defaultValue, JSClassProfile jsclassProfile, com.oracle.truffle.api.nodes.Node encapsulatingNode) static ObjectgetOrDefault(JSDynamicObject obj, Object key, Object receiver, Object defaultValue) static ObjectgetOrDefault(JSDynamicObject obj, Object key, Object receiver, Object defaultValue, JSClassProfile jsclassProfile, com.oracle.truffle.api.nodes.Node encapsulatingNode) static PropertyDescriptorgetOwnProperty(JSDynamicObject obj, Object key) static PropertyDescriptorgetOwnProperty(JSDynamicObject obj, Object key, JSClassProfile classProfile) static JSDynamicObjectstatic JSDynamicObjectgetPrototype(JSDynamicObject obj, JSClassProfile jsclassProfile) static ReadElementNodestatic WriteElementNodestatic ObjectgetWithReceiver(JSDynamicObject obj, Object key, Object receiver, com.oracle.truffle.api.nodes.Node encapsulatingNode) static booleanbooleanhasIterator(com.oracle.truffle.api.interop.InteropLibrary self, JSInteropGetIteratorNode getIteratorNode) final booleanfinal booleanhasMemberReadSideEffects(String key, KeyInfoNode keyInfo) final booleanfinal booleanhasMemberWriteSideEffects(String key, KeyInfoNode keyInfo) static booleanhasOwnProperty(JSDynamicObject obj, long index) static booleanhasOwnProperty(JSDynamicObject obj, long index, JSClassProfile classProfile) static booleanhasOwnProperty(JSDynamicObject obj, Object key) static booleanhasOwnProperty(JSDynamicObject obj, Object key, JSClassProfile classProfile) static booleanhasProperty(JSDynamicObject obj, long index) static booleanhasProperty(JSDynamicObject obj, long index, JSClassProfile classProfile) static booleanhasProperty(JSDynamicObject obj, Object key) static booleanhasProperty(JSDynamicObject obj, Object key, JSClassProfile classProfile) final ObjectinvokeMember(String id, Object[] args, com.oracle.truffle.api.interop.InteropLibrary self, JSInteropInvokeNode callNode, com.oracle.truffle.api.strings.TruffleString.FromJavaStringNode fromJavaString, ExportValueNode exportNode) static booleanstatic booleanisExtensible(JSDynamicObject obj, JSClassProfile classProfile) static booleanisJSObject(Object object) Returns whether object is a proper JavaScript Object.final booleanisMemberInsertable(String key, KeyInfoNode keyInfo) final booleanisMemberInvocable(String key, KeyInfoNode keyInfo) final booleanisMemberModifiable(String key, KeyInfoNode keyInfo) final booleanisMemberReadable(String key, KeyInfoNode keyInfo) final booleanisMemberRemovable(String key, KeyInfoNode keyInfo) static JavaScriptLanguagelanguage(com.oracle.truffle.api.interop.InteropLibrary node) static ObjectES2018 7.1.1.1 OrdinaryToPrimitive.[[OwnPropertyKeys]].ownPropertyKeys(JSDynamicObject obj, JSClassProfile classProfile) final ObjectreadMember(String key, com.oracle.truffle.api.interop.InteropLibrary self, ReadElementNode readNode, boolean bindMemberFunctions, com.oracle.truffle.api.strings.TruffleString.FromJavaStringNode fromJavaString, ExportValueNode exportNode) final voidremoveMember(String key, com.oracle.truffle.api.strings.TruffleString.FromJavaStringNode fromJavaString) static booleanset(JSDynamicObject obj, long index, Object value) static booleanset(JSDynamicObject obj, long index, Object value, boolean isStrict, com.oracle.truffle.api.nodes.Node encapsulatingNode) static booleanset(JSDynamicObject obj, Object key, Object value) static booleanset(JSDynamicObject obj, Object key, Object value, boolean isStrict, com.oracle.truffle.api.nodes.Node encapsulatingNode) static voidsetArray(JSDynamicObject obj, ScriptArray array) static booleansetPrototype(JSDynamicObject obj, JSDynamicObject newPrototype) static booleansetPrototype(JSDynamicObject obj, JSDynamicObject newPrototype, JSClassProfile jsclassProfile) static booleansetWithReceiver(JSDynamicObject obj, long index, Object value, Object receiver, boolean isStrict, JSClassProfile classProfile, com.oracle.truffle.api.nodes.Node encapsulatingNode) static booleansetWithReceiver(JSDynamicObject obj, Object key, Object value, Object receiver, boolean isStrict, JSClassProfile classProfile, com.oracle.truffle.api.nodes.Node encapsulatingNode) [[Set]] with a receiver different than the default.final ObjecttoDisplayString(boolean allowSideEffects) static Objectstatic ObjecttoPrimitive(JSDynamicObject obj, JSToPrimitiveNode.Hint hint) ES2015 7.1.1 ToPrimitive in case an Object is passed.final voidwriteMember(String key, Object value, com.oracle.truffle.api.interop.InteropLibrary self, KeyInfoNode keyInfo, ImportValueNode castValueNode, WriteElementNode writeNode, com.oracle.truffle.api.strings.TruffleString.FromJavaStringNode fromJavaString) Methods inherited from class com.oracle.truffle.js.runtime.objects.JSDynamicObject
defaultToString, defineOwnProperty, delete, delete, getClassName, getDynamicType, getHelper, getHelper, getJSClass, getJSContext, getJSSharedData, getMethodHelper, getObjectFlags, getOrDefault, getOrNull, getOwnHelper, getOwnHelper, getOwnProperty, getOwnPropertyKeys, getPropertyArray, getPropertyFlags, getPrototypeOf, getValue, getValue, hasOnlyShapeProperties, hasOwnProperty, hasOwnProperty, hasProperty, hasProperty, identityHashCode, isExtensible, isJSDynamicObject, ownPropertyKeys, preventExtensions, set, set, setIntegrityLevel, setJSClass, setObjectFlags, setPropertyFlags, setPrototypeOf, testIntegrityLevel, testProperties, toDisplayStringImpl, updatePropertyFlagsMethods inherited from class com.oracle.truffle.api.object.DynamicObject
clone, getShape
-
Field Details
-
CONSTRUCTOR
public static final com.oracle.truffle.api.strings.TruffleString CONSTRUCTOR -
PROTOTYPE
public static final com.oracle.truffle.api.strings.TruffleString PROTOTYPE -
PROTO
public static final com.oracle.truffle.api.strings.TruffleString PROTO -
GET_PROTO_NAME
public static final com.oracle.truffle.api.strings.TruffleString GET_PROTO_NAME -
SET_PROTO_NAME
public static final com.oracle.truffle.api.strings.TruffleString SET_PROTO_NAME -
HIDDEN_PROTO
public static final com.oracle.truffle.api.object.HiddenKey HIDDEN_PROTO -
NO_SUCH_PROPERTY_NAME
public static final com.oracle.truffle.api.strings.TruffleString NO_SUCH_PROPERTY_NAME -
NO_SUCH_METHOD_NAME
public static final com.oracle.truffle.api.strings.TruffleString NO_SUCH_METHOD_NAME -
EMPTY_STRING_ARRAY
-
-
Constructor Details
-
JSObject
-
-
Method Details
-
copyWithoutProperties
-
isJSObject
Returns whether object is a proper JavaScript Object. -
hasMembers
public final boolean hasMembers() -
getMembers
-
filterEnumerableNames
protected static String[] filterEnumerableNames(JSDynamicObject target, Iterable<Object> ownKeys, JSClass jsclass) -
language
-
readMember
public final Object readMember(String key, com.oracle.truffle.api.interop.InteropLibrary self, ReadElementNode readNode, boolean bindMemberFunctions, com.oracle.truffle.api.strings.TruffleString.FromJavaStringNode fromJavaString, ExportValueNode exportNode) throws com.oracle.truffle.api.interop.UnknownIdentifierException - Throws:
com.oracle.truffle.api.interop.UnknownIdentifierException
-
isMemberReadable
-
writeMember
public final void writeMember(String key, Object value, com.oracle.truffle.api.interop.InteropLibrary self, KeyInfoNode keyInfo, ImportValueNode castValueNode, WriteElementNode writeNode, com.oracle.truffle.api.strings.TruffleString.FromJavaStringNode fromJavaString) throws com.oracle.truffle.api.interop.UnknownIdentifierException, com.oracle.truffle.api.interop.UnsupportedMessageException - Throws:
com.oracle.truffle.api.interop.UnknownIdentifierExceptioncom.oracle.truffle.api.interop.UnsupportedMessageException
-
isMemberModifiable
-
isMemberInsertable
-
removeMember
public final void removeMember(String key, com.oracle.truffle.api.strings.TruffleString.FromJavaStringNode fromJavaString) throws com.oracle.truffle.api.interop.UnsupportedMessageException - Throws:
com.oracle.truffle.api.interop.UnsupportedMessageException
-
isMemberRemovable
-
invokeMember
public final Object invokeMember(String id, Object[] args, com.oracle.truffle.api.interop.InteropLibrary self, JSInteropInvokeNode callNode, com.oracle.truffle.api.strings.TruffleString.FromJavaStringNode fromJavaString, ExportValueNode exportNode) throws com.oracle.truffle.api.interop.UnsupportedMessageException, com.oracle.truffle.api.interop.UnknownIdentifierException - Throws:
com.oracle.truffle.api.interop.UnsupportedMessageExceptioncom.oracle.truffle.api.interop.UnknownIdentifierException
-
isMemberInvocable
-
hasMemberReadSideEffects
-
hasMemberWriteSideEffects
-
hasIterator
public boolean hasIterator(com.oracle.truffle.api.interop.InteropLibrary self, JSInteropGetIteratorNode getIteratorNode) -
getIterator
public Object getIterator(com.oracle.truffle.api.interop.InteropLibrary self, JSInteropGetIteratorNode getIteratorNode) throws com.oracle.truffle.api.interop.UnsupportedMessageException - Throws:
com.oracle.truffle.api.interop.UnsupportedMessageException
-
hasLanguage
public final boolean hasLanguage() -
getLanguage
-
toDisplayString
-
getUncachedRead
-
getUncachedWrite
-
getJSClass
-
getPrototype
-
getPrototype
-
setPrototype
-
setPrototype
public static boolean setPrototype(JSDynamicObject obj, JSDynamicObject newPrototype, JSClassProfile jsclassProfile) -
get
-
get
-
getMethod
-
getMethod
-
set
-
set
-
set
public static boolean set(JSDynamicObject obj, long index, Object value, boolean isStrict, com.oracle.truffle.api.nodes.Node encapsulatingNode) -
set
public static boolean set(JSDynamicObject obj, Object key, Object value, boolean isStrict, com.oracle.truffle.api.nodes.Node encapsulatingNode) -
setWithReceiver
public static boolean setWithReceiver(JSDynamicObject obj, Object key, Object value, Object receiver, boolean isStrict, JSClassProfile classProfile, com.oracle.truffle.api.nodes.Node encapsulatingNode) [[Set]] with a receiver different than the default. -
setWithReceiver
public static boolean setWithReceiver(JSDynamicObject obj, long index, Object value, Object receiver, boolean isStrict, JSClassProfile classProfile, com.oracle.truffle.api.nodes.Node encapsulatingNode) -
delete
-
delete
-
delete
public static boolean delete(JSDynamicObject obj, long index, boolean isStrict, JSClassProfile classProfile) -
delete
-
delete
-
delete
public static boolean delete(JSDynamicObject obj, Object key, boolean isStrict, JSClassProfile classProfile) -
hasOwnProperty
-
hasOwnProperty
-
hasOwnProperty
-
hasOwnProperty
-
hasProperty
-
hasProperty
-
hasProperty
-
hasProperty
-
getOwnProperty
-
getOwnProperty
public static PropertyDescriptor getOwnProperty(JSDynamicObject obj, Object key, JSClassProfile classProfile) -
ownPropertyKeys
[[OwnPropertyKeys]]. The returned keys are instanceof (String, Symbol). -
ownPropertyKeys
-
enumerableOwnNames
public static List<com.oracle.truffle.api.strings.TruffleString> enumerableOwnNames(JSDynamicObject thisObj) 7.3.21 EnumerableOwnNames (O). -
defineOwnProperty
-
defineOwnProperty
public static boolean defineOwnProperty(JSDynamicObject obj, Object key, PropertyDescriptor desc, boolean doThrow) -
get
-
get
-
getOrDefault
public static Object getOrDefault(JSDynamicObject obj, Object key, Object receiver, Object defaultValue, JSClassProfile jsclassProfile, com.oracle.truffle.api.nodes.Node encapsulatingNode) -
getOrDefault
public static Object getOrDefault(JSDynamicObject obj, long index, Object receiver, Object defaultValue, JSClassProfile jsclassProfile, com.oracle.truffle.api.nodes.Node encapsulatingNode) -
getOrDefault
public static Object getOrDefault(JSDynamicObject obj, Object key, Object receiver, Object defaultValue) -
getOrDefault
public static Object getOrDefault(JSDynamicObject obj, long index, Object receiver, Object defaultValue) -
getWithReceiver
public static Object getWithReceiver(JSDynamicObject obj, Object key, Object receiver, com.oracle.truffle.api.nodes.Node encapsulatingNode) -
defaultToString
-
getBuiltinToStringTag
public com.oracle.truffle.api.strings.TruffleString getBuiltinToStringTag()Returns builtinTag as per Object.prototype.toString(). By default returns "Object".- Specified by:
getBuiltinToStringTagin classJSDynamicObject- Returns:
- built-in toStringTag
-
toPrimitive
ES2015 7.1.1 ToPrimitive in case an Object is passed. -
toPrimitive
-
ordinaryToPrimitive
ES2018 7.1.1.1 OrdinaryToPrimitive. -
isExtensible
-
isExtensible
-
getClassName
The property [[Class]] of the object. This is the second part of what Object.prototype.toString.call(myObj) returns, e.g. "[object Array]".- Returns:
- the internal property [[Class]] of the object.
-
getArray
-
setArray
-
hasArray
-
getJSContext
-