Skip to content

Commit bcd2725

Browse files
Revert accidental r9229 and r9230
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@9231 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
1 parent 42d4ae4 commit bcd2725

File tree

4 files changed

+45
-54
lines changed

4 files changed

+45
-54
lines changed

test/mjsunit/tools/codemap.js

-14
Original file line numberDiff line numberDiff line change
@@ -138,20 +138,6 @@ function assertNoEntry(codeMap, addr) {
138138
})();
139139

140140

141-
(function testDeadCodeCleanups() {
142-
var codeMap = new CodeMap();
143-
codeMap.addCode(0x1500, newCodeEntry(0x200, 'code1'));
144-
codeMap.addCode(0x1700, newCodeEntry(0x100, 'code2'));
145-
assertEntry(codeMap, 'code1', 0x1500);
146-
assertEntry(codeMap, 'code2', 0x1700);
147-
codeMap.moveCode(0x1500, 0x1700); // Deprecate code2.
148-
assertEntry(codeMap, 'code1', 0x1700);
149-
codeMap.addCode(0x1750, newCodeEntry(0x100, 'code3'));
150-
assertNoEntry(codeMap, 0x1700);
151-
assertEntry(codeMap, 'code3', 0x1750);
152-
})();
153-
154-
155141
(function testDynamicNamesDuplicates() {
156142
var codeMap = new CodeMap();
157143
// Code entries with same names but different addresses.

tools/codemap.js

-31
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,6 @@ CodeMap.PAGE_SIZE =
7979
* @param {CodeMap.CodeEntry} codeEntry Code entry object.
8080
*/
8181
CodeMap.prototype.addCode = function(start, codeEntry) {
82-
this.removeAllCoveredNodes_(this.dynamics_, start, start + codeEntry.size);
8382
this.dynamics_.insert(start, codeEntry);
8483
};
8584

@@ -92,9 +91,7 @@ CodeMap.prototype.addCode = function(start, codeEntry) {
9291
* @param {number} to The destination address.
9392
*/
9493
CodeMap.prototype.moveCode = function(from, to) {
95-
if (from === to) return;
9694
var removedNode = this.dynamics_.remove(from);
97-
this.removeAllCoveredNodes_(this.dynamics_, to, to + removedNode.value.size);
9895
this.dynamics_.insert(to, removedNode.value);
9996
};
10097

@@ -154,26 +151,6 @@ CodeMap.prototype.isAddressBelongsTo_ = function(addr, node) {
154151
};
155152

156153

157-
/**
158-
* @private
159-
*/
160-
CodeMap.prototype.findAllCoveredNodes_ = function(tree, start, end) {
161-
var result = [];
162-
var addr = end - 1;
163-
while (addr >= start) {
164-
var node = tree.findGreatestLessThan(addr);
165-
if (!node) break;
166-
var start2 = node.key, end2 = node.key + node.value.size;
167-
if (start2 < end && start < end2) {
168-
// Node overlaps with the interval given
169-
result.push(node);
170-
}
171-
addr = node.key - 1;
172-
}
173-
return result;
174-
};
175-
176-
177154
/**
178155
* @private
179156
*/
@@ -257,14 +234,6 @@ CodeMap.prototype.getAllLibrariesEntries = function() {
257234
};
258235

259236

260-
CodeMap.prototype.removeAllCoveredNodes_ = function(tree, start, end) {
261-
var covered = this.findAllCoveredNodes_(tree, start, end);
262-
for (var i = 0, l = covered.length; i < l; ++i) {
263-
tree.remove(covered[i].key);
264-
}
265-
};
266-
267-
268237
/**
269238
* Creates a code entry object.
270239
*

tools/profile.js

+24-7
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,8 @@ Profile.prototype.skipThisFunction = function(name) {
5858
*/
5959
Profile.Operation = {
6060
MOVE: 0,
61-
TICK: 1
61+
DELETE: 1,
62+
TICK: 2
6263
};
6364

6465

@@ -162,13 +163,15 @@ Profile.prototype.addFuncCode = function(
162163
func.name = name;
163164
}
164165
var entry = this.codeMap_.findDynamicEntryByStartAddress(start);
165-
if (entry && entry.size === size && entry.func === func) {
166-
// Entry state has changed.
167-
entry.state = state;
168-
return entry;
166+
if (entry) {
167+
if (entry.size === size && entry.func === func) {
168+
// Entry state has changed.
169+
entry.state = state;
170+
}
171+
} else {
172+
entry = new Profile.DynamicFuncCodeEntry(size, type, func, state);
173+
this.codeMap_.addCode(start, entry);
169174
}
170-
entry = new Profile.DynamicFuncCodeEntry(size, type, func, state);
171-
this.codeMap_.addCode(start, entry);
172175
return entry;
173176
};
174177

@@ -188,6 +191,20 @@ Profile.prototype.moveCode = function(from, to) {
188191
};
189192

190193

194+
/**
195+
* Reports about deletion of a dynamic code entry.
196+
*
197+
* @param {number} start Starting address.
198+
*/
199+
Profile.prototype.deleteCode = function(start) {
200+
try {
201+
this.codeMap_.deleteCode(start);
202+
} catch (e) {
203+
this.handleUnknownCode(Profile.Operation.DELETE, start);
204+
}
205+
};
206+
207+
191208
/**
192209
* Reports about moving of a dynamic code entry.
193210
*

tools/tickprocessor.js

+21-2
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,8 @@ function SnapshotLogProcessor() {
7777
processor: this.processCodeCreation },
7878
'code-move': { parsers: [parseInt, parseInt],
7979
processor: this.processCodeMove },
80-
'code-delete': null,
80+
'code-delete': { parsers: [parseInt],
81+
processor: this.processCodeDelete },
8182
'function-creation': null,
8283
'function-move': null,
8384
'function-delete': null,
@@ -92,6 +93,10 @@ function SnapshotLogProcessor() {
9293
print('Snapshot: Code move event for unknown code: 0x' +
9394
addr.toString(16));
9495
break;
96+
case op.DELETE:
97+
print('Snapshot: Code delete event for unknown code: 0x' +
98+
addr.toString(16));
99+
break;
95100
}
96101
};
97102

@@ -118,6 +123,11 @@ SnapshotLogProcessor.prototype.processCodeMove = function(from, to) {
118123
};
119124

120125

126+
SnapshotLogProcessor.prototype.processCodeDelete = function(start) {
127+
this.profile_.deleteCode(start);
128+
};
129+
130+
121131
SnapshotLogProcessor.prototype.processSnapshotPosition = function(addr, pos) {
122132
this.serializedEntries_[pos] = this.profile_.findEntry(addr);
123133
};
@@ -145,7 +155,8 @@ function TickProcessor(
145155
processor: this.processCodeCreation },
146156
'code-move': { parsers: [parseInt, parseInt],
147157
processor: this.processCodeMove },
148-
'code-delete': null,
158+
'code-delete': { parsers: [parseInt],
159+
processor: this.processCodeDelete },
149160
'sfi-move': { parsers: [parseInt, parseInt],
150161
processor: this.processFunctionMove },
151162
'snapshot-pos': { parsers: [parseInt, parseInt],
@@ -184,6 +195,9 @@ function TickProcessor(
184195
case op.MOVE:
185196
print('Code move event for unknown code: 0x' + addr.toString(16));
186197
break;
198+
case op.DELETE:
199+
print('Code delete event for unknown code: 0x' + addr.toString(16));
200+
break;
187201
case op.TICK:
188202
// Only unknown PCs (the first frame) are reported as unaccounted,
189203
// otherwise tick balance will be corrupted (this behavior is compatible
@@ -304,6 +318,11 @@ TickProcessor.prototype.processCodeMove = function(from, to) {
304318
};
305319

306320

321+
TickProcessor.prototype.processCodeDelete = function(start) {
322+
this.profile_.deleteCode(start);
323+
};
324+
325+
307326
TickProcessor.prototype.processFunctionMove = function(from, to) {
308327
this.profile_.moveFunc(from, to);
309328
};

0 commit comments

Comments
 (0)