| Index: tools/tickprocessor.js
|
| diff --git a/tools/tickprocessor.js b/tools/tickprocessor.js
|
| index db2f3c9b9048242a305778789ba6a4d3b6644e63..8fc912a1262e90d90e99318df7c44af8b632d4b3 100644
|
| --- a/tools/tickprocessor.js
|
| +++ b/tools/tickprocessor.js
|
| @@ -57,10 +57,23 @@ function readFile(fileName) {
|
| }
|
|
|
|
|
| +/**
|
| + * Parser for dynamic code optimization state.
|
| + */
|
| +function parseState(s) {
|
| + switch (s) {
|
| + case "": return Profile.CodeState.COMPILED;
|
| + case "~": return Profile.CodeState.OPTIMIZABLE;
|
| + case "*": return Profile.CodeState.OPTIMIZED;
|
| + }
|
| + throw new Error("unknown code state: " + s);
|
| +}
|
| +
|
| +
|
| function SnapshotLogProcessor() {
|
| LogReader.call(this, {
|
| 'code-creation': {
|
| - parsers: [null, parseInt, parseInt, null],
|
| + parsers: [null, parseInt, parseInt, null, 'var-args'],
|
| processor: this.processCodeCreation },
|
| 'code-move': { parsers: [parseInt, parseInt],
|
| processor: this.processCodeMove },
|
| @@ -69,6 +82,7 @@ function SnapshotLogProcessor() {
|
| 'function-creation': null,
|
| 'function-move': null,
|
| 'function-delete': null,
|
| + 'sfi-move': null,
|
| 'snapshot-pos': { parsers: [parseInt, parseInt],
|
| processor: this.processSnapshotPosition }});
|
|
|
| @@ -93,8 +107,14 @@ inherits(SnapshotLogProcessor, LogReader);
|
|
|
|
|
| SnapshotLogProcessor.prototype.processCodeCreation = function(
|
| - type, start, size, name) {
|
| - var entry = this.profile_.addCode(type, name, start, size);
|
| + type, start, size, name, maybe_func) {
|
| + if (maybe_func.length) {
|
| + var funcAddr = parseInt(maybe_func[0]);
|
| + var state = parseState(maybe_func[1]);
|
| + this.profile_.addFuncCode(type, name, start, size, funcAddr, state);
|
| + } else {
|
| + this.profile_.addCode(type, name, start, size);
|
| + }
|
| };
|
|
|
|
|
| @@ -131,18 +151,14 @@ function TickProcessor(
|
| 'shared-library': { parsers: [null, parseInt, parseInt],
|
| processor: this.processSharedLibrary },
|
| 'code-creation': {
|
| - parsers: [null, parseInt, parseInt, null],
|
| + parsers: [null, parseInt, parseInt, null, 'var-args'],
|
| processor: this.processCodeCreation },
|
| 'code-move': { parsers: [parseInt, parseInt],
|
| processor: this.processCodeMove },
|
| 'code-delete': { parsers: [parseInt],
|
| processor: this.processCodeDelete },
|
| - 'function-creation': { parsers: [parseInt, parseInt],
|
| - processor: this.processFunctionCreation },
|
| - 'function-move': { parsers: [parseInt, parseInt],
|
| + 'sfi-move': { parsers: [parseInt, parseInt],
|
| processor: this.processFunctionMove },
|
| - 'function-delete': { parsers: [parseInt],
|
| - processor: this.processFunctionDelete },
|
| 'snapshot-pos': { parsers: [parseInt, parseInt],
|
| processor: this.processSnapshotPosition },
|
| 'tick': { parsers: [parseInt, parseInt, parseInt, parseInt, 'var-args'],
|
| @@ -155,6 +171,9 @@ function TickProcessor(
|
| processor: this.processJSProducer },
|
| // Ignored events.
|
| 'profiler': null,
|
| + 'function-creation': null,
|
| + 'function-move': null,
|
| + 'function-delete': null,
|
| 'heap-sample-stats': null,
|
| 'heap-sample-item': null,
|
| 'heap-js-cons-item': null,
|
| @@ -285,9 +304,15 @@ TickProcessor.prototype.processSharedLibrary = function(
|
|
|
|
|
| TickProcessor.prototype.processCodeCreation = function(
|
| - type, start, size, name) {
|
| + type, start, size, name, maybe_func) {
|
| name = this.deserializedEntriesNames_[start] || name;
|
| - var entry = this.profile_.addCode(type, name, start, size);
|
| + if (maybe_func.length) {
|
| + var funcAddr = parseInt(maybe_func[0]);
|
| + var state = parseState(maybe_func[1]);
|
| + this.profile_.addFuncCode(type, name, start, size, funcAddr, state);
|
| + } else {
|
| + this.profile_.addCode(type, name, start, size);
|
| + }
|
| };
|
|
|
|
|
| @@ -301,19 +326,8 @@ TickProcessor.prototype.processCodeDelete = function(start) {
|
| };
|
|
|
|
|
| -TickProcessor.prototype.processFunctionCreation = function(
|
| - functionAddr, codeAddr) {
|
| - this.profile_.addCodeAlias(functionAddr, codeAddr);
|
| -};
|
| -
|
| -
|
| TickProcessor.prototype.processFunctionMove = function(from, to) {
|
| - this.profile_.safeMoveDynamicCode(from, to);
|
| -};
|
| -
|
| -
|
| -TickProcessor.prototype.processFunctionDelete = function(start) {
|
| - this.profile_.safeDeleteDynamicCode(start);
|
| + this.profile_.moveFunc(from, to);
|
| };
|
|
|
|
|
| @@ -342,11 +356,6 @@ TickProcessor.prototype.processTick = function(pc, sp, func, vmState, stack) {
|
| var funcEntry = this.profile_.findEntry(func);
|
| if (!funcEntry || !funcEntry.isJSFunction || !funcEntry.isJSFunction()) {
|
| func = 0;
|
| - } else {
|
| - var currEntry = this.profile_.findEntry(pc);
|
| - if (!currEntry || !currEntry.isJSFunction || currEntry.isJSFunction()) {
|
| - func = 0;
|
| - }
|
| }
|
| }
|
|
|
|
|