mirror of
https://github.com/roytam1/palemoon27.git
synced 2026-05-26 14:30:27 +00:00
ee118c4b83
- Bug 1051146 - Part 1: Introduce the B2G specific build flags, initially enabled. r=smaug (341c7565d) - Bug 1051146 - art 2: Introduce the new Pocketsphinx and Sphinxbase code with no build integration. r=smaug, r=gerv (f29eafa78) - Bug 1051146 - Part 3: Introduce build system changes for the new Pocketsphinx and Sphinxbase code. r=smaug, r=gps (06c60429d) - Bug 1051146 - Part 4: Introduce build system changes for the MOZ_WEBSPEECH_TEST_BACKEND flag. r=smaug, r=gps (16195e66e) - Bug 1051146 - Part 5: Introduce new English model with no build integration. r=smaug (24996aa9c) - Bug 1051146 - Part 6: Introduce build integration of new English model. r=smaug, r=gps (b718751a9) - Bug 1051146 - Part 7: Introduce update scripts for Pocketsphinx and Sphinxbase code. r=smaug (5a85c7ed2) - Bug 1051148 - Part 1: Patch that introduces WebSpeech API implementation. r=smaug (d18e5d86e) - Bug 1171249 - Modified configure.in so MOZ_WEBSPEECH undefined implies both MOZ_WEBSPEECH_TEST_BACKEND and MOZ_WEBSPEECH_MODELS are undefined. r=gps (47d13fc61) - Bug 1051148 - Part 2: Patch that turns off the WebSpeech API implementation using flags. r=gps (8b2ceef89) - Bug 1051146 - Disable Pocketsphinx building on Windows due to bustage. r=gps (48f4a1c27) - Bug 1204703 - Make nsContentSecurityManager scriptable (r=sicking) (fb514951a) - Bug 1215745: Safer implemetation of nsJarChannel::AsyncOpen2. r=ckerschb (3ad0270b4) - partial of Bug 1178892 - Split the profiler into Core & Gecko files and break apart monolithic headers. r=mstange (eda571469) - Bug 1213407 - PluginModuleContentParent should delete its Transport. r=billm (153a54404) - Bug 1169945 - Remove unused plugins.enumerable_names whitelist. r=bsmedberg (52126cbd8) - Bug 1160166 - Disabled plugin meta information often isn't available to content processes. r=jimm (d63331192) - Bug 1165981 - Only allow flash as a plugin on Windows 64-bit builds; r=bsmedberg (bfc073186) - missing bit of 1164543 (5ef55bc55) - Bug 1178963 part 1. Use nsIPluginTagInternal instead of nsPluginTag in cases where it may be nsFakePluginTag. r=peterv (f8702aead) - Bug 1200484 (part 1) - Expose the column number in JS::DescribeScriptedCaller(). r=luke. (85cf65a1c) - Bug 1200484 (part 2) - Use JS column numbers in ReportWrapperDenial(). r=mrbkap. (1de0e6331) - Bug 1200484 (part 3) - Use JS column numbers in WebSocket.cpp. r=baku. (3febdd8bc) - Bug 1200484 (part 4) - Expose the column number in nsJSUtils::GetCallingLocation(). r=mrbkap. (479ae5e2a) - Bug 1200484 (part 5) - Use JS column numbers in XPCNativeInterface::NewInstance(). r=mrbkap. (63e5e4e41) - Bug 1200484 (part 6) - Use JS column numbers in ContentParent::OnChannelError(). r=billm. (4c84ef09d) - Bug 1139718 - Warning when sending MM messages that include XPCOM data (r=smaug) (d50774823) - Bug 1200484 (part 7) - Use JS column numbers in GetParamsForMessage() (bf19fc4cb) - Bug 1200484 (part 8) - Use JS column numbers in EventSource. r=khuey. (64374ed83) - Bug 1200484 (part 9) - Use JS column numbers in nsContentUtils::ReportToConsoleNonLocalized. r=khuey. (4d81c5f4f) - Bug 1200484 (part 10) - Use JS column numbers in indexedDB. r=khuey. (64eec5da6) - Bug 1200484 (part 11) - Set source location when initializing an nsJSScriptTimeoutHandler from a Function. r=peterv. (f135b3a2c) - Bug 1200484 (part 12) - Use JS column numbers in nsJSTimeoutHandler. r=peterv. (8ec21dc04) - Bug 1163664 - Don't check for plugin blocklist state on Android. r=jimm, r=jchen (14b8f3e57) - Bug 1178963 part 2. Implement nsFakePluginTag to represent a non-NPAPI "plugin" that is actually implemented in JavaScript. r=peterv (ba11d6de0) - Bug 1178896 - Add support for determining if a plugin is OOP to nsIPluginHost. r=aklotz (e8689641f) - Bug 1178963 part 3. Make nsPluginHost aware of fake plugins. r=peterv (a2a9f8cb3)
170 lines
3.6 KiB
C++
170 lines
3.6 KiB
C++
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* vim:set ts=2 sw=2 sts=2 et cindent: */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#include "GeckoTaskTracerImpl.h"
|
|
#include "TracedTaskCommon.h"
|
|
|
|
// NS_ENSURE_TRUE_VOID() without the warning on the debug build.
|
|
#define ENSURE_TRUE_VOID(x) \
|
|
do { \
|
|
if (MOZ_UNLIKELY(!(x))) { \
|
|
return; \
|
|
} \
|
|
} while(0)
|
|
|
|
namespace mozilla {
|
|
namespace tasktracer {
|
|
|
|
TracedTaskCommon::TracedTaskCommon()
|
|
: mSourceEventType(SourceEventType::Unknown)
|
|
, mSourceEventId(0)
|
|
, mParentTaskId(0)
|
|
, mTaskId(0)
|
|
, mIsTraceInfoInit(false)
|
|
{
|
|
}
|
|
|
|
TracedTaskCommon::~TracedTaskCommon()
|
|
{
|
|
}
|
|
|
|
void
|
|
TracedTaskCommon::Init()
|
|
{
|
|
TraceInfo* info = GetOrCreateTraceInfo();
|
|
ENSURE_TRUE_VOID(info);
|
|
|
|
mTaskId = GenNewUniqueTaskId();
|
|
mSourceEventId = info->mCurTraceSourceId;
|
|
mSourceEventType = info->mCurTraceSourceType;
|
|
mParentTaskId = info->mCurTaskId;
|
|
mIsTraceInfoInit = true;
|
|
}
|
|
|
|
void
|
|
TracedTaskCommon::DispatchTask(int aDelayTimeMs)
|
|
{
|
|
LogDispatch(mTaskId, mParentTaskId, mSourceEventId, mSourceEventType,
|
|
aDelayTimeMs);
|
|
}
|
|
|
|
void
|
|
TracedTaskCommon::GetTLSTraceInfo()
|
|
{
|
|
TraceInfo* info = GetOrCreateTraceInfo();
|
|
ENSURE_TRUE_VOID(info);
|
|
|
|
mSourceEventType = info->mCurTraceSourceType;
|
|
mSourceEventId = info->mCurTraceSourceId;
|
|
mTaskId = info->mCurTaskId;
|
|
mIsTraceInfoInit = true;
|
|
}
|
|
|
|
void
|
|
TracedTaskCommon::SetTLSTraceInfo()
|
|
{
|
|
TraceInfo* info = GetOrCreateTraceInfo();
|
|
ENSURE_TRUE_VOID(info);
|
|
|
|
if (mIsTraceInfoInit) {
|
|
info->mCurTraceSourceId = mSourceEventId;
|
|
info->mCurTraceSourceType = mSourceEventType;
|
|
info->mCurTaskId = mTaskId;
|
|
}
|
|
}
|
|
|
|
void
|
|
TracedTaskCommon::ClearTLSTraceInfo()
|
|
{
|
|
TraceInfo* info = GetOrCreateTraceInfo();
|
|
ENSURE_TRUE_VOID(info);
|
|
|
|
info->mCurTraceSourceId = 0;
|
|
info->mCurTraceSourceType = SourceEventType::Unknown;
|
|
info->mCurTaskId = 0;
|
|
}
|
|
|
|
/**
|
|
* Implementation of class TracedRunnable.
|
|
*/
|
|
TracedRunnable::TracedRunnable(nsIRunnable* aOriginalObj)
|
|
: TracedTaskCommon()
|
|
, mOriginalObj(aOriginalObj)
|
|
{
|
|
Init();
|
|
LogVirtualTablePtr(mTaskId, mSourceEventId, *(int**)(aOriginalObj));
|
|
}
|
|
|
|
TracedRunnable::~TracedRunnable()
|
|
{
|
|
}
|
|
|
|
NS_IMETHODIMP
|
|
TracedRunnable::Run()
|
|
{
|
|
SetTLSTraceInfo();
|
|
LogBegin(mTaskId, mSourceEventId);
|
|
nsresult rv = mOriginalObj->Run();
|
|
LogEnd(mTaskId, mSourceEventId);
|
|
ClearTLSTraceInfo();
|
|
|
|
return rv;
|
|
}
|
|
|
|
/**
|
|
* Implementation of class TracedTask.
|
|
*/
|
|
TracedTask::TracedTask(Task* aOriginalObj)
|
|
: TracedTaskCommon()
|
|
, mOriginalObj(aOriginalObj)
|
|
{
|
|
Init();
|
|
LogVirtualTablePtr(mTaskId, mSourceEventId, *(int**)(aOriginalObj));
|
|
}
|
|
|
|
TracedTask::~TracedTask()
|
|
{
|
|
if (mOriginalObj) {
|
|
delete mOriginalObj;
|
|
mOriginalObj = nullptr;
|
|
}
|
|
}
|
|
|
|
void
|
|
TracedTask::Run()
|
|
{
|
|
SetTLSTraceInfo();
|
|
LogBegin(mTaskId, mSourceEventId);
|
|
mOriginalObj->Run();
|
|
LogEnd(mTaskId, mSourceEventId);
|
|
ClearTLSTraceInfo();
|
|
}
|
|
|
|
/**
|
|
* CreateTracedRunnable() returns a TracedRunnable wrapping the original
|
|
* nsIRunnable object, aRunnable.
|
|
*/
|
|
already_AddRefed<nsIRunnable>
|
|
CreateTracedRunnable(nsIRunnable* aRunnable)
|
|
{
|
|
nsCOMPtr<nsIRunnable> runnable = new TracedRunnable(aRunnable);
|
|
return runnable.forget();
|
|
}
|
|
|
|
/**
|
|
* CreateTracedTask() returns a TracedTask wrapping the original Task object,
|
|
* aTask.
|
|
*/
|
|
Task*
|
|
CreateTracedTask(Task* aTask)
|
|
{
|
|
Task* task = new TracedTask(aTask);
|
|
return task;
|
|
}
|
|
|
|
} // namespace tasktracer
|
|
} // namespace mozilla
|