96 _flags = F_Supported;
97 }
98 else {
99 _flags = F_None;
100 }
101 }
102 else {
103 sprintf(_name, "%s.%s", prefix, name);
104 // set the F_Supported flag based on the given namespace.
105 if (PerfDataManager::is_stable_supported(ns) ||
106 PerfDataManager::is_unstable_supported(ns)) {
107 _flags = F_Supported;
108 }
109 else {
110 _flags = F_None;
111 }
112 }
113 }
114
115 PerfData::~PerfData() {
116 if (_name != NULL) {
117 FREE_C_HEAP_ARRAY(char, _name);
118 }
119 if (is_on_c_heap()) {
120 FREE_C_HEAP_ARRAY(PerfDataEntry, _pdep);
121 }
122 }
123
124 void PerfData::create_entry(BasicType dtype, size_t dsize, size_t vlen) {
125
126 size_t dlen = vlen==0 ? 1 : vlen;
127
128 size_t namelen = strlen(name()) + 1; // include null terminator
129 size_t size = sizeof(PerfDataEntry) + namelen;
130 size_t pad_length = ((size % dsize) == 0) ? 0 : dsize - (size % dsize);
131 size += pad_length;
132 size_t data_start = size;
133 size += (dsize * dlen);
134
135 // align size to assure allocation in units of 8 bytes
136 int align = sizeof(jlong) - 1;
137 size = ((size + align) & ~align);
138 char* psmp = PerfMemory::alloc(size);
|
96 _flags = F_Supported;
97 }
98 else {
99 _flags = F_None;
100 }
101 }
102 else {
103 sprintf(_name, "%s.%s", prefix, name);
104 // set the F_Supported flag based on the given namespace.
105 if (PerfDataManager::is_stable_supported(ns) ||
106 PerfDataManager::is_unstable_supported(ns)) {
107 _flags = F_Supported;
108 }
109 else {
110 _flags = F_None;
111 }
112 }
113 }
114
115 PerfData::~PerfData() {
116 FREE_C_HEAP_ARRAY(char, _name);
117 if (is_on_c_heap()) {
118 FREE_C_HEAP_ARRAY(PerfDataEntry, _pdep);
119 }
120 }
121
122 void PerfData::create_entry(BasicType dtype, size_t dsize, size_t vlen) {
123
124 size_t dlen = vlen==0 ? 1 : vlen;
125
126 size_t namelen = strlen(name()) + 1; // include null terminator
127 size_t size = sizeof(PerfDataEntry) + namelen;
128 size_t pad_length = ((size % dsize) == 0) ? 0 : dsize - (size % dsize);
129 size += pad_length;
130 size_t data_start = size;
131 size += (dsize * dlen);
132
133 // align size to assure allocation in units of 8 bytes
134 int align = sizeof(jlong) - 1;
135 size = ((size + align) & ~align);
136 char* psmp = PerfMemory::alloc(size);
|