mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-03-01 05:48:26 +00:00
Fixing ':type' and default initializing.
This commit is contained in:
parent
5457c87da4
commit
18cd9dd151
@ -85,7 +85,7 @@ js2val setLength(JS2Metadata *meta, JS2Object *obj, uint32 newLength)
|
||||
Multiname *mn = new Multiname(meta->engine->length_StringAtom, meta->publicNamespace);
|
||||
DEFINE_ROOTKEEPER(rk, mn);
|
||||
LookupKind lookup(false, JS2VAL_NULL);
|
||||
defaultWriteProperty(meta, OBJECT_TO_JS2VAL(obj), meta->arrayClass, mn, &lookup, true, result);
|
||||
defaultWriteProperty(meta, OBJECT_TO_JS2VAL(obj), meta->arrayClass, mn, &lookup, true, result, false);
|
||||
}
|
||||
else {
|
||||
JS2Class *c = meta->objectType(obj);
|
||||
|
@ -633,7 +633,7 @@ namespace MetaData {
|
||||
LookupKind lookup(false, JS2VAL_NULL);
|
||||
Multiname *mn = new Multiname(name, meta->publicNamespace);
|
||||
DEFINE_ROOTKEEPER(rk, mn);
|
||||
return defaultWriteProperty(meta, base, limit, mn, &lookup, createIfMissing, newValue);
|
||||
return defaultWriteProperty(meta, base, limit, mn, &lookup, createIfMissing, newValue, false);
|
||||
}
|
||||
|
||||
bool defaultBracketRead(JS2Metadata *meta, js2val *base, JS2Class *limit, Multiname *multiname, Phase phase, js2val *rval)
|
||||
@ -642,12 +642,12 @@ namespace MetaData {
|
||||
return limit->read(meta, base, limit, multiname, &lookup, phase, rval);
|
||||
}
|
||||
|
||||
bool arrayWriteProperty(JS2Metadata *meta, js2val base, JS2Class *limit, Multiname *multiname, LookupKind *lookupKind, bool createIfMissing, js2val newValue)
|
||||
bool arrayWriteProperty(JS2Metadata *meta, js2val base, JS2Class *limit, Multiname *multiname, LookupKind *lookupKind, bool createIfMissing, js2val newValue, bool initFlag)
|
||||
{
|
||||
ASSERT(JS2VAL_IS_OBJECT(base));
|
||||
JS2Object *obj = JS2VAL_TO_OBJECT(base);
|
||||
|
||||
bool result = defaultWriteProperty(meta, base, limit, multiname, lookupKind, createIfMissing, newValue);
|
||||
bool result = defaultWriteProperty(meta, base, limit, multiname, lookupKind, createIfMissing, newValue, false);
|
||||
if (result && (multiname->nsList->size() == 1) && (multiname->nsList->back() == meta->publicNamespace)) {
|
||||
|
||||
const char16 *numEnd;
|
||||
@ -674,10 +674,10 @@ namespace MetaData {
|
||||
LookupKind lookup(false, JS2VAL_NULL);
|
||||
Multiname *mn = new Multiname(name, meta->publicNamespace);
|
||||
DEFINE_ROOTKEEPER(rk, mn);
|
||||
return arrayWriteProperty(meta, base, limit, mn, &lookup, createIfMissing, newValue);
|
||||
return arrayWriteProperty(meta, base, limit, mn, &lookup, createIfMissing, newValue, false);
|
||||
}
|
||||
|
||||
bool defaultWriteProperty(JS2Metadata *meta, js2val base, JS2Class *limit, Multiname *multiname, LookupKind *lookupKind, bool createIfMissing, js2val newValue)
|
||||
bool defaultWriteProperty(JS2Metadata *meta, js2val base, JS2Class *limit, Multiname *multiname, LookupKind *lookupKind, bool createIfMissing, js2val newValue, bool initFlag)
|
||||
{
|
||||
InstanceMember *mBase = meta->findBaseInstanceMember(limit, multiname, WriteAccess);
|
||||
if (mBase) {
|
||||
@ -721,7 +721,7 @@ namespace MetaData {
|
||||
case Member::ConstructorMethodMember:
|
||||
case Member::SetterMember:
|
||||
case Member::GetterMember:
|
||||
return meta->writeLocalMember(checked_cast<LocalMember *>(m), newValue, false);
|
||||
return meta->writeLocalMember(checked_cast<LocalMember *>(m), newValue, initFlag);
|
||||
case Member::InstanceVariableMember:
|
||||
case Member::InstanceMethodMember:
|
||||
case Member::InstanceGetterMember:
|
||||
@ -742,7 +742,7 @@ namespace MetaData {
|
||||
bool defaultBracketWrite(JS2Metadata *meta, js2val base, JS2Class *limit, Multiname *multiname, js2val newValue)
|
||||
{
|
||||
LookupKind lookup(false, JS2VAL_NULL);
|
||||
return limit->write(meta, base, limit, multiname, &lookup, true, newValue);
|
||||
return limit->write(meta, base, limit, multiname, &lookup, true, newValue, false);
|
||||
}
|
||||
|
||||
bool defaultDeleteProperty(JS2Metadata *meta, js2val base, JS2Class *limit, Multiname *multiname, LookupKind *lookupKind, bool *result)
|
||||
|
@ -516,7 +516,7 @@ namespace MetaData {
|
||||
// Set type to FUTURE_TYPE - it will be resolved during 'Setup'. The value is either FUTURE_VALUE
|
||||
// for 'const' - in which case the expression is compile time evaluated (or attempted) or set
|
||||
// to INACCESSIBLE until run time initialization occurs.
|
||||
Variable *v = new Variable(FUTURE_TYPE, immutable ? JS2VAL_FUTUREVALUE : JS2VAL_FUTUREVALUE, immutable);
|
||||
Variable *v = new Variable(FUTURE_TYPE, immutable ? JS2VAL_FUTUREVALUE : JS2VAL_INACCESSIBLE, immutable);
|
||||
vb->member = v;
|
||||
v->vb = vb;
|
||||
vb->mn = defineLocalMember(env, name, a->namespaces, a->overrideMod, a->xplicit, ReadWriteAccess, v, p->pos, true);
|
||||
@ -2537,7 +2537,7 @@ doUnary:
|
||||
case PackageKind:
|
||||
{
|
||||
JS2Class *limit = meta->objectType(OBJECT_TO_JS2VAL(*fi));
|
||||
result = limit->write(meta, OBJECT_TO_JS2VAL(*fi), limit, multiname, &lookup, false, newValue);
|
||||
result = limit->write(meta, OBJECT_TO_JS2VAL(*fi), limit, multiname, &lookup, false, newValue, false);
|
||||
}
|
||||
break;
|
||||
case SystemKind:
|
||||
@ -2556,7 +2556,7 @@ doUnary:
|
||||
WithFrame *wf = checked_cast<WithFrame *>(*fi);
|
||||
// XXX uninitialized 'with' object?
|
||||
JS2Class *limit = meta->objectType(OBJECT_TO_JS2VAL(wf->obj));
|
||||
result = limit->write(meta, OBJECT_TO_JS2VAL(wf->obj), limit, multiname, &lookup, false, newValue);
|
||||
result = limit->write(meta, OBJECT_TO_JS2VAL(wf->obj), limit, multiname, &lookup, false, newValue, false);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -2567,7 +2567,7 @@ doUnary:
|
||||
if (createIfMissing) {
|
||||
Package *pkg = getPackageFrame();
|
||||
JS2Class *limit = meta->objectType(OBJECT_TO_JS2VAL(pkg));
|
||||
result = limit->write(meta, OBJECT_TO_JS2VAL(pkg), limit, multiname, &lookup, true, newValue);
|
||||
result = limit->write(meta, OBJECT_TO_JS2VAL(pkg), limit, multiname, &lookup, true, newValue, false);
|
||||
if (result)
|
||||
return;
|
||||
}
|
||||
@ -2589,7 +2589,7 @@ doUnary:
|
||||
case PackageKind:
|
||||
{
|
||||
JS2Class *limit = meta->objectType(OBJECT_TO_JS2VAL(*fi));
|
||||
result = limit->write(meta, OBJECT_TO_JS2VAL(*fi), limit, multiname, &lookup, false, newValue);
|
||||
result = limit->write(meta, OBJECT_TO_JS2VAL(*fi), limit, multiname, &lookup, false, newValue, true);
|
||||
}
|
||||
break;
|
||||
case SystemKind:
|
||||
@ -2608,7 +2608,7 @@ doUnary:
|
||||
WithFrame *wf = checked_cast<WithFrame *>(*fi);
|
||||
// XXX uninitialized 'with' object?
|
||||
JS2Class *limit = meta->objectType(OBJECT_TO_JS2VAL(wf->obj));
|
||||
result = limit->write(meta, OBJECT_TO_JS2VAL(wf->obj), limit, multiname, &lookup, false, newValue);
|
||||
result = limit->write(meta, OBJECT_TO_JS2VAL(wf->obj), limit, multiname, &lookup, false, newValue, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -2620,7 +2620,7 @@ doUnary:
|
||||
ASSERT(false);
|
||||
Package *pkg = getPackageFrame();
|
||||
JS2Class *limit = meta->objectType(OBJECT_TO_JS2VAL(pkg));
|
||||
result = limit->write(meta, OBJECT_TO_JS2VAL(pkg), limit, multiname, &lookup, true, newValue);
|
||||
result = limit->write(meta, OBJECT_TO_JS2VAL(pkg), limit, multiname, &lookup, true, newValue, true);
|
||||
if (result)
|
||||
return;
|
||||
}
|
||||
@ -3334,7 +3334,7 @@ bool nullClass_ReadProperty(JS2Metadata *meta, js2val *base, JS2Class *limit, Mu
|
||||
bool nullClass_ReadPublicProperty(JS2Metadata *meta, js2val *base, JS2Class *limit, const String *name, Phase phase, js2val *rval) { return false; }
|
||||
bool nullClass_BracketRead(JS2Metadata *meta, js2val *base, JS2Class *limit, Multiname *multiname, Phase phase, js2val *rval) { return false; }
|
||||
bool nullClass_arrayWriteProperty(JS2Metadata *meta, js2val base, JS2Class *limit, Multiname *multiname, LookupKind *lookupKind, bool createIfMissing, js2val newValue) { return false; }
|
||||
bool nullClass_WriteProperty(JS2Metadata *meta, js2val base, JS2Class *limit, Multiname *multiname, LookupKind *lookupKind, bool createIfMissing, js2val newValue) { return false; }
|
||||
bool nullClass_WriteProperty(JS2Metadata *meta, js2val base, JS2Class *limit, Multiname *multiname, LookupKind *lookupKind, bool createIfMissing, js2val newValue, bool initFlag) { return false; }
|
||||
bool nullClass_WritePublicProperty(JS2Metadata *meta, js2val base, JS2Class *limit, const String *name, bool createIfMissing, js2val newValue) { return false; }
|
||||
bool nullClass_BracketWrite(JS2Metadata *meta, js2val base, JS2Class *limit, Multiname *multiname, js2val newValue) { return false; }
|
||||
bool nullClass_DeleteProperty(JS2Metadata *meta, js2val base, JS2Class *limit, Multiname *multiname, LookupKind *lookupKind, bool *result) { return false; }
|
||||
|
@ -60,7 +60,7 @@ typedef js2val (NativeCode)(JS2Metadata *meta, const js2val thisValue, js2val ar
|
||||
|
||||
typedef bool (Read)(JS2Metadata *meta, js2val *base, JS2Class *limit, Multiname *multiname, LookupKind *lookupKind, Phase phase, js2val *rval);
|
||||
typedef bool (ReadPublic)(JS2Metadata *meta, js2val *base, JS2Class *limit, const String *name, Phase phase, js2val *rval);
|
||||
typedef bool (Write)(JS2Metadata *meta, js2val base, JS2Class *limit, Multiname *multiname, LookupKind *lookupKind, bool createIfMissing, js2val newValue);
|
||||
typedef bool (Write)(JS2Metadata *meta, js2val base, JS2Class *limit, Multiname *multiname, LookupKind *lookupKind, bool createIfMissing, js2val newValue, bool initFlag);
|
||||
typedef bool (WritePublic)(JS2Metadata *meta, js2val base, JS2Class *limit, const String *name, bool createIfMissing, js2val newValue);
|
||||
typedef bool (DeleteProperty)(JS2Metadata *meta, js2val base, JS2Class *limit, Multiname *multiname, LookupKind *lookupKind, bool *result);
|
||||
typedef bool (DeletePublic)(JS2Metadata *meta, js2val base, JS2Class *limit, const String *name, bool *result);
|
||||
@ -71,8 +71,8 @@ typedef bool (BracketDelete)(JS2Metadata *meta, js2val base, JS2Class *limit, Mu
|
||||
bool defaultReadProperty(JS2Metadata *meta, js2val *base, JS2Class *limit, Multiname *multiname, LookupKind *lookupKind, Phase phase, js2val *rval);
|
||||
bool defaultReadPublicProperty(JS2Metadata *meta, js2val *base, JS2Class *limit, const String *name, Phase phase, js2val *rval);
|
||||
bool defaultBracketRead(JS2Metadata *meta, js2val *base, JS2Class *limit, Multiname *multiname, Phase phase, js2val *rval);
|
||||
bool arrayWriteProperty(JS2Metadata *meta, js2val base, JS2Class *limit, Multiname *multiname, LookupKind *lookupKind, bool createIfMissing, js2val newValue);
|
||||
bool defaultWriteProperty(JS2Metadata *meta, js2val base, JS2Class *limit, Multiname *multiname, LookupKind *lookupKind, bool createIfMissing, js2val newValue);
|
||||
bool arrayWriteProperty(JS2Metadata *meta, js2val base, JS2Class *limit, Multiname *multiname, LookupKind *lookupKind, bool createIfMissing, js2val newValue, bool initFlag);
|
||||
bool defaultWriteProperty(JS2Metadata *meta, js2val base, JS2Class *limit, Multiname *multiname, LookupKind *lookupKind, bool createIfMissing, js2val newValue, bool initFlag);
|
||||
bool defaultWritePublicProperty(JS2Metadata *meta, js2val base, JS2Class *limit, const String *name, bool createIfMissing, js2val newValue);
|
||||
bool defaultBracketWrite(JS2Metadata *meta, js2val base, JS2Class *limit, Multiname *multiname, js2val newValue);
|
||||
bool defaultDeleteProperty(JS2Metadata *meta, js2val base, JS2Class *limit, Multiname *multiname, LookupKind *lookupKind, bool *result);
|
||||
|
@ -71,7 +71,7 @@
|
||||
pc += sizeof(short);
|
||||
b = pop();
|
||||
JS2Class *limit = meta->objectType(b);
|
||||
if (!limit->write(meta, b, limit, mn, &lookup, true, a)) {
|
||||
if (!limit->write(meta, b, limit, mn, &lookup, true, a, false)) {
|
||||
if (!meta->cxt.E3compatibility)
|
||||
meta->reportError(Exception::propertyAccessError, "No property named {0}", errorPos(), mn->name);
|
||||
}
|
||||
|
@ -957,7 +957,7 @@
|
||||
if (!limit->read(meta, &baseVal, limit, mn, &lookup, RunPhase, &a))
|
||||
meta->reportError(Exception::propertyAccessError, "No property named {0}", errorPos(), mn->name);
|
||||
float64 num = meta->toFloat64(a);
|
||||
if (!limit->write(meta, baseVal, limit, mn, &lookup, true, allocNumber(num + 1.0)))
|
||||
if (!limit->write(meta, baseVal, limit, mn, &lookup, true, allocNumber(num + 1.0), false))
|
||||
meta->reportError(Exception::propertyAccessError, "No property named {0}", errorPos(), mn->name);
|
||||
pushNumber(num);
|
||||
baseVal = JS2VAL_VOID;
|
||||
@ -973,7 +973,7 @@
|
||||
if (!limit->read(meta, &baseVal, limit, mn, &lookup, RunPhase, &a))
|
||||
meta->reportError(Exception::propertyAccessError, "No property named {0}", errorPos(), mn->name);
|
||||
float64 num = meta->toFloat64(a);
|
||||
if (!limit->write(meta, baseVal, limit, mn, &lookup, true, allocNumber(num - 1.0)))
|
||||
if (!limit->write(meta, baseVal, limit, mn, &lookup, true, allocNumber(num - 1.0), false))
|
||||
meta->reportError(Exception::propertyAccessError, "No property named {0}", errorPos(), mn->name);
|
||||
pushNumber(num);
|
||||
baseVal = JS2VAL_VOID;
|
||||
@ -990,7 +990,7 @@
|
||||
meta->reportError(Exception::propertyAccessError, "No property named {0}", errorPos(), mn->name);
|
||||
float64 num = meta->toFloat64(a);
|
||||
a = pushNumber(num + 1.0);
|
||||
if (!limit->write(meta, baseVal, limit, mn, &lookup, true, a))
|
||||
if (!limit->write(meta, baseVal, limit, mn, &lookup, true, a, false))
|
||||
meta->reportError(Exception::propertyAccessError, "No property named {0}", errorPos(), mn->name);
|
||||
baseVal = JS2VAL_VOID;
|
||||
}
|
||||
@ -1006,7 +1006,7 @@
|
||||
meta->reportError(Exception::propertyAccessError, "No property named {0}", errorPos(), mn->name);
|
||||
float64 num = meta->toFloat64(a);
|
||||
a = pushNumber(num - 1.0);
|
||||
if (!limit->write(meta, baseVal, limit, mn, &lookup, true, a))
|
||||
if (!limit->write(meta, baseVal, limit, mn, &lookup, true, a, false))
|
||||
meta->reportError(Exception::propertyAccessError, "No property named {0}", errorPos(), mn->name);
|
||||
baseVal = JS2VAL_VOID;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user