public abstract class JSClass extends Object
Shape.getDynamicType().
The interface is inspired by ECMAScript internal methods.
Parameter order: JSDynamicObject receiver[, the rest...].| Type | Property and Description |
|---|---|
abstract boolean |
usesOrdinaryGetOwn |
| Modifier | Constructor and Description |
|---|---|
protected |
JSClass() |
| Modifier and Type | Method and Description |
|---|---|
com.oracle.truffle.api.strings.TruffleString |
defaultToString(JSDynamicObject object)
Follows 19.1.3.6 Object.prototype.toString(), basically: "[object " + [[Symbol.toStringTag]]
+ "]" or typically "[object Object]" (for non built-in types) if [[Symbol.toStringTag]] is
not present.
|
abstract boolean |
defineOwnProperty(JSDynamicObject thisObj,
Object key,
PropertyDescriptor value,
boolean doThrow)
9.1.6 [[DefineOwnProperty]] (P, Desc).
|
abstract boolean |
delete(JSDynamicObject thisObj,
long index,
boolean isStrict) |
abstract boolean |
delete(JSDynamicObject thisObj,
Object key,
boolean isStrict)
9.1.10 [[Delete]] (P).
|
static List<Object> |
filterOwnPropertyKeys(List<Object> ownPropertyKeys,
boolean strings,
boolean symbols) |
protected com.oracle.truffle.api.strings.TruffleString |
formatToString(com.oracle.truffle.api.strings.TruffleString object)
Formats
JSClass.defaultToString(JSDynamicObject), by default returns "[object ...]". |
Object |
get(JSDynamicObject thisObj,
long index) |
Object |
get(JSDynamicObject thisObj,
Object key)
9.1.8 [[Get]] (P, Receiver).
|
com.oracle.truffle.api.strings.TruffleString |
getBuiltinToStringTag(JSDynamicObject object)
Returns builtinTag from step 14 of ES6+ 19.1.3.6.
|
abstract com.oracle.truffle.api.strings.TruffleString |
getClassName(JSDynamicObject object)
The [[Class]] internal property.
|
abstract Object |
getHelper(JSDynamicObject store,
Object thisObj,
long index,
com.oracle.truffle.api.nodes.Node encapsulatingNode) |
abstract Object |
getHelper(JSDynamicObject store,
Object thisObj,
Object key,
com.oracle.truffle.api.nodes.Node encapsulatingNode) |
JSDynamicObject |
getIntrinsicDefaultProto(JSRealm realm)
Allows invokevirtual of this method instead of invokeinterface.
|
abstract Object |
getMethodHelper(JSDynamicObject store,
Object thisObj,
Object key,
com.oracle.truffle.api.nodes.Node encapsulatingNode) |
abstract Object |
getOwnHelper(JSDynamicObject store,
Object thisObj,
long index,
com.oracle.truffle.api.nodes.Node encapsulatingNode) |
abstract Object |
getOwnHelper(JSDynamicObject store,
Object thisObj,
Object key,
com.oracle.truffle.api.nodes.Node encapsulatingNode) |
abstract PropertyDescriptor |
getOwnProperty(JSDynamicObject thisObj,
Object key)
9.1.5 [[GetOwnProperty]] (P).
|
abstract List<Object> |
getOwnPropertyKeys(JSDynamicObject obj,
boolean strings,
boolean symbols)
GetOwnPropertyKeys (O, type).
|
abstract JSDynamicObject |
getPrototypeOf(JSDynamicObject thisObj)
9.1.1 [[GetPrototypeOf]] ().
|
protected com.oracle.truffle.api.strings.TruffleString |
getToStringTag(JSDynamicObject object) |
abstract boolean |
hasOnlyShapeProperties(JSDynamicObject obj)
If true,
JSClass.ownPropertyKeys(com.oracle.truffle.js.runtime.objects.JSDynamicObject) and JSShape.getProperties(com.oracle.truffle.api.object.Shape) enumerate the same keys. |
abstract boolean |
hasOwnProperty(JSDynamicObject thisObj,
long index) |
abstract boolean |
hasOwnProperty(JSDynamicObject thisObj,
Object key) |
abstract boolean |
hasProperty(JSDynamicObject thisObj,
long index) |
abstract boolean |
hasProperty(JSDynamicObject thisObj,
Object key)
9.1.7 [[HasProperty]] (P).
|
abstract boolean |
isExtensible(JSDynamicObject thisObj)
9.1.3 [[IsExtensible]] ().
|
boolean |
isInstance(JSDynamicObject object) |
static boolean |
isInstance(JSDynamicObject object,
JSClass jsclass) |
boolean |
isInstance(Object object) |
static boolean |
isInstance(Object object,
JSClass jsclass) |
com.oracle.truffle.api.object.Shape |
makeInitialShape(JSContext context,
JSDynamicObject prototype) |
List<Object> |
ownPropertyKeys(JSDynamicObject obj)
9.1.12 [[OwnPropertyKeys]]().
|
abstract boolean |
preventExtensions(JSDynamicObject thisObj,
boolean doThrow)
9.1.4 [[PreventExtensions]] ().
|
abstract boolean |
set(JSDynamicObject thisObj,
long index,
Object value,
Object receiver,
boolean isStrict,
com.oracle.truffle.api.nodes.Node encapsulatingNode) |
abstract boolean |
set(JSDynamicObject thisObj,
Object key,
Object value,
Object receiver,
boolean isStrict,
com.oracle.truffle.api.nodes.Node encapsulatingNode)
9.1.9 [[Set]] (P, V, Receiver).
|
boolean |
setIntegrityLevel(JSDynamicObject obj,
boolean freeze,
boolean doThrow)
ES2015 7.3.14 SetIntegrityLevel(O, level).
|
abstract boolean |
setPrototypeOf(JSDynamicObject thisObj,
JSDynamicObject newPrototype)
9.1.2 [[SetPrototypeOf]] (V).
|
boolean |
testIntegrityLevel(JSDynamicObject obj,
boolean frozen)
ES2015 7.3.15 TestIntegrityLevel(O, level).
|
protected boolean |
testIntegrityLevelDefault(JSDynamicObject obj,
boolean frozen) |
abstract com.oracle.truffle.api.strings.TruffleString |
toDisplayStringImpl(JSDynamicObject object,
boolean allowSideEffects,
ToDisplayStringFormat format,
int depth)
A more informative toString variant, mainly used for error messages.
|
abstract String |
toString() |
abstract boolean |
usesOrdinaryGetOwnProperty() |
abstract boolean |
usesOrdinaryIsExtensible() |
public abstract JSDynamicObject getPrototypeOf(JSDynamicObject thisObj)
public abstract boolean setPrototypeOf(JSDynamicObject thisObj, JSDynamicObject newPrototype)
public abstract boolean isExtensible(JSDynamicObject thisObj)
public abstract boolean preventExtensions(JSDynamicObject thisObj, boolean doThrow)
public abstract PropertyDescriptor getOwnProperty(JSDynamicObject thisObj, Object key)
public abstract boolean defineOwnProperty(JSDynamicObject thisObj, Object key, PropertyDescriptor value, boolean doThrow)
public abstract boolean hasProperty(JSDynamicObject thisObj, Object key)
public abstract boolean hasProperty(JSDynamicObject thisObj, long index)
public abstract boolean hasOwnProperty(JSDynamicObject thisObj, Object key)
public abstract boolean hasOwnProperty(JSDynamicObject thisObj, long index)
public final Object get(JSDynamicObject thisObj, Object key)
public Object get(JSDynamicObject thisObj, long index)
public abstract Object getHelper(JSDynamicObject store, Object thisObj, Object key, com.oracle.truffle.api.nodes.Node encapsulatingNode)
public abstract Object getHelper(JSDynamicObject store, Object thisObj, long index, com.oracle.truffle.api.nodes.Node encapsulatingNode)
public abstract Object getOwnHelper(JSDynamicObject store, Object thisObj, Object key, com.oracle.truffle.api.nodes.Node encapsulatingNode)
public abstract Object getOwnHelper(JSDynamicObject store, Object thisObj, long index, com.oracle.truffle.api.nodes.Node encapsulatingNode)
public abstract Object getMethodHelper(JSDynamicObject store, Object thisObj, Object key, com.oracle.truffle.api.nodes.Node encapsulatingNode)
public abstract boolean set(JSDynamicObject thisObj, Object key, Object value, Object receiver, boolean isStrict, com.oracle.truffle.api.nodes.Node encapsulatingNode)
public abstract boolean set(JSDynamicObject thisObj, long index, Object value, Object receiver, boolean isStrict, com.oracle.truffle.api.nodes.Node encapsulatingNode)
public abstract boolean delete(JSDynamicObject thisObj, Object key, boolean isStrict)
public abstract boolean delete(JSDynamicObject thisObj, long index, boolean isStrict)
public final List<Object> ownPropertyKeys(JSDynamicObject obj)
public abstract List<Object> getOwnPropertyKeys(JSDynamicObject obj, boolean strings, boolean symbols)
public static List<Object> filterOwnPropertyKeys(List<Object> ownPropertyKeys, boolean strings, boolean symbols)
public abstract boolean hasOnlyShapeProperties(JSDynamicObject obj)
JSClass.ownPropertyKeys(com.oracle.truffle.js.runtime.objects.JSDynamicObject) and JSShape.getProperties(com.oracle.truffle.api.object.Shape) enumerate the same keys.public abstract com.oracle.truffle.api.strings.TruffleString getClassName(JSDynamicObject object)
object - object to be usedpublic com.oracle.truffle.api.strings.TruffleString defaultToString(JSDynamicObject object)
For ES5, if follows 15.2.4.2 Object.prototype.toString(), basically: "[object " + [[Class]] + "]".
protected com.oracle.truffle.api.strings.TruffleString getToStringTag(JSDynamicObject object)
public com.oracle.truffle.api.strings.TruffleString getBuiltinToStringTag(JSDynamicObject object)
object - object to be usedJSClass.defaultToString(JSDynamicObject)protected com.oracle.truffle.api.strings.TruffleString formatToString(com.oracle.truffle.api.strings.TruffleString object)
JSClass.defaultToString(JSDynamicObject), by default returns "[object ...]".object - object to be usedpublic abstract com.oracle.truffle.api.strings.TruffleString toDisplayStringImpl(JSDynamicObject object, boolean allowSideEffects, ToDisplayStringFormat format, int depth)
format - formatting parametersdepth - current nesting depthpublic final boolean isInstance(JSDynamicObject object)
public final boolean isInstance(Object object)
public static boolean isInstance(JSDynamicObject object, JSClass jsclass)
public boolean testIntegrityLevel(JSDynamicObject obj, boolean frozen)
protected final boolean testIntegrityLevelDefault(JSDynamicObject obj, boolean frozen)
public boolean setIntegrityLevel(JSDynamicObject obj, boolean freeze, boolean doThrow)
public com.oracle.truffle.api.object.Shape makeInitialShape(JSContext context, JSDynamicObject prototype)
public JSDynamicObject getIntrinsicDefaultProto(JSRealm realm)
PrototypeSupplier.public abstract boolean usesOrdinaryGetOwnProperty()
public abstract boolean usesOrdinaryIsExtensible()