mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 920061 - SpiderMonkey: Use explicit template instantiation instead of instantiating templates manually. r=njn
This commit is contained in:
parent
c4dd429013
commit
e205c78007
@ -325,11 +325,10 @@ Mark##base##Unbarriered(JSTracer *trc, type **thingp, const char *name)
|
|||||||
MarkUnbarriered<type>(trc, thingp, name); \
|
MarkUnbarriered<type>(trc, thingp, name); \
|
||||||
} \
|
} \
|
||||||
\
|
\
|
||||||
/* This is a hack that forces the compiler to generate code for */ \
|
/* Explicitly instantiate MarkUnbarriered<type>. It is referenced from */ \
|
||||||
/* MarkUnbarriered<type>. Without it, some compilers will completely inline it */ \
|
/* other translation units and the instantiation might otherwise get */ \
|
||||||
/* away, causing linking errors in other translation units. */ \
|
/* inlined away. */ \
|
||||||
void (*Mark##base##type##UnbarrieredVar)(JSTracer *, type **, const char *) = \
|
template void MarkUnbarriered<type>(JSTracer *, type **, const char *); \
|
||||||
MarkUnbarriered<type>; \
|
|
||||||
\
|
\
|
||||||
void \
|
void \
|
||||||
Mark##base##Range(JSTracer *trc, size_t len, HeapPtr<type> *vec, const char *name) \
|
Mark##base##Range(JSTracer *trc, size_t len, HeapPtr<type> *vec, const char *name) \
|
||||||
@ -367,14 +366,9 @@ Is##base##AboutToBeFinalized(EncapsulatedPtr<type> *thingp)
|
|||||||
return IsAboutToBeFinalized<type>(thingp->unsafeGet()); \
|
return IsAboutToBeFinalized<type>(thingp->unsafeGet()); \
|
||||||
}
|
}
|
||||||
|
|
||||||
// The arguments to DeclMarkerImpl cannot be qualified names due to the
|
|
||||||
// Mark##base##type##UnbarrieredVar hack in DeclMarkerImpl.
|
|
||||||
using jit::IonCode;
|
|
||||||
using js::types::TypeObject;
|
|
||||||
|
|
||||||
DeclMarkerImpl(BaseShape, BaseShape)
|
DeclMarkerImpl(BaseShape, BaseShape)
|
||||||
DeclMarkerImpl(BaseShape, UnownedBaseShape)
|
DeclMarkerImpl(BaseShape, UnownedBaseShape)
|
||||||
DeclMarkerImpl(IonCode, IonCode)
|
DeclMarkerImpl(IonCode, jit::IonCode)
|
||||||
DeclMarkerImpl(Object, ArgumentsObject)
|
DeclMarkerImpl(Object, ArgumentsObject)
|
||||||
DeclMarkerImpl(Object, ArrayBufferObject)
|
DeclMarkerImpl(Object, ArrayBufferObject)
|
||||||
DeclMarkerImpl(Object, ArrayBufferViewObject)
|
DeclMarkerImpl(Object, ArrayBufferViewObject)
|
||||||
@ -392,7 +386,7 @@ DeclMarkerImpl(String, JSString)
|
|||||||
DeclMarkerImpl(String, JSFlatString)
|
DeclMarkerImpl(String, JSFlatString)
|
||||||
DeclMarkerImpl(String, JSLinearString)
|
DeclMarkerImpl(String, JSLinearString)
|
||||||
DeclMarkerImpl(String, PropertyName)
|
DeclMarkerImpl(String, PropertyName)
|
||||||
DeclMarkerImpl(TypeObject, TypeObject)
|
DeclMarkerImpl(TypeObject, js::types::TypeObject)
|
||||||
|
|
||||||
} /* namespace gc */
|
} /* namespace gc */
|
||||||
} /* namespace js */
|
} /* namespace js */
|
||||||
|
Loading…
Reference in New Issue
Block a user