bug 1096666 - measure time spent in each compartment r=billm

This commit is contained in:
Brad Lassey 2014-12-08 20:12:00 -08:00
parent 3832b950cd
commit 17b8b79073
2 changed files with 16 additions and 2 deletions

View File

@ -51,6 +51,7 @@ JSCompartment::JSCompartment(Zone *zone, const JS::CompartmentOptions &options =
#endif
global_(nullptr),
enterCompartmentDepth(0),
totalTime(0),
data(nullptr),
objectMetadataCallback(nullptr),
lastAnimationTime(0),

View File

@ -14,6 +14,7 @@
#include "vm/GlobalObject.h"
#include "vm/PIC.h"
#include "vm/SavedStacks.h"
#include "prmjtime.h"
namespace js {
@ -166,10 +167,22 @@ struct JSCompartment
js::ReadBarrieredGlobalObject global_;
unsigned enterCompartmentDepth;
int64_t startInterval;
public:
void enter() { enterCompartmentDepth++; }
void leave() { enterCompartmentDepth--; }
int64_t totalTime;
void enter() {
if (addonId && !enterCompartmentDepth) {
startInterval = PRMJ_Now();
}
enterCompartmentDepth++;
}
void leave() {
enterCompartmentDepth--;
if (addonId && !enterCompartmentDepth) {
totalTime += (PRMJ_Now() - startInterval);
}
}
bool hasBeenEntered() { return !!enterCompartmentDepth; }
JS::Zone *zone() { return zone_; }