mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-09 09:18:42 +09:00
import FIREFOX_52_6_0esr_RELEASE from mozilla-esr52 hg repo
This commit is contained in:
commit
dcd9973243
150858 changed files with 23884658 additions and 0 deletions
71
tools/jprof/intcnt.cpp
Normal file
71
tools/jprof/intcnt.cpp
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
/* 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 "intcnt.h"
|
||||
|
||||
IntCount::IntCount() : numInts(0), iPair(nullptr) { }
|
||||
IntCount::~IntCount() { delete [] iPair;}
|
||||
int IntCount::getSize() {return numInts;}
|
||||
int IntCount::getCount(int pos) {return iPair[pos].cnt;}
|
||||
int IntCount::getIndex(int pos) {return iPair[pos].idx;}
|
||||
|
||||
void IntCount::clear()
|
||||
{
|
||||
delete[] iPair;
|
||||
iPair = new IntPair[0];
|
||||
numInts = 0;
|
||||
}
|
||||
|
||||
int IntCount::countAdd(int index, int increment)
|
||||
{
|
||||
if(numInts) {
|
||||
// Do a binary search to find the element
|
||||
int divPoint = 0;
|
||||
|
||||
if(index>iPair[numInts-1].idx) {
|
||||
divPoint = numInts;
|
||||
} else if(index<iPair[0].idx) {
|
||||
divPoint = 0;
|
||||
} else {
|
||||
int low=0, high=numInts-1;
|
||||
int mid = (low+high)/2;
|
||||
while(1) {
|
||||
mid = (low+high)/2;
|
||||
|
||||
if(index<iPair[mid].idx) {
|
||||
high = mid;
|
||||
} else if(index>iPair[mid].idx) {
|
||||
if(mid<numInts-1 && index<iPair[mid+1].idx) {
|
||||
divPoint = mid+1;
|
||||
break;
|
||||
} else {
|
||||
low = mid+1;
|
||||
}
|
||||
} else if(index==iPair[mid].idx) {
|
||||
return iPair[mid].cnt += increment;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int i;
|
||||
IntPair *tpair = new IntPair[numInts+1];
|
||||
for(i=0; i<divPoint; i++) {
|
||||
tpair[i] = iPair[i];
|
||||
}
|
||||
for(i=divPoint; i<numInts; i++) {
|
||||
tpair[i+1] = iPair[i];
|
||||
}
|
||||
++numInts;
|
||||
delete [] iPair;
|
||||
iPair = tpair;
|
||||
iPair[divPoint].idx = index;
|
||||
iPair[divPoint].cnt = increment;
|
||||
return increment;
|
||||
} else {
|
||||
iPair = new IntPair[1];
|
||||
numInts = 1;
|
||||
iPair[0].idx = index;
|
||||
return iPair[0].cnt = increment;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue