This file is indexed.

/usr/include/gnash/gmemory.h is in gnash-dev 0.8.11~git20160109-1build1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
// 
//   Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
//   Free Software Foundation, Inc
// 
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 3 of the License, or
// (at your option) any later version.
// 
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
// 
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA

//
// This class is a memory allocation tracker used to optimize
// the memory usage and find memory leaks.
//
#ifndef __MEMORY_H__
#define __MEMORY_H__

#ifdef HAVE_CONFIG_H
#include "gnashconfig.h"
#endif

// If we don't have support for mallinfo(), this code is useless
#ifdef HAVE_MALLINFO

#include <cstdlib>
#include <malloc.h>
#include <ctime>
#include "dsodefs.h" // DSOEXPORT

namespace gnash {
  
class DSOEXPORT Memory {
public:

    // Borrowed from malloc.h and trimmed down.
    struct small_mallinfo {
        int line;     // line number of this data sample
	struct timespec stamp;	// the time stamp of this sample
        int arena;    // non-mmapped space allocated from system
        int uordblks; // total allocated space
        int fordblks; // total free space
    };
    Memory();
    Memory(size_t size);
    ~Memory();

    // Start collecting statistics. This can effect performance
    void startStats();
    
    // Stop collecting statistics
    void endStats() { addStats();_collecting = false; };

    // Erase all collected data and reset collections.
    void reset();

    // checkpoint()
    void startCheckpoint() { _checkpoint[0] = mallinfo(); };
    bool endCheckpoint();
    
    // Add or retrieve mallinfo data
    int addStats();
    int addStats(int line);
    int addStats(struct small_mallinfo *x);
    int addStats(struct small_mallinfo *x, int line);
    struct small_mallinfo *getStats() { return _info; };
    struct small_mallinfo *operator[](int x) { return _info + x; };
    int totalStats() { return _index; };

    // Analyze memory usage
    bool analyze();

    // Dump the differences of bytes allocated between two samples
    int diffStats();
    int diffStats(int x, int y);

    // Dump the differences in the timestamp between two samples
    int diffStamp();
    int diffStamp(int x, int y);
    
    // Dump the vector of stored classes
    void dump(struct mallinfo *x);
    void dump(struct small_mallinfo *x);
    void dump();
    void dumpCSV();
private:
    bool                _collecting;
    // For data logging, we want to store as little as possible
    // so we don't impact the system too hard. Data logging memory
    // allocations can generate a huge amount of data, so we have
    // to be careful. We also can't use STL, as that does more
    // memory allocations, which will confuse our statistics
    // gathering.
    struct small_mallinfo *_info;
    // Since we aren't using STL, we have to store how much
    // data storage we have ourselves.
    size_t              _size;
    int                 _index;
    // For checkpoints, we want the all the data
    struct mallinfo     _checkpoint[2];
};

} // end of gnash namespace

#endif // end of HAVE_MALLINFO

// end of __MEMORY_H__
#endif

// Local Variables:
// mode: C++
// indent-tabs-mode: t
// End: