Backed out 2 changesets (bug 805883, bug 787703) because of Windows PGO bustage on non-profiling builds

Backed out changeset 792a91b91020 (bug 805883)
Backed out changeset e1c7f5195704 (bug 787703)

--HG--
extra : rebase_source : 725029fbf5e34ae198bd9f4cde53593e8f373392
This commit is contained in:
Ehsan Akhgari 2012-10-30 16:17:29 -04:00
parent 325938f110
commit 89f1026cd3
3 changed files with 0 additions and 37 deletions

View File

@ -498,35 +498,6 @@ struct RootMethods<T *>
static bool poisoned(T *v) { return IsPoisonedPtr(v); }
};
#if !defined(JSGC_ROOT_ANALYSIS) && !defined(JSGC_USE_EXACT_ROOTING)
template <typename T>
struct RootSink {
static inline void dispose(const T &) {}
};
/*
* The *alleged* killer whale hack (see JS::Anchor<T> in jsapi.h) duplicated
* here because using JS::Anchor causes clang to emit bad instructions.
*
* In exact-gc builds, Rooted<T> always keeps the T reachable. In non-exact-gc
* builds, it does not, but conservative scanning usually picks up the slack.
* However in the case where the Rooted pointer is no longer used, but some
* subobject or malloc'd memory with the same lifetime may be used,
* conservative scanning can fail. JSStableString's chars() method makes it
* particularly attractive to use that way, so we use some voodoo to convince
* the compiler to keep the string pointer on the stack for the full lifetime
* of the Rooted<JSStableString *>.
*/
template <>
struct RootSink<JSStableString *> {
static void dispose(JSStableString *ptr) {
JSStableString * volatile sink;
sink = ptr;
(void)sink; // silence GCC unused-but-set-variable build warning
}
};
#endif
template <typename T>
class RootedBase {};
@ -616,8 +587,6 @@ class Rooted : public RootedBase<T>
#if defined(JSGC_ROOT_ANALYSIS) || defined(JSGC_USE_EXACT_ROOTING)
JS_ASSERT(*stack == this);
*stack = prev;
#else
RootSink<T>::dispose(ptr);
#endif
}

View File

@ -1,5 +0,0 @@
eval(" function x() {}" + Array(241).join(" "));
for (var i = 0; i < 100; i++) {
gczeal(4, 2);
String(x);
}

View File

@ -203,7 +203,6 @@ typedef struct JSTracer JSTracer;
#ifdef __cplusplus
class JSFlatString;
class JSStableString; // long story
class JSString;
#else
typedef struct JSFlatString JSFlatString;