Skip to content

Commit f9cedb6

Browse files
dcharkescommit-bot@chromium.org
authored andcommitted
[vm/ffi] Fix source information in generated AST nodes
Fixes: flutter/flutter#39916 Fix verified by manually generating the assembly snapshot and seeing the offending DWARF output be fixed. Old DWARF: ``` .string "" // Empty filename in file table. .uleb128 0 .uleb128 0 .uleb128 0 ``` New DWARF: ``` .string "dart:ffi/struct.dart" .uleb128 0 .uleb128 0 .uleb128 0 ``` Change-Id: I60b6ff349deb70148c1a475b242c99e7c582d8c4 Cq-Include-Trybots: luci.dart.try:vm-ffi-android-debug-arm-try,vm-ffi-android-debug-arm64-try Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/126650 Commit-Queue: Daco Harkes <[email protected]> Auto-Submit: Daco Harkes <[email protected]> Reviewed-by: Martin Kustermann <[email protected]>
1 parent 4d95ec1 commit f9cedb6

File tree

3 files changed

+8
-3
lines changed

3 files changed

+8
-3
lines changed

pkg/front_end/testcases/general/ffi_sample.dart.strong.transformed.expect

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import "package:ffi/ffi.dart";
1010
@#C3
1111
class Coordinate extends ffi::Struct {
1212
@#C3
13-
static final field core::int* #sizeOf = (#C6).{core::List::[]}(ffi::_abi())/* from null */;
13+
static final field core::int* #sizeOf = (#C6).{core::List::[]}(ffi::_abi());
1414
@#C3
1515
constructor #fromPointer(dynamic #pointer) → dynamic
1616
: super ffi::Struct::_fromPointer(#pointer)

pkg/vm/lib/transformations/ffi_definitions.dart

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,9 @@ class _FfiDefinitionTransformer extends FfiTransformer {
217217
name: Name("#fromPointer"),
218218
initializers: [
219219
SuperInitializer(structFromPointer, Arguments([VariableGet(pointer)]))
220-
]);
220+
],
221+
fileUri: node.fileUri)
222+
..fileOffset = node.fileOffset;
221223
_makeEntryPoint(ctor);
222224
node.addMember(ctor);
223225
}
@@ -378,7 +380,9 @@ class _FfiDefinitionTransformer extends FfiTransformer {
378380
isStatic: true,
379381
isFinal: true,
380382
initializer: _runtimeBranchOnLayout(sizes),
381-
type: InterfaceType(intClass, Nullability.legacy));
383+
type: InterfaceType(intClass, Nullability.legacy),
384+
fileUri: struct.fileUri)
385+
..fileOffset = struct.fileOffset;
382386
_makeEntryPoint(sizeOf);
383387
struct.addMember(sizeOf);
384388
}

runtime/vm/dwarf.cc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -635,6 +635,7 @@ void Dwarf::WriteLines() {
635635
for (intptr_t i = 0; i < scripts_.length(); i++) {
636636
const Script& script = *(scripts_[i]);
637637
uri = script.url();
638+
RELEASE_ASSERT(strlen(uri.ToCString()) != 0);
638639
string(uri.ToCString()); // NOLINT
639640
uleb128(0); // Include directory index.
640641
uleb128(0); // File modification time.

0 commit comments

Comments
 (0)