public abstract class JSClass
extends com.oracle.truffle.api.object.ObjectType
Implementation notes: - keep parameter order consistent: JSObject receiver[, the rest...]. - keep interface clean, avoid redundant methods, maximize consistency with JSObject and ECMAScript
| Type | Property and Description |
|---|---|
abstract boolean |
usesOrdinaryGetOwn |
| Modifier and Type | Field and Description |
|---|---|
protected static String[] |
EMPTY_STRING_ARRAY |
| Modifier | Constructor and Description |
|---|---|
protected |
JSClass() |
| Modifier and Type | Method and Description |
|---|---|
String |
defaultToString(com.oracle.truffle.api.object.DynamicObject 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(com.oracle.truffle.api.object.DynamicObject thisObj,
Object key,
PropertyDescriptor value,
boolean doThrow)
9.1.6 [[DefineOwnProperty]] (P, Desc).
|
abstract boolean |
delete(com.oracle.truffle.api.object.DynamicObject thisObj,
long index,
boolean isStrict) |
abstract boolean |
delete(com.oracle.truffle.api.object.DynamicObject thisObj,
Object key,
boolean isStrict)
9.1.10 [[Delete]] (P).
|
static List<Object> |
filterOwnPropertyKeys(List<Object> ownPropertyKeys,
boolean strings,
boolean symbols) |
protected String |
formatToString(String object)
Formats
JSClass.defaultToString(DynamicObject), by default returns "[object ...]". |
Object |
get(com.oracle.truffle.api.object.DynamicObject thisObj,
long index) |
Object |
get(com.oracle.truffle.api.object.DynamicObject thisObj,
Object key)
9.1.8 [[Get]] (P, Receiver).
|
String |
getBuiltinToStringTag(com.oracle.truffle.api.object.DynamicObject object)
Returns builtinTag from step 14 of ES6+ 19.1.3.6.
|
abstract String |
getClassName(com.oracle.truffle.api.object.DynamicObject object)
The [[Class]] internal property.
|
abstract Object |
getHelper(com.oracle.truffle.api.object.DynamicObject store,
Object thisObj,
long index,
com.oracle.truffle.api.nodes.Node encapsulatingNode) |
abstract Object |
getHelper(com.oracle.truffle.api.object.DynamicObject store,
Object thisObj,
Object key,
com.oracle.truffle.api.nodes.Node encapsulatingNode) |
abstract Object |
getMethodHelper(com.oracle.truffle.api.object.DynamicObject store,
Object thisObj,
Object key,
com.oracle.truffle.api.nodes.Node encapsulatingNode) |
abstract Object |
getOwnHelper(com.oracle.truffle.api.object.DynamicObject store,
Object thisObj,
long index,
com.oracle.truffle.api.nodes.Node encapsulatingNode) |
abstract Object |
getOwnHelper(com.oracle.truffle.api.object.DynamicObject store,
Object thisObj,
Object key,
com.oracle.truffle.api.nodes.Node encapsulatingNode) |
abstract PropertyDescriptor |
getOwnProperty(com.oracle.truffle.api.object.DynamicObject thisObj,
Object key)
9.1.5 [[GetOwnProperty]] (P).
|
abstract List<Object> |
getOwnPropertyKeys(com.oracle.truffle.api.object.DynamicObject obj,
boolean strings,
boolean symbols)
GetOwnPropertyKeys (O, type).
|
abstract com.oracle.truffle.api.object.DynamicObject |
getPrototypeOf(com.oracle.truffle.api.object.DynamicObject thisObj)
9.1.1 [[GetPrototypeOf]] ().
|
protected String |
getToStringTag(com.oracle.truffle.api.object.DynamicObject object) |
abstract boolean |
hasOnlyShapeProperties(com.oracle.truffle.api.object.DynamicObject obj)
If true,
JSClass.ownPropertyKeys(com.oracle.truffle.api.object.DynamicObject) and JSShape.getProperties(com.oracle.truffle.api.object.Shape) enumerate the same keys. |
abstract boolean |
hasOwnProperty(com.oracle.truffle.api.object.DynamicObject thisObj,
long index) |
abstract boolean |
hasOwnProperty(com.oracle.truffle.api.object.DynamicObject thisObj,
Object key) |
abstract boolean |
hasProperty(com.oracle.truffle.api.object.DynamicObject thisObj,
long index) |
abstract boolean |
hasProperty(com.oracle.truffle.api.object.DynamicObject thisObj,
Object key)
9.1.7 [[HasProperty]] (P).
|
abstract boolean |
isExtensible(com.oracle.truffle.api.object.DynamicObject thisObj)
9.1.3 [[IsExtensible]] ().
|
boolean |
isInstance(com.oracle.truffle.api.object.DynamicObject object) |
static boolean |
isInstance(com.oracle.truffle.api.object.DynamicObject object,
JSClass jsclass) |
boolean |
isInstance(Object object) |
static boolean |
isInstance(Object object,
JSClass jsclass) |
com.oracle.truffle.api.object.Shape |
makeInitialShape(JSContext context,
com.oracle.truffle.api.object.DynamicObject prototype) |
List<Object> |
ownPropertyKeys(com.oracle.truffle.api.object.DynamicObject obj)
9.1.12 [[OwnPropertyKeys]]().
|
abstract boolean |
preventExtensions(com.oracle.truffle.api.object.DynamicObject thisObj,
boolean doThrow)
9.1.4 [[PreventExtensions]] ().
|
abstract boolean |
set(com.oracle.truffle.api.object.DynamicObject thisObj,
long index,
Object value,
Object receiver,
boolean isStrict,
com.oracle.truffle.api.nodes.Node encapsulatingNode) |
abstract boolean |
set(com.oracle.truffle.api.object.DynamicObject 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(com.oracle.truffle.api.object.DynamicObject obj,
boolean freeze,
boolean doThrow)
ES2015 7.3.14 SetIntegrityLevel(O, level).
|
abstract boolean |
setPrototypeOf(com.oracle.truffle.api.object.DynamicObject thisObj,
com.oracle.truffle.api.object.DynamicObject newPrototype)
9.1.2 [[SetPrototypeOf]] (V).
|
boolean |
testIntegrityLevel(com.oracle.truffle.api.object.DynamicObject obj,
boolean frozen)
ES2015 7.3.15 TestIntegrityLevel(O, level).
|
protected boolean |
testIntegrityLevelDefault(com.oracle.truffle.api.object.DynamicObject obj,
boolean frozen) |
abstract String |
toDisplayStringImpl(com.oracle.truffle.api.object.DynamicObject object,
int depth,
boolean allowSideEffects,
JSContext context)
A more informative toString variant, mainly used for error messages.
|
abstract String |
toString() |
abstract boolean |
usesOrdinaryGetOwnProperty() |
abstract boolean |
usesOrdinaryIsExtensible() |
protected static final String[] EMPTY_STRING_ARRAY
public abstract com.oracle.truffle.api.object.DynamicObject getPrototypeOf(com.oracle.truffle.api.object.DynamicObject thisObj)
public abstract boolean setPrototypeOf(com.oracle.truffle.api.object.DynamicObject thisObj,
com.oracle.truffle.api.object.DynamicObject newPrototype)
public abstract boolean isExtensible(com.oracle.truffle.api.object.DynamicObject thisObj)
public abstract boolean preventExtensions(com.oracle.truffle.api.object.DynamicObject thisObj,
boolean doThrow)
public abstract PropertyDescriptor getOwnProperty(com.oracle.truffle.api.object.DynamicObject thisObj, Object key)
public abstract boolean defineOwnProperty(com.oracle.truffle.api.object.DynamicObject thisObj,
Object key,
PropertyDescriptor value,
boolean doThrow)
public abstract boolean hasProperty(com.oracle.truffle.api.object.DynamicObject thisObj,
Object key)
public abstract boolean hasProperty(com.oracle.truffle.api.object.DynamicObject thisObj,
long index)
public abstract boolean hasOwnProperty(com.oracle.truffle.api.object.DynamicObject thisObj,
Object key)
public abstract boolean hasOwnProperty(com.oracle.truffle.api.object.DynamicObject thisObj,
long index)
public final Object get(com.oracle.truffle.api.object.DynamicObject thisObj, Object key)
public Object get(com.oracle.truffle.api.object.DynamicObject thisObj, long index)
public abstract Object getHelper(com.oracle.truffle.api.object.DynamicObject store, Object thisObj, Object key, com.oracle.truffle.api.nodes.Node encapsulatingNode)
public abstract Object getHelper(com.oracle.truffle.api.object.DynamicObject store, Object thisObj, long index, com.oracle.truffle.api.nodes.Node encapsulatingNode)
public abstract Object getOwnHelper(com.oracle.truffle.api.object.DynamicObject store, Object thisObj, Object key, com.oracle.truffle.api.nodes.Node encapsulatingNode)
public abstract Object getOwnHelper(com.oracle.truffle.api.object.DynamicObject store, Object thisObj, long index, com.oracle.truffle.api.nodes.Node encapsulatingNode)
public abstract Object getMethodHelper(com.oracle.truffle.api.object.DynamicObject store, Object thisObj, Object key, com.oracle.truffle.api.nodes.Node encapsulatingNode)
public abstract boolean set(com.oracle.truffle.api.object.DynamicObject thisObj,
Object key,
Object value,
Object receiver,
boolean isStrict,
com.oracle.truffle.api.nodes.Node encapsulatingNode)
public abstract boolean set(com.oracle.truffle.api.object.DynamicObject thisObj,
long index,
Object value,
Object receiver,
boolean isStrict,
com.oracle.truffle.api.nodes.Node encapsulatingNode)
public abstract boolean delete(com.oracle.truffle.api.object.DynamicObject thisObj,
Object key,
boolean isStrict)
public abstract boolean delete(com.oracle.truffle.api.object.DynamicObject thisObj,
long index,
boolean isStrict)
public final List<Object> ownPropertyKeys(com.oracle.truffle.api.object.DynamicObject obj)
public abstract List<Object> getOwnPropertyKeys(com.oracle.truffle.api.object.DynamicObject obj, boolean strings, boolean symbols)
public static List<Object> filterOwnPropertyKeys(List<Object> ownPropertyKeys, boolean strings, boolean symbols)
public abstract boolean hasOnlyShapeProperties(com.oracle.truffle.api.object.DynamicObject obj)
JSClass.ownPropertyKeys(com.oracle.truffle.api.object.DynamicObject) and JSShape.getProperties(com.oracle.truffle.api.object.Shape) enumerate the same keys.public abstract String getClassName(com.oracle.truffle.api.object.DynamicObject object)
object - object to be usedpublic String defaultToString(com.oracle.truffle.api.object.DynamicObject object)
For ES5, if follows 15.2.4.2 Object.prototype.toString(), basically: "[object " + [[Class]] + "]".
protected String getToStringTag(com.oracle.truffle.api.object.DynamicObject object)
public String getBuiltinToStringTag(com.oracle.truffle.api.object.DynamicObject object)
object - object to be usedJSClass.defaultToString(DynamicObject)protected String formatToString(String object)
JSClass.defaultToString(DynamicObject), by default returns "[object ...]".object - object to be usedpublic abstract String toDisplayStringImpl(com.oracle.truffle.api.object.DynamicObject object, int depth, boolean allowSideEffects, JSContext context)
depth - allowed nesting depthcontext - the current language contextpublic final boolean isInstance(com.oracle.truffle.api.object.DynamicObject object)
public final boolean isInstance(Object object)
public static boolean isInstance(com.oracle.truffle.api.object.DynamicObject object,
JSClass jsclass)
public boolean testIntegrityLevel(com.oracle.truffle.api.object.DynamicObject obj,
boolean frozen)
protected final boolean testIntegrityLevelDefault(com.oracle.truffle.api.object.DynamicObject obj,
boolean frozen)
public boolean setIntegrityLevel(com.oracle.truffle.api.object.DynamicObject obj,
boolean freeze,
boolean doThrow)
public com.oracle.truffle.api.object.Shape makeInitialShape(JSContext context, com.oracle.truffle.api.object.DynamicObject prototype)
public abstract boolean usesOrdinaryGetOwnProperty()
public abstract boolean usesOrdinaryIsExtensible()