From 2adc50caa5dddcf67e77f1c4ccf15fa6cd7372b3 Mon Sep 17 00:00:00 2001 From: "rogerl%netscape.com" Date: Thu, 17 Apr 2003 22:58:50 +0000 Subject: [PATCH] Fixing ':type' and default initializing. git-svn-id: svn://10.0.0.236/trunk@141343 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/js2/src/js2array.cpp | 2 +- mozilla/js2/src/js2eval.cpp | 14 +++++++------- mozilla/js2/src/js2metadata.cpp | 16 ++++++++-------- mozilla/js2/src/js2metadata.h | 6 +++--- mozilla/js2/src/js2op_access.cpp | 2 +- mozilla/js2/src/js2op_arithmetic.cpp | 8 ++++---- 6 files changed, 24 insertions(+), 24 deletions(-) diff --git a/mozilla/js2/src/js2array.cpp b/mozilla/js2/src/js2array.cpp index f2f987d1ba9..bc2f5427a31 100644 --- a/mozilla/js2/src/js2array.cpp +++ b/mozilla/js2/src/js2array.cpp @@ -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); diff --git a/mozilla/js2/src/js2eval.cpp b/mozilla/js2/src/js2eval.cpp index 76e40cc22f7..5be6dce3402 100644 --- a/mozilla/js2/src/js2eval.cpp +++ b/mozilla/js2/src/js2eval.cpp @@ -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(m), newValue, false); + return meta->writeLocalMember(checked_cast(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) diff --git a/mozilla/js2/src/js2metadata.cpp b/mozilla/js2/src/js2metadata.cpp index acaabe2443d..d2e1b9264c0 100644 --- a/mozilla/js2/src/js2metadata.cpp +++ b/mozilla/js2/src/js2metadata.cpp @@ -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(*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(*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; } diff --git a/mozilla/js2/src/js2metadata.h b/mozilla/js2/src/js2metadata.h index a571f8e9222..85b467cec37 100644 --- a/mozilla/js2/src/js2metadata.h +++ b/mozilla/js2/src/js2metadata.h @@ -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); diff --git a/mozilla/js2/src/js2op_access.cpp b/mozilla/js2/src/js2op_access.cpp index 991777acf31..040ff92827a 100644 --- a/mozilla/js2/src/js2op_access.cpp +++ b/mozilla/js2/src/js2op_access.cpp @@ -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); } diff --git a/mozilla/js2/src/js2op_arithmetic.cpp b/mozilla/js2/src/js2op_arithmetic.cpp index 50e330823fd..ce50e57f280 100644 --- a/mozilla/js2/src/js2op_arithmetic.cpp +++ b/mozilla/js2/src/js2op_arithmetic.cpp @@ -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; }