зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1119230 - remove lingering JIT code for PJS. r=shu
This commit is contained in:
Родитель
1608603caa
Коммит
692ba33ebb
|
@ -42,29 +42,6 @@
|
|||
typedef bool
|
||||
(* JSNative)(JSContext *cx, unsigned argc, JS::Value *vp);
|
||||
|
||||
/* Typedef for native functions that may be called in parallel. */
|
||||
typedef bool
|
||||
(* JSParallelNative)(js::ForkJoinContext *cx, unsigned argc, JS::Value *vp);
|
||||
|
||||
/*
|
||||
* Typedef for native functions that may be called either in parallel or
|
||||
* sequential execution.
|
||||
*/
|
||||
typedef bool
|
||||
(* JSThreadSafeNative)(js::ThreadSafeContext *cx, unsigned argc, JS::Value *vp);
|
||||
|
||||
/*
|
||||
* Convenience wrappers for passing in ThreadSafeNative to places that expect
|
||||
* a JSNative or a JSParallelNative.
|
||||
*/
|
||||
template <JSThreadSafeNative threadSafeNative>
|
||||
inline bool
|
||||
JSNativeThreadSafeWrapper(JSContext *cx, unsigned argc, JS::Value *vp);
|
||||
|
||||
template <JSThreadSafeNative threadSafeNative>
|
||||
inline bool
|
||||
JSParallelNativeThreadSafeWrapper(js::ForkJoinContext *cx, unsigned argc, JS::Value *vp);
|
||||
|
||||
/*
|
||||
* Compute |this| for the |vp| inside a JSNative, either boxing primitives or
|
||||
* replacing with the global object as necessary.
|
||||
|
|
|
@ -485,24 +485,4 @@ JSContext::currentScript(jsbytecode **ppc,
|
|||
return script;
|
||||
}
|
||||
|
||||
template <JSThreadSafeNative threadSafeNative>
|
||||
inline bool
|
||||
JSNativeThreadSafeWrapper(JSContext *cx, unsigned argc, JS::Value *vp)
|
||||
{
|
||||
return threadSafeNative(cx, argc, vp);
|
||||
}
|
||||
|
||||
template <JSThreadSafeNative threadSafeNative>
|
||||
inline bool
|
||||
JSParallelNativeThreadSafeWrapper(js::ForkJoinContext *cx, unsigned argc, JS::Value *vp)
|
||||
{
|
||||
return threadSafeNative(cx, argc, vp);
|
||||
}
|
||||
|
||||
/* static */ inline JSContext *
|
||||
js::ExecutionModeTraits<js::SequentialExecution>::toContextType(ExclusiveContext *cx)
|
||||
{
|
||||
return cx->asJSContext();
|
||||
}
|
||||
|
||||
#endif /* jscntxtinlines_h */
|
||||
|
|
|
@ -2165,7 +2165,6 @@ struct JSJitInfo {
|
|||
Getter,
|
||||
Setter,
|
||||
Method,
|
||||
ParallelNative,
|
||||
StaticMethod,
|
||||
// Must be last
|
||||
OpTypeCount
|
||||
|
@ -2220,11 +2219,6 @@ struct JSJitInfo {
|
|||
AliasSetCount
|
||||
};
|
||||
|
||||
bool hasParallelNative() const
|
||||
{
|
||||
return type() == ParallelNative;
|
||||
}
|
||||
|
||||
bool needsOuterizedThisObject() const
|
||||
{
|
||||
return type() != Getter && type() != Setter;
|
||||
|
@ -2254,8 +2248,6 @@ struct JSJitInfo {
|
|||
JSJitGetterOp getter;
|
||||
JSJitSetterOp setter;
|
||||
JSJitMethodOp method;
|
||||
/* An alternative native that's safe to call in parallel mode. */
|
||||
JSParallelNative parallelNative;
|
||||
/* A DOM static method, used for Promise wrappers */
|
||||
JSNative staticMethod;
|
||||
};
|
||||
|
@ -2340,45 +2332,6 @@ struct JSTypedMethodJitInfo
|
|||
have side-effects. */
|
||||
};
|
||||
|
||||
namespace JS {
|
||||
namespace detail {
|
||||
|
||||
/* NEVER DEFINED, DON'T USE. For use by JS_CAST_PARALLEL_NATIVE_TO only. */
|
||||
inline int CheckIsParallelNative(JSParallelNative parallelNative);
|
||||
|
||||
} // namespace detail
|
||||
} // namespace JS
|
||||
|
||||
#define JS_CAST_PARALLEL_NATIVE_TO(v, To) \
|
||||
(static_cast<void>(sizeof(JS::detail::CheckIsParallelNative(v))), \
|
||||
reinterpret_cast<To>(v))
|
||||
|
||||
/*
|
||||
* You may ask yourself: why do we define a wrapper around a wrapper here?
|
||||
* The answer is that some compilers don't understand initializing a union
|
||||
* as we do below with a construct like:
|
||||
*
|
||||
* reinterpret_cast<JSJitGetterOp>(JSParallelNativeThreadSafeWrapper<op>)
|
||||
*
|
||||
* (We need the reinterpret_cast because we must initialize the union with
|
||||
* a datum of the type of the union's first member.)
|
||||
*
|
||||
* Presumably this has something to do with template instantiation.
|
||||
* Initializing with a normal function pointer seems to work fine. Hence
|
||||
* the ugliness that you see before you.
|
||||
*/
|
||||
#define JS_JITINFO_NATIVE_PARALLEL(infoName, parallelOp) \
|
||||
const JSJitInfo infoName = \
|
||||
{{JS_CAST_PARALLEL_NATIVE_TO(parallelOp, JSJitGetterOp)},0,0,JSJitInfo::ParallelNative,JSJitInfo::AliasEverything,JSVAL_TYPE_MISSING,false,false,false,false,false,0}
|
||||
|
||||
#define JS_JITINFO_NATIVE_PARALLEL_THREADSAFE(infoName, wrapperName, serialOp) \
|
||||
bool wrapperName##_ParallelNativeThreadSafeWrapper(js::ForkJoinContext *cx, unsigned argc, \
|
||||
JS::Value *vp) \
|
||||
{ \
|
||||
return JSParallelNativeThreadSafeWrapper<serialOp>(cx, argc, vp); \
|
||||
} \
|
||||
JS_JITINFO_NATIVE_PARALLEL(infoName, wrapperName##_ParallelNativeThreadSafeWrapper)
|
||||
|
||||
static MOZ_ALWAYS_INLINE const JSJitInfo *
|
||||
FUNCTION_VALUE_TO_JITINFO(const JS::Value& v)
|
||||
{
|
||||
|
|
|
@ -19,8 +19,6 @@ namespace js {
|
|||
class FunctionExtended;
|
||||
|
||||
typedef JSNative Native;
|
||||
typedef JSParallelNative ParallelNative;
|
||||
typedef JSThreadSafeNative ThreadSafeNative;
|
||||
}
|
||||
|
||||
struct JSAtomState;
|
||||
|
@ -157,9 +155,6 @@ class JSFunction : public js::NativeObject
|
|||
bool isNamedLambda() const {
|
||||
return isLambda() && displayAtom() && !hasGuessedAtom();
|
||||
}
|
||||
bool hasParallelNative() const {
|
||||
return isNative() && jitInfo() && jitInfo()->hasParallelNative();
|
||||
}
|
||||
|
||||
bool isBuiltinFunctionConstructor();
|
||||
|
||||
|
@ -402,15 +397,6 @@ class JSFunction : public js::NativeObject
|
|||
return isInterpreted() ? nullptr : native();
|
||||
}
|
||||
|
||||
JSParallelNative parallelNative() const {
|
||||
MOZ_ASSERT(hasParallelNative());
|
||||
return jitInfo()->parallelNative;
|
||||
}
|
||||
|
||||
JSParallelNative maybeParallelNative() const {
|
||||
return hasParallelNative() ? parallelNative() : nullptr;
|
||||
}
|
||||
|
||||
void initNative(js::Native native, const JSJitInfo *jitinfo) {
|
||||
MOZ_ASSERT(native);
|
||||
u.n.native = native;
|
||||
|
|
|
@ -181,27 +181,6 @@ ExecutionModeString(ExecutionMode mode)
|
|||
*/
|
||||
static const unsigned NumExecutionModes = ParallelExecution + 1;
|
||||
|
||||
template <ExecutionMode mode>
|
||||
struct ExecutionModeTraits
|
||||
{
|
||||
};
|
||||
|
||||
template <> struct ExecutionModeTraits<SequentialExecution>
|
||||
{
|
||||
typedef JSContext * ContextType;
|
||||
typedef ExclusiveContext * ExclusiveContextType;
|
||||
|
||||
static inline JSContext *toContextType(ExclusiveContext *cx);
|
||||
};
|
||||
|
||||
template <> struct ExecutionModeTraits<ParallelExecution>
|
||||
{
|
||||
typedef ForkJoinContext * ContextType;
|
||||
typedef ForkJoinContext * ExclusiveContextType;
|
||||
|
||||
static inline ForkJoinContext *toContextType(ForkJoinContext *cx) { return cx; }
|
||||
};
|
||||
|
||||
namespace jit {
|
||||
struct IonScript;
|
||||
class JitAllocPolicy;
|
||||
|
|
|
@ -2123,9 +2123,6 @@ intrinsic_SetForkJoinTargetRegionPar(ForkJoinContext *cx, unsigned argc, Value *
|
|||
return true;
|
||||
}
|
||||
|
||||
JS_JITINFO_NATIVE_PARALLEL(js::intrinsic_SetForkJoinTargetRegionInfo,
|
||||
intrinsic_SetForkJoinTargetRegionPar);
|
||||
|
||||
bool
|
||||
js::intrinsic_ClearThreadLocalArenas(JSContext *cx, unsigned argc, Value *vp)
|
||||
{
|
||||
|
@ -2138,6 +2135,3 @@ intrinsic_ClearThreadLocalArenasPar(ForkJoinContext *cx, unsigned argc, Value *v
|
|||
//cx->allocator()->arenas.wipeDuringParallelExecution(cx->runtime());
|
||||
return true;
|
||||
}
|
||||
|
||||
JS_JITINFO_NATIVE_PARALLEL(js::intrinsic_ClearThreadLocalArenasInfo,
|
||||
intrinsic_ClearThreadLocalArenasPar);
|
||||
|
|
Загрузка…
Ссылка в новой задаче