in lib/VM/JSLib/Object.cpp [34:280]
Handle<JSObject> createObjectConstructor(Runtime &runtime) {
auto objectPrototype = Handle<JSObject>::vmcast(&runtime.objectPrototype);
auto cons = defineSystemConstructor<JSObject>(
runtime,
Predefined::getSymbolID(Predefined::Object),
objectConstructor,
Handle<JSObject>::vmcast(&runtime.objectPrototype),
1,
CellKind::JSObjectKind);
void *ctx = nullptr;
// Object.prototype.xxx methods.
defineMethod(
runtime,
objectPrototype,
Predefined::getSymbolID(Predefined::toString),
ctx,
objectPrototypeToString,
0);
defineMethod(
runtime,
objectPrototype,
Predefined::getSymbolID(Predefined::toLocaleString),
ctx,
objectPrototypeToLocaleString,
0);
defineMethod(
runtime,
objectPrototype,
Predefined::getSymbolID(Predefined::valueOf),
ctx,
objectPrototypeValueOf,
0);
defineMethod(
runtime,
objectPrototype,
Predefined::getSymbolID(Predefined::hasOwnProperty),
ctx,
objectPrototypeHasOwnProperty,
1);
defineMethod(
runtime,
objectPrototype,
Predefined::getSymbolID(Predefined::isPrototypeOf),
ctx,
objectPrototypeIsPrototypeOf,
1);
defineMethod(
runtime,
objectPrototype,
Predefined::getSymbolID(Predefined::propertyIsEnumerable),
ctx,
objectPrototypePropertyIsEnumerable,
1);
defineAccessor(
runtime,
objectPrototype,
Predefined::getSymbolID(Predefined::underscore_proto),
ctx,
objectPrototypeProto_getter,
objectPrototypeProto_setter,
false,
true);
defineMethod(
runtime,
objectPrototype,
Predefined::getSymbolID(Predefined::__defineGetter__),
ctx,
objectPrototypeDefineGetter,
2);
defineMethod(
runtime,
objectPrototype,
Predefined::getSymbolID(Predefined::__defineSetter__),
ctx,
objectPrototypeDefineSetter,
2);
defineMethod(
runtime,
objectPrototype,
Predefined::getSymbolID(Predefined::__lookupGetter__),
ctx,
objectPrototypeLookupGetter,
1);
defineMethod(
runtime,
objectPrototype,
Predefined::getSymbolID(Predefined::__lookupSetter__),
ctx,
objectPrototypeLookupSetter,
1);
// Object.xxx() methods.
defineMethod(
runtime,
cons,
Predefined::getSymbolID(Predefined::getPrototypeOf),
ctx,
objectGetPrototypeOf,
1);
defineMethod(
runtime,
cons,
Predefined::getSymbolID(Predefined::getOwnPropertyDescriptor),
ctx,
objectGetOwnPropertyDescriptor,
2);
defineMethod(
runtime,
cons,
Predefined::getSymbolID(Predefined::getOwnPropertyDescriptors),
ctx,
objectGetOwnPropertyDescriptors,
1);
defineMethod(
runtime,
cons,
Predefined::getSymbolID(Predefined::getOwnPropertyNames),
ctx,
objectGetOwnPropertyNames,
1);
defineMethod(
runtime,
cons,
Predefined::getSymbolID(Predefined::getOwnPropertySymbols),
ctx,
objectGetOwnPropertySymbols,
1);
defineMethod(
runtime,
cons,
Predefined::getSymbolID(Predefined::hasOwn),
ctx,
objectHasOwn,
2);
defineMethod(
runtime,
cons,
Predefined::getSymbolID(Predefined::seal),
ctx,
objectSeal,
1);
defineMethod(
runtime,
cons,
Predefined::getSymbolID(Predefined::freeze),
ctx,
objectFreeze,
1);
defineMethod(
runtime,
cons,
Predefined::getSymbolID(Predefined::fromEntries),
ctx,
objectFromEntries,
1);
defineMethod(
runtime,
cons,
Predefined::getSymbolID(Predefined::preventExtensions),
ctx,
objectPreventExtensions,
1);
defineMethod(
runtime, cons, Predefined::getSymbolID(Predefined::is), ctx, objectIs, 2);
defineMethod(
runtime,
cons,
Predefined::getSymbolID(Predefined::isSealed),
ctx,
objectIsSealed,
1);
defineMethod(
runtime,
cons,
Predefined::getSymbolID(Predefined::isFrozen),
ctx,
objectIsFrozen,
1);
defineMethod(
runtime,
cons,
Predefined::getSymbolID(Predefined::isExtensible),
ctx,
objectIsExtensible,
1);
defineMethod(
runtime,
cons,
Predefined::getSymbolID(Predefined::keys),
ctx,
objectKeys,
1);
defineMethod(
runtime,
cons,
Predefined::getSymbolID(Predefined::values),
ctx,
objectValues,
1);
defineMethod(
runtime,
cons,
Predefined::getSymbolID(Predefined::entries),
ctx,
objectEntries,
1);
defineMethod(
runtime,
cons,
Predefined::getSymbolID(Predefined::create),
ctx,
objectCreate,
2);
defineMethod(
runtime,
cons,
Predefined::getSymbolID(Predefined::defineProperty),
ctx,
objectDefineProperty,
3);
defineMethod(
runtime,
cons,
Predefined::getSymbolID(Predefined::defineProperties),
ctx,
objectDefineProperties,
2);
defineMethod(
runtime,
cons,
Predefined::getSymbolID(Predefined::assign),
ctx,
objectAssign,
2);
defineMethod(
runtime,
cons,
Predefined::getSymbolID(Predefined::setPrototypeOf),
ctx,
objectSetPrototypeOf,
2);
return cons;
}