зеркало из https://github.com/mozilla/gecko-dev.git
Bug 857576 - Make sure isOwnProperty() method of the input typeset's single typeobject's property typeset is run before main body of IonBuilder::jsop_getprop method. r=bhackett
This commit is contained in:
Родитель
50fef6121f
Коммит
211e04645b
|
@ -3635,7 +3635,9 @@ class ICGetIntrinsic_Constant : public ICStub
|
||||||
{}
|
{}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static inline ICGetIntrinsic_Constant *New(ICStubSpace *space, IonCode *code, HandleValue value) {
|
static inline ICGetIntrinsic_Constant *New(ICStubSpace *space, IonCode *code,
|
||||||
|
HandleValue value)
|
||||||
|
{
|
||||||
if (!code)
|
if (!code)
|
||||||
return NULL;
|
return NULL;
|
||||||
return space->allocate<ICGetIntrinsic_Constant>(code, value);
|
return space->allocate<ICGetIntrinsic_Constant>(code, value);
|
||||||
|
|
|
@ -6652,6 +6652,11 @@ IonBuilder::jsop_getprop(HandlePropertyName name)
|
||||||
{
|
{
|
||||||
RootedId id(cx, NameToId(name));
|
RootedId id(cx, NameToId(name));
|
||||||
|
|
||||||
|
// GetDefiniteSlot may cause type information to shift, and it's done inside
|
||||||
|
// getPropTryDefiniteSlot. Do it here first to ensure that all type info changes
|
||||||
|
// occur before handling the op.
|
||||||
|
GetDefiniteSlot(cx, oracle->unaryTypes(script(), pc).inTypes, name);
|
||||||
|
|
||||||
RootedScript scriptRoot(cx, script());
|
RootedScript scriptRoot(cx, script());
|
||||||
types::StackTypeSet *barrier = oracle->propertyReadBarrier(scriptRoot, pc);
|
types::StackTypeSet *barrier = oracle->propertyReadBarrier(scriptRoot, pc);
|
||||||
types::StackTypeSet *types = oracle->propertyRead(script(), pc);
|
types::StackTypeSet *types = oracle->propertyRead(script(), pc);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче