mirror of
https://github.com/dart-lang/sdk
synced 2024-09-16 03:07:49 +00:00
[vm, service] Represent pool immediates as JSON strings instead of numbers to work around JS representation limits.
TEST=ci Bug: https://github.com/dart-lang/sdk/issues/53093 Change-Id: Ie3c734cbc298ef2f926b329c7636a3417aa7fc34 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/317800 Commit-Queue: Ryan Macnak <rmacnak@google.com> Reviewed-by: Ben Konyi <bkonyi@google.com>
This commit is contained in:
parent
d9a5f25e6d
commit
b253857750
|
@ -136,15 +136,9 @@ class ObjectPoolViewElement extends CustomElement implements Renderable {
|
|||
case M.ObjectPoolEntryKind.object:
|
||||
return [anyRef(_isolate, entry.asObject, _objects, queue: _r.queue)];
|
||||
case M.ObjectPoolEntryKind.immediate:
|
||||
return [
|
||||
new SpanElement()
|
||||
..text = 'Immediate 0x${entry.asInteger!.toRadixString(16)}'
|
||||
];
|
||||
return [new SpanElement()..text = 'Immediate ${entry.asImmediate!}'];
|
||||
case M.ObjectPoolEntryKind.nativeEntry:
|
||||
return [
|
||||
new SpanElement()
|
||||
..text = 'NativeEntry 0x${entry.asInteger!.toRadixString(16)}'
|
||||
];
|
||||
return [new SpanElement()..text = 'NativeEntry ${entry.asImmediate!}'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,5 +18,5 @@ abstract class ObjectPoolEntry {
|
|||
int get offset;
|
||||
ObjectPoolEntryKind get kind;
|
||||
ObjectRef? get asObject;
|
||||
int? get asInteger;
|
||||
String? get asImmediate;
|
||||
}
|
||||
|
|
|
@ -4010,7 +4010,7 @@ class ObjectPoolEntry implements M.ObjectPoolEntry {
|
|||
final int offset;
|
||||
final M.ObjectPoolEntryKind kind;
|
||||
final M.ObjectRef? asObject;
|
||||
final int? asInteger;
|
||||
final String? asImmediate;
|
||||
|
||||
factory ObjectPoolEntry(map) {
|
||||
M.ObjectPoolEntryKind kind = stringToObjectPoolEntryKind(map['kind']);
|
||||
|
@ -4020,15 +4020,15 @@ class ObjectPoolEntry implements M.ObjectPoolEntry {
|
|||
case M.ObjectPoolEntryKind.object:
|
||||
return new ObjectPoolEntry._fromObject(map['value'], offset);
|
||||
default:
|
||||
return new ObjectPoolEntry._fromInteger(kind, map['value'], offset);
|
||||
return new ObjectPoolEntry._fromImmediate(kind, map['value'], offset);
|
||||
}
|
||||
}
|
||||
|
||||
ObjectPoolEntry._fromObject(this.asObject, this.offset)
|
||||
: kind = M.ObjectPoolEntryKind.object,
|
||||
asInteger = null;
|
||||
asImmediate = null;
|
||||
|
||||
ObjectPoolEntry._fromInteger(this.kind, this.asInteger, this.offset)
|
||||
ObjectPoolEntry._fromImmediate(this.kind, this.asImmediate, this.offset)
|
||||
: asObject = null;
|
||||
}
|
||||
|
||||
|
|
|
@ -828,12 +828,12 @@ void ObjectPool::PrintJSONImpl(JSONStream* stream, bool ref) const {
|
|||
case ObjectPool::EntryType::kImmediate:
|
||||
imm = RawValueAt(i);
|
||||
jsentry.AddProperty("kind", "Immediate");
|
||||
jsentry.AddProperty64("value", imm);
|
||||
jsentry.AddPropertyF("value", "0x%" Px, imm);
|
||||
break;
|
||||
case ObjectPool::EntryType::kNativeFunction:
|
||||
imm = RawValueAt(i);
|
||||
jsentry.AddProperty("kind", "NativeFunction");
|
||||
jsentry.AddProperty64("value", imm);
|
||||
jsentry.AddPropertyF("value", "0x%" Px, imm);
|
||||
break;
|
||||
default:
|
||||
UNREACHABLE();
|
||||
|
|
Loading…
Reference in a new issue