Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2483)

Unified Diff: runtime/observatory/lib/src/service/object.dart

Issue 1439893002: - Annotate instructions that load objects from the ObjectPool or Thread. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/observatory/lib/src/elements/service_ref.html ('k') | runtime/vm/disassembler.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/observatory/lib/src/service/object.dart
diff --git a/runtime/observatory/lib/src/service/object.dart b/runtime/observatory/lib/src/service/object.dart
index 7e1b3d2f48f1bba91a3abf012a327942b481bad8..f92b299012a32960da64bd4f0eb7486651608f0a 100644
--- a/runtime/observatory/lib/src/service/object.dart
+++ b/runtime/observatory/lib/src/service/object.dart
@@ -2568,6 +2568,9 @@ class ServiceFunction extends HeapObject with Coverage {
@observable Code unoptimizedCode;
@observable bool isOptimizable;
@observable bool isInlinable;
+ @observable bool hasIntrinsic;
+ @observable bool isRecognized;
+ @observable bool isNative;
@observable FunctionKind kind;
@observable int deoptimizations;
@observable String qualifiedName;
@@ -2608,6 +2611,9 @@ class ServiceFunction extends HeapObject with Coverage {
qualifiedName = name;
}
+ hasIntrinsic = map['_intrinsic'];
+ isNative = map['_native'];
+
if (mapIsRef) {
return;
}
@@ -2619,6 +2625,7 @@ class ServiceFunction extends HeapObject with Coverage {
code = map['code'];
isOptimizable = map['_optimizable'];
isInlinable = map['_inlinable'];
+ isRecognized = map['_recognized'];
unoptimizedCode = map['_unoptimizedCode'];
deoptimizations = map['_deoptimizations'];
usageCounter = map['_usageCounter'];
@@ -3413,11 +3420,16 @@ class CodeInstruction extends Observable {
@observable final int pcOffset;
@observable final String machine;
@observable final String human;
+ @observable final ServiceObject object;
@observable CodeInstruction jumpTarget;
@reflectable List<PcDescriptor> descriptors =
new ObservableList<PcDescriptor>();
- CodeInstruction(this.address, this.pcOffset, this.machine, this.human);
+ CodeInstruction(this.address,
+ this.pcOffset,
+ this.machine,
+ this.human,
+ this.object);
@reflectable bool get isComment => address == 0;
@reflectable bool get hasDescriptors => descriptors.length > 0;
@@ -3508,7 +3520,10 @@ class Code extends HeapObject {
@observable ServiceObject objectPool;
@observable ServiceFunction function;
@observable Script script;
- @observable bool isOptimized = false;
+ @observable bool isOptimized;
+ @observable bool hasIntrinsic;
+ @observable bool isNative;
+
@reflectable int startAddress = 0;
@reflectable int endAddress = 0;
@reflectable final instructions = new ObservableList<CodeInstruction>();
@@ -3578,6 +3593,8 @@ class Code extends HeapObject {
vmName = (m.containsKey('_vmName') ? m['_vmName'] : name);
isOptimized = m['_optimized'];
kind = CodeKind.fromString(m['kind']);
+ hasIntrinsic = m['_intrinsic'];
+ isNative = m['_native'];
if (mapIsRef) {
return;
}
@@ -3657,20 +3674,25 @@ class Code extends HeapObject {
instructions.clear();
instructionsByAddressOffset = new List(endAddress - startAddress);
- assert((disassembly.length % 3) == 0);
- for (var i = 0; i < disassembly.length; i += 3) {
+ assert((disassembly.length % 4) == 0);
+ for (var i = 0; i < disassembly.length; i += 4) {
var address = 0; // Assume code comment.
var machine = disassembly[i + 1];
var human = disassembly[i + 2];
+ var object = disassembly[i + 3];
+ if (object != null) {
+ object = new ServiceObject._fromMap(owner, object);
+ }
var pcOffset = 0;
- if (disassembly[i] != '') {
+ if (disassembly[i] != null) {
// Not a code comment, extract address.
address = int.parse(disassembly[i], radix:16);
pcOffset = address - startAddress;
}
- var instruction = new CodeInstruction(address, pcOffset, machine, human);
+ var instruction =
+ new CodeInstruction(address, pcOffset, machine, human, object);
instructions.add(instruction);
- if (disassembly[i] != '') {
+ if (disassembly[i] != null) {
// Not a code comment.
instructionsByAddressOffset[pcOffset] = instruction;
}
« no previous file with comments | « runtime/observatory/lib/src/elements/service_ref.html ('k') | runtime/vm/disassembler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698