Bug 1377007 - GC for binjs-ref parser;r?jorendorff,arai
MozReview-Commit-ID: EjZZ1ofm52t
--- a/js/src/frontend/BytecodeCompiler.h
+++ b/js/src/frontend/BytecodeCompiler.h
@@ -124,16 +124,21 @@ IsIdentifier(const char16_t* chars, size
/* True if str is a keyword. Defined in TokenStream.cpp. */
bool
IsKeyword(JSLinearString* str);
/* Trace all GC things reachable from parser. Defined in Parser.cpp. */
void
TraceParser(JSTracer* trc, JS::AutoGCRooter* parser);
+/* Trace all GC things reachable from binjs parser. Defined in BinSource.cpp. */
+void
+TraceBinParser(JSTracer* trc, JS::AutoGCRooter* parser);
+
+
class MOZ_STACK_CLASS AutoFrontendTraceLog
{
#ifdef JS_TRACE_LOGGING
TraceLoggerThread* logger_;
mozilla::Maybe<TraceLoggerEvent> frontendEvent_;
mozilla::Maybe<AutoTraceLog> frontendLog_;
mozilla::Maybe<AutoTraceLog> typeLog_;
#endif
--- a/js/src/gc/RootMarking.cpp
+++ b/js/src/gc/RootMarking.cpp
@@ -149,16 +149,20 @@ JS_FOR_EACH_TRACEKIND(FINISH_ROOT_LIST)
inline void
AutoGCRooter::trace(JSTracer* trc)
{
switch (tag_) {
case PARSER:
frontend::TraceParser(trc, this);
return;
+ case BINPARSER:
+ frontend::TraceBinParser(trc, this);
+ return;
+
case VALARRAY: {
/*
* We don't know the template size parameter, but we can safely treat it
* as an AutoValueArray<1> because the length is stored separately.
*/
AutoValueArray<1>* array = static_cast<AutoValueArray<1>*>(this);
TraceRootRange(trc, array->length(), array->begin(), "js::AutoValueArray");
return;
--- a/js/src/jspubtd.h
+++ b/js/src/jspubtd.h
@@ -239,16 +239,17 @@ class JS_PUBLIC_API(AutoGCRooter)
* below. Any other negative value indicates some deeper problem such as
* memory corruption.
*/
ptrdiff_t tag_;
enum {
VALARRAY = -2, /* js::AutoValueArray */
PARSER = -3, /* js::frontend::Parser */
+ BINPARSER = -4, /* js::frontend::BinSource */
VALVECTOR = -10, /* js::AutoValueVector */
IDVECTOR = -11, /* js::AutoIdVector */
OBJVECTOR = -14, /* js::AutoObjectVector */
IONMASM = -19, /* js::jit::MacroAssembler */
WRAPVECTOR = -20, /* js::AutoWrapperVector */
WRAPPER = -21, /* js::AutoWrapperRooter */
CUSTOM = -26 /* js::CustomAutoRooter */
};