Bug 1165053 - Part 5: Add native SpeciesConstructor wrapper. r=lth

This commit is contained in:
Tooru Fujisawa 2015-12-20 19:15:09 +09:00
parent 705c8d59d3
commit 894fd72d42
3 changed files with 25 additions and 0 deletions

View File

@ -3851,3 +3851,24 @@ JSObject::maybeConstructorDisplayAtom() const
return nullptr;
return displayAtomFromObjectGroup(*group());
}
bool
js::SpeciesConstructor(JSContext* cx, HandleObject obj, HandleValue defaultCtor, MutableHandleValue pctor)
{
HandlePropertyName shName = cx->names().SpeciesConstructor;
RootedValue func(cx);
if (!GlobalObject::getSelfHostedFunction(cx, cx->global(), shName, shName, 2, &func))
return false;
InvokeArgs args(cx);
if (!args.init(2))
return false;
args.setCallee(func);
args.setThis(UndefinedValue());
args[0].setObject(*obj);
args[1].set(defaultCtor);
if (!Invoke(cx, args))
return false;
pctor.set(args.rval());
return true;
}

View File

@ -1336,6 +1336,9 @@ FreezeObject(JSContext* cx, HandleObject obj)
extern bool
TestIntegrityLevel(JSContext* cx, HandleObject obj, IntegrityLevel level, bool* resultp);
extern bool
SpeciesConstructor(JSContext* cx, HandleObject obj, HandleValue defaultCtor, MutableHandleValue pctor);
} /* namespace js */
#endif /* jsobj_h */

View File

@ -235,6 +235,7 @@
macro(shape, shape, "shape") \
macro(size, size, "size") \
macro(source, source, "source") \
macro(SpeciesConstructor, SpeciesConstructor, "SpeciesConstructor") \
macro(stack, stack, "stack") \
macro(star, star, "*") \
macro(starDefaultStar, starDefaultStar, "*default*") \