[dart2wasm] Allow deferred loading partitioning to work on getters/setters separately
The CL changes a few things
* do not use instance field references in partitioning (they do
not have a storage location - compared to static fields
which need to be placed into a specific module)
* allow static getters and setters to possibly reside in different
modules
* separate concept of static field initializer function vs static
field storage (storage needed for getter&setter, init function
only for getter)
* fix `reference.isSetter` to also check for `isTypeCheckerReference`
* do not create class->method dependencies on abstract instance
methods
* run partitioning tests with compiler assertions
Change-Id: I61231b912c3f73f67a4d476f35113859694a80c7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/485441
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Nate Biggs <natebiggs@google.com>
This commit is contained in:
committed by
Commit Queue
parent
86232e2c3a
commit
95120a02b3
@@ -4108,8 +4108,8 @@ class StaticFieldImplicitAccessorCodeGenerator extends AstCodeGenerator {
|
||||
final globalDefinition =
|
||||
translator.dartGlobals.getDefinitionForStaticField(field);
|
||||
if (isImplicitGetter) {
|
||||
final initFunction =
|
||||
translator.functions.getExistingFunction(field.fieldReference);
|
||||
final initFunction = translator.functions
|
||||
.getExistingFunction(field.staticFieldInitializer);
|
||||
_generateGetter(globalDefinition, initFunction);
|
||||
} else {
|
||||
_generateSetter(globalDefinition);
|
||||
|
||||
@@ -80,16 +80,25 @@ class DependenciesCollector {
|
||||
return deps;
|
||||
}
|
||||
if (node is Field) {
|
||||
node.initializer?.accept(collector);
|
||||
if (node.fieldReference != reference) {
|
||||
collector.addReference(node.fieldReference);
|
||||
}
|
||||
if (node.getterReference != reference) {
|
||||
collector.addReference(node.getterReference);
|
||||
}
|
||||
if (node.setterReference case final setterReference?) {
|
||||
if (setterReference != reference) {
|
||||
collector.addReference(setterReference);
|
||||
if (node.isInstanceMember) {
|
||||
// Instance field getters/setters have no dependencies: The field
|
||||
// initializers are initialized at constructor invocation time not at
|
||||
// field access time. The field itself doesn't have a storage location
|
||||
// (like a static field).
|
||||
assert(node.getterReference == reference ||
|
||||
node.hasSetter && node.setterReference == reference);
|
||||
} else {
|
||||
if (node.getterReference == reference) {
|
||||
// A static getter may invoke the initializer and accesses the storage
|
||||
// location of the field.
|
||||
collector.addReference(node.fieldReference);
|
||||
node.initializer?.accept(collector);
|
||||
} else if (node.setterReference == reference) {
|
||||
// A static setter only accesses the storage location of the field.
|
||||
collector.addReference(node.fieldReference);
|
||||
} else {
|
||||
assert(node.fieldReference == reference);
|
||||
// The field storage itself has no dependencies.
|
||||
}
|
||||
}
|
||||
return deps;
|
||||
@@ -127,7 +136,7 @@ class DependenciesCollector {
|
||||
deps.references.add(superReference);
|
||||
}
|
||||
for (final m in klass.members) {
|
||||
if (m.isInstanceMember) {
|
||||
if (m.isInstanceMember && !m.isAbstract) {
|
||||
if (m is Field) {
|
||||
if (!_devirtualizionOracle
|
||||
.isAlwaysStaticallyDispatchedTo(m.getterReference)) {
|
||||
|
||||
@@ -309,7 +309,16 @@ Set<Reference> findWasmRoots(CoreTypes coreTypes, Component component) {
|
||||
for (final klass in library.classes) {
|
||||
if (check(klass)) exports.add(klass.reference);
|
||||
for (final member in klass.members) {
|
||||
if (check(member)) exports.add(member.reference);
|
||||
if (check(member)) {
|
||||
if (member is Field) {
|
||||
exports.add(member.getterReference);
|
||||
if (member.hasSetter) {
|
||||
exports.add(member.setterReference!);
|
||||
}
|
||||
} else {
|
||||
exports.add(member.reference);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -282,7 +282,7 @@ class FunctionCollector {
|
||||
if (target.isImplicitSetter) {
|
||||
return '$memberName= implicit setter';
|
||||
}
|
||||
if (target.isFieldInitializer) {
|
||||
if (target.isStaticFieldInitializer) {
|
||||
return '$memberName field initializer';
|
||||
}
|
||||
return '$memberName implicit getter';
|
||||
@@ -615,15 +615,12 @@ w.FunctionType _makeFunctionType(
|
||||
Member member = target.asMember;
|
||||
|
||||
if (member is Field && !member.isInstanceMember) {
|
||||
final isGetter = target.isImplicitGetter;
|
||||
final isSetter = target.isImplicitSetter;
|
||||
if (isGetter || isSetter) {
|
||||
final fieldType = translator.translateTypeOfField(member);
|
||||
if (isGetter) {
|
||||
return translator.typesBuilder.defineFunction(const [], [fieldType]);
|
||||
}
|
||||
return translator.typesBuilder.defineFunction([fieldType], const []);
|
||||
final fieldType = translator.translateTypeOfField(member);
|
||||
if (target.isImplicitGetter || target.isStaticFieldInitializer) {
|
||||
return translator.typesBuilder.defineFunction(const [], [fieldType]);
|
||||
}
|
||||
assert(target.isImplicitSetter);
|
||||
return translator.typesBuilder.defineFunction([fieldType], const []);
|
||||
}
|
||||
|
||||
// Translate types differently for imports and exports.
|
||||
|
||||
@@ -7,6 +7,7 @@ import 'package:kernel/ast.dart';
|
||||
import 'package:wasm_builder/wasm_builder.dart' as w;
|
||||
|
||||
import 'code_generator.dart' show EagerStaticFieldInitializerCodeGenerator;
|
||||
import 'reference_extensions.dart';
|
||||
import 'table_based_globals.dart';
|
||||
import 'translator.dart';
|
||||
import 'util.dart' as util;
|
||||
@@ -170,7 +171,7 @@ class DartGlobals {
|
||||
}
|
||||
|
||||
// Add initializer function to the compilation queue.
|
||||
translator.functions.getFunction(field.fieldReference);
|
||||
translator.functions.getFunction(field.staticFieldInitializer);
|
||||
|
||||
// We will have to initialize the global lazily, meaning each access will
|
||||
// check if it's initialized and if not, cause initialization.
|
||||
|
||||
@@ -114,15 +114,36 @@ class ModuleOutputData {
|
||||
ModuleMetadata moduleForReference(Reference reference) {
|
||||
// Turn artificial [Reference]s used in dart2wasm to the normal Kernel AST
|
||||
// [Reference]s.
|
||||
if (reference.node is Member &&
|
||||
(reference.isTypeCheckerReference ||
|
||||
reference.isCheckedEntryReference ||
|
||||
reference.isUncheckedEntryReference ||
|
||||
reference.isBodyReference ||
|
||||
reference.isInitializerReference ||
|
||||
reference.isConstructorBodyReference ||
|
||||
reference.isTearOffReference)) {
|
||||
reference = reference.asMember.reference;
|
||||
final node = reference.node;
|
||||
if (node is Field) {
|
||||
if (reference.isGetter) {
|
||||
reference = node.getterReference;
|
||||
} else if (reference.isSetter) {
|
||||
reference = node.setterReference!;
|
||||
} else if (reference.isStaticFieldInitializer) {
|
||||
assert(node.isStatic);
|
||||
reference = node.getterReference;
|
||||
} else {
|
||||
assert(reference == node.fieldReference);
|
||||
}
|
||||
} else if (node is Constructor) {
|
||||
if (reference.isInitializerReference ||
|
||||
reference.isConstructorBodyReference) {
|
||||
reference = node.reference;
|
||||
} else {
|
||||
assert(reference == node.reference);
|
||||
}
|
||||
} else {
|
||||
node as Procedure;
|
||||
if (reference.isTypeCheckerReference ||
|
||||
reference.isCheckedEntryReference ||
|
||||
reference.isUncheckedEntryReference ||
|
||||
reference.isBodyReference ||
|
||||
reference.isTearOffReference) {
|
||||
reference = reference.asMember.reference;
|
||||
} else {
|
||||
assert(reference == reference.asMember.reference);
|
||||
}
|
||||
}
|
||||
|
||||
// We may have fine-grained partitioning of the application.
|
||||
|
||||
@@ -18,20 +18,13 @@ extension GetterSetterReference on Reference {
|
||||
if (member.setterReference == this) return true;
|
||||
if (member.isInstanceMember) {
|
||||
return _isUncheckedEntrySetterReference ||
|
||||
_isCheckedEntrySetterReference;
|
||||
_isCheckedEntrySetterReference ||
|
||||
isTypeCheckerReference;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool get isFieldInitializer {
|
||||
Member member = asMember;
|
||||
if (member is Field) {
|
||||
if (member.fieldReference == this) return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool get isGetter {
|
||||
Member member = asMember;
|
||||
return (member is Procedure && member.isGetter) || isImplicitGetter;
|
||||
@@ -49,6 +42,7 @@ extension GetterSetterReference on Reference {
|
||||
// do in plain kernel.
|
||||
|
||||
// Use Expandos to avoid keeping the procedure alive.
|
||||
final Expando<Reference> _staticFieldInitializerReference = Expando();
|
||||
final Expando<Reference> _tearOffReference = Expando();
|
||||
final Expando<Reference> _typeCheckerReference = Expando();
|
||||
final Expando<Reference> _checkedEntryReferences = Expando();
|
||||
@@ -58,6 +52,9 @@ final Expando<Reference> _initializerReference = Expando();
|
||||
final Expando<Reference> _constructorBodyReference = Expando();
|
||||
|
||||
extension CustomReference on Member {
|
||||
Reference get staticFieldInitializer =>
|
||||
_staticFieldInitializerReference[this] ??= Reference()..node = this;
|
||||
|
||||
Reference get tearOffReference =>
|
||||
_tearOffReference[this] ??= Reference()..node = this;
|
||||
|
||||
@@ -87,6 +84,9 @@ extension CustomReference on Member {
|
||||
}
|
||||
|
||||
extension IsCustomReference on Reference {
|
||||
bool get isStaticFieldInitializer =>
|
||||
_staticFieldInitializerReference[asMember] == this;
|
||||
|
||||
bool get isTearOffReference => _tearOffReference[asMember] == this;
|
||||
|
||||
bool get isTypeCheckerReference => _typeCheckerReference[asMember] == this;
|
||||
|
||||
@@ -42,8 +42,9 @@ class _EntityToIdMapper {
|
||||
if (reference.isCheckedEntryReference) return 6;
|
||||
if (reference.isUncheckedEntryReference) return 7;
|
||||
if (reference.isBodyReference) return 8;
|
||||
if (reference.isStaticFieldInitializer) return 9;
|
||||
assert(reference == reference.asMember.reference);
|
||||
return 9;
|
||||
return 10;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -88,7 +89,8 @@ class _IdToEntityMapper {
|
||||
if (flag == 6) return member.checkedEntryReference;
|
||||
if (flag == 7) return member.uncheckedEntryReference;
|
||||
if (flag == 8) return member.bodyReference;
|
||||
assert(flag == 9);
|
||||
if (flag == 9) return (member as Field).staticFieldInitializer;
|
||||
assert(flag == 10);
|
||||
return member.reference;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -75,6 +75,7 @@ Future testPartitionExpectation(String mainFile, ConstraintData? constraints,
|
||||
final result = await Process.run('/usr/bin/env', [
|
||||
'bash',
|
||||
'pkg/dart2wasm/tool/compile_benchmark',
|
||||
'--compiler-asserts',
|
||||
'--phases=cfe,tfa',
|
||||
'--enable-deferred-loading',
|
||||
'-o',
|
||||
|
||||
-3
@@ -28,15 +28,12 @@ Part 0
|
||||
- package:expect/expect.dart::Expect::@methods::package:expect/expect.dart::_truncateString
|
||||
- package:expect/expect.dart::ExpectException
|
||||
- package:expect/expect.dart::ExpectException::@constructors::
|
||||
- package:expect/expect.dart::ExpectException::@fields::message
|
||||
- package:expect/expect.dart::ExpectException::@fields::name
|
||||
- package:expect/expect.dart::ExpectException::@fields::package:expect/expect.dart::_getTestName
|
||||
- package:expect/expect.dart::ExpectException::@getters::message
|
||||
- package:expect/expect.dart::ExpectException::@getters::name
|
||||
- package:expect/expect.dart::ExpectException::@getters::package:expect/expect.dart::_getTestName
|
||||
- package:expect/expect.dart::ExpectException::@methods::package:expect/expect.dart::_kEmptyString
|
||||
- package:expect/expect.dart::ExpectException::@methods::toString
|
||||
- package:expect/expect.dart::ExpectException::@setters::package:expect/expect.dart::_getTestName
|
||||
- pkg/compiler/test/custom_split/data/fuse_with_and/libImport.dart::@methods::f_001_0
|
||||
- pkg/compiler/test/custom_split/data/fuse_with_and/libImport.dart::@methods::f_001_1
|
||||
- pkg/compiler/test/custom_split/data/fuse_with_and/libImport.dart::@methods::f_010_0
|
||||
|
||||
+9
-12
@@ -1,4 +1,13 @@
|
||||
Part 0
|
||||
ImportSet
|
||||
- pkg/compiler/test/custom_split/data/fuse_with_and/lib1.dart prefix: b1
|
||||
References
|
||||
- pkg/compiler/test/custom_split/data/fuse_with_and/libImport.dart::@methods::f_100_0
|
||||
- pkg/compiler/test/custom_split/data/fuse_with_and/lib_100_0.dart::@methods::g_100_0
|
||||
Constants
|
||||
- StringConstant("1000")
|
||||
|
||||
Part 1
|
||||
ImportSet
|
||||
- pkg/compiler/test/custom_split/data/fuse_with_and/lib1.dart prefix: b1
|
||||
- pkg/compiler/test/custom_split/data/fuse_with_and/lib2.dart prefix: b2
|
||||
@@ -28,15 +37,12 @@ Part 0
|
||||
- package:expect/expect.dart::Expect::@methods::package:expect/expect.dart::_truncateString
|
||||
- package:expect/expect.dart::ExpectException
|
||||
- package:expect/expect.dart::ExpectException::@constructors::
|
||||
- package:expect/expect.dart::ExpectException::@fields::message
|
||||
- package:expect/expect.dart::ExpectException::@fields::name
|
||||
- package:expect/expect.dart::ExpectException::@fields::package:expect/expect.dart::_getTestName
|
||||
- package:expect/expect.dart::ExpectException::@getters::message
|
||||
- package:expect/expect.dart::ExpectException::@getters::name
|
||||
- package:expect/expect.dart::ExpectException::@getters::package:expect/expect.dart::_getTestName
|
||||
- package:expect/expect.dart::ExpectException::@methods::package:expect/expect.dart::_kEmptyString
|
||||
- package:expect/expect.dart::ExpectException::@methods::toString
|
||||
- package:expect/expect.dart::ExpectException::@setters::package:expect/expect.dart::_getTestName
|
||||
- pkg/compiler/test/custom_split/data/fuse_with_and/libImport.dart::@methods::f_111_1
|
||||
- pkg/compiler/test/custom_split/data/fuse_with_and/libImport.dart::@methods::v
|
||||
Constants
|
||||
@@ -71,15 +77,6 @@ Part 0
|
||||
- StringConstant("equals")
|
||||
- StringConstant("radix")
|
||||
|
||||
Part 1
|
||||
ImportSet
|
||||
- pkg/compiler/test/custom_split/data/fuse_with_and/lib1.dart prefix: b1
|
||||
References
|
||||
- pkg/compiler/test/custom_split/data/fuse_with_and/libImport.dart::@methods::f_100_0
|
||||
- pkg/compiler/test/custom_split/data/fuse_with_and/lib_100_0.dart::@methods::g_100_0
|
||||
Constants
|
||||
- StringConstant("1000")
|
||||
|
||||
Part 2
|
||||
ImportSet
|
||||
- pkg/compiler/test/custom_split/data/fuse_with_and/lib2.dart prefix: b2
|
||||
|
||||
-3
@@ -28,15 +28,12 @@ Part 0
|
||||
- package:expect/expect.dart::Expect::@methods::package:expect/expect.dart::_truncateString
|
||||
- package:expect/expect.dart::ExpectException
|
||||
- package:expect/expect.dart::ExpectException::@constructors::
|
||||
- package:expect/expect.dart::ExpectException::@fields::message
|
||||
- package:expect/expect.dart::ExpectException::@fields::name
|
||||
- package:expect/expect.dart::ExpectException::@fields::package:expect/expect.dart::_getTestName
|
||||
- package:expect/expect.dart::ExpectException::@getters::message
|
||||
- package:expect/expect.dart::ExpectException::@getters::name
|
||||
- package:expect/expect.dart::ExpectException::@getters::package:expect/expect.dart::_getTestName
|
||||
- package:expect/expect.dart::ExpectException::@methods::package:expect/expect.dart::_kEmptyString
|
||||
- package:expect/expect.dart::ExpectException::@methods::toString
|
||||
- package:expect/expect.dart::ExpectException::@setters::package:expect/expect.dart::_getTestName
|
||||
- pkg/compiler/test/custom_split/data/fuse_with_or/libImport.dart::@methods::f_001_0
|
||||
- pkg/compiler/test/custom_split/data/fuse_with_or/libImport.dart::@methods::f_001_1
|
||||
- pkg/compiler/test/custom_split/data/fuse_with_or/libImport.dart::@methods::f_011_0
|
||||
|
||||
+9
-12
@@ -1,4 +1,13 @@
|
||||
Part 0
|
||||
ImportSet
|
||||
- pkg/compiler/test/custom_split/data/fuse_with_or/lib1.dart prefix: b1
|
||||
References
|
||||
- pkg/compiler/test/custom_split/data/fuse_with_or/libImport.dart::@methods::f_100_0
|
||||
- pkg/compiler/test/custom_split/data/fuse_with_or/lib_100_0.dart::@methods::g_100_0
|
||||
Constants
|
||||
- StringConstant("1000")
|
||||
|
||||
Part 1
|
||||
ImportSet
|
||||
- pkg/compiler/test/custom_split/data/fuse_with_or/lib1.dart prefix: b1
|
||||
- pkg/compiler/test/custom_split/data/fuse_with_or/lib2.dart prefix: b2
|
||||
@@ -28,15 +37,12 @@ Part 0
|
||||
- package:expect/expect.dart::Expect::@methods::package:expect/expect.dart::_truncateString
|
||||
- package:expect/expect.dart::ExpectException
|
||||
- package:expect/expect.dart::ExpectException::@constructors::
|
||||
- package:expect/expect.dart::ExpectException::@fields::message
|
||||
- package:expect/expect.dart::ExpectException::@fields::name
|
||||
- package:expect/expect.dart::ExpectException::@fields::package:expect/expect.dart::_getTestName
|
||||
- package:expect/expect.dart::ExpectException::@getters::message
|
||||
- package:expect/expect.dart::ExpectException::@getters::name
|
||||
- package:expect/expect.dart::ExpectException::@getters::package:expect/expect.dart::_getTestName
|
||||
- package:expect/expect.dart::ExpectException::@methods::package:expect/expect.dart::_kEmptyString
|
||||
- package:expect/expect.dart::ExpectException::@methods::toString
|
||||
- package:expect/expect.dart::ExpectException::@setters::package:expect/expect.dart::_getTestName
|
||||
- pkg/compiler/test/custom_split/data/fuse_with_or/libImport.dart::@methods::f_111_1
|
||||
- pkg/compiler/test/custom_split/data/fuse_with_or/libImport.dart::@methods::v
|
||||
Constants
|
||||
@@ -71,15 +77,6 @@ Part 0
|
||||
- StringConstant("equals")
|
||||
- StringConstant("radix")
|
||||
|
||||
Part 1
|
||||
ImportSet
|
||||
- pkg/compiler/test/custom_split/data/fuse_with_or/lib1.dart prefix: b1
|
||||
References
|
||||
- pkg/compiler/test/custom_split/data/fuse_with_or/libImport.dart::@methods::f_100_0
|
||||
- pkg/compiler/test/custom_split/data/fuse_with_or/lib_100_0.dart::@methods::g_100_0
|
||||
Constants
|
||||
- StringConstant("1000")
|
||||
|
||||
Part 2
|
||||
ImportSet
|
||||
- pkg/compiler/test/custom_split/data/fuse_with_or/lib2.dart prefix: b2
|
||||
|
||||
+15
-18
@@ -1,4 +1,19 @@
|
||||
Part 0
|
||||
ImportSet
|
||||
- pkg/compiler/test/custom_split/data/just_fuse/lib1.dart prefix: b1
|
||||
- pkg/compiler/test/custom_split/data/just_fuse/lib2.dart prefix: b2
|
||||
References
|
||||
- pkg/compiler/test/custom_split/data/just_fuse/libImport.dart::@methods::f_010_0
|
||||
- pkg/compiler/test/custom_split/data/just_fuse/libImport.dart::@methods::f_100_0
|
||||
- pkg/compiler/test/custom_split/data/just_fuse/libImport.dart::@methods::f_110_0
|
||||
- pkg/compiler/test/custom_split/data/just_fuse/lib_010_0.dart::@methods::g_010_0
|
||||
- pkg/compiler/test/custom_split/data/just_fuse/lib_100_0.dart::@methods::g_100_0
|
||||
Constants
|
||||
- StringConstant("0100")
|
||||
- StringConstant("1000")
|
||||
- StringConstant("1100")
|
||||
|
||||
Part 1
|
||||
ImportSet
|
||||
- pkg/compiler/test/custom_split/data/just_fuse/lib1.dart prefix: b1
|
||||
- pkg/compiler/test/custom_split/data/just_fuse/lib2.dart prefix: b2
|
||||
@@ -28,15 +43,12 @@ Part 0
|
||||
- package:expect/expect.dart::Expect::@methods::package:expect/expect.dart::_truncateString
|
||||
- package:expect/expect.dart::ExpectException
|
||||
- package:expect/expect.dart::ExpectException::@constructors::
|
||||
- package:expect/expect.dart::ExpectException::@fields::message
|
||||
- package:expect/expect.dart::ExpectException::@fields::name
|
||||
- package:expect/expect.dart::ExpectException::@fields::package:expect/expect.dart::_getTestName
|
||||
- package:expect/expect.dart::ExpectException::@getters::message
|
||||
- package:expect/expect.dart::ExpectException::@getters::name
|
||||
- package:expect/expect.dart::ExpectException::@getters::package:expect/expect.dart::_getTestName
|
||||
- package:expect/expect.dart::ExpectException::@methods::package:expect/expect.dart::_kEmptyString
|
||||
- package:expect/expect.dart::ExpectException::@methods::toString
|
||||
- package:expect/expect.dart::ExpectException::@setters::package:expect/expect.dart::_getTestName
|
||||
- pkg/compiler/test/custom_split/data/just_fuse/libImport.dart::@methods::f_011_1
|
||||
- pkg/compiler/test/custom_split/data/just_fuse/libImport.dart::@methods::f_101_1
|
||||
- pkg/compiler/test/custom_split/data/just_fuse/libImport.dart::@methods::f_111_1
|
||||
@@ -75,21 +87,6 @@ Part 0
|
||||
- StringConstant("equals")
|
||||
- StringConstant("radix")
|
||||
|
||||
Part 1
|
||||
ImportSet
|
||||
- pkg/compiler/test/custom_split/data/just_fuse/lib1.dart prefix: b1
|
||||
- pkg/compiler/test/custom_split/data/just_fuse/lib2.dart prefix: b2
|
||||
References
|
||||
- pkg/compiler/test/custom_split/data/just_fuse/libImport.dart::@methods::f_010_0
|
||||
- pkg/compiler/test/custom_split/data/just_fuse/libImport.dart::@methods::f_100_0
|
||||
- pkg/compiler/test/custom_split/data/just_fuse/libImport.dart::@methods::f_110_0
|
||||
- pkg/compiler/test/custom_split/data/just_fuse/lib_010_0.dart::@methods::g_010_0
|
||||
- pkg/compiler/test/custom_split/data/just_fuse/lib_100_0.dart::@methods::g_100_0
|
||||
Constants
|
||||
- StringConstant("0100")
|
||||
- StringConstant("1000")
|
||||
- StringConstant("1100")
|
||||
|
||||
Part 2
|
||||
ImportSet
|
||||
- pkg/compiler/test/custom_split/data/just_fuse/lib3.dart prefix: b3
|
||||
|
||||
+9
-12
@@ -1,4 +1,13 @@
|
||||
Part 0
|
||||
ImportSet
|
||||
- pkg/compiler/test/custom_split/data/just_fuse/lib1.dart prefix: b1
|
||||
References
|
||||
- pkg/compiler/test/custom_split/data/just_fuse/libImport.dart::@methods::f_100_0
|
||||
- pkg/compiler/test/custom_split/data/just_fuse/lib_100_0.dart::@methods::g_100_0
|
||||
Constants
|
||||
- StringConstant("1000")
|
||||
|
||||
Part 1
|
||||
ImportSet
|
||||
- pkg/compiler/test/custom_split/data/just_fuse/lib1.dart prefix: b1
|
||||
- pkg/compiler/test/custom_split/data/just_fuse/lib2.dart prefix: b2
|
||||
@@ -28,15 +37,12 @@ Part 0
|
||||
- package:expect/expect.dart::Expect::@methods::package:expect/expect.dart::_truncateString
|
||||
- package:expect/expect.dart::ExpectException
|
||||
- package:expect/expect.dart::ExpectException::@constructors::
|
||||
- package:expect/expect.dart::ExpectException::@fields::message
|
||||
- package:expect/expect.dart::ExpectException::@fields::name
|
||||
- package:expect/expect.dart::ExpectException::@fields::package:expect/expect.dart::_getTestName
|
||||
- package:expect/expect.dart::ExpectException::@getters::message
|
||||
- package:expect/expect.dart::ExpectException::@getters::name
|
||||
- package:expect/expect.dart::ExpectException::@getters::package:expect/expect.dart::_getTestName
|
||||
- package:expect/expect.dart::ExpectException::@methods::package:expect/expect.dart::_kEmptyString
|
||||
- package:expect/expect.dart::ExpectException::@methods::toString
|
||||
- package:expect/expect.dart::ExpectException::@setters::package:expect/expect.dart::_getTestName
|
||||
- pkg/compiler/test/custom_split/data/just_fuse/libImport.dart::@methods::f_111_1
|
||||
- pkg/compiler/test/custom_split/data/just_fuse/libImport.dart::@methods::v
|
||||
Constants
|
||||
@@ -71,15 +77,6 @@ Part 0
|
||||
- StringConstant("equals")
|
||||
- StringConstant("radix")
|
||||
|
||||
Part 1
|
||||
ImportSet
|
||||
- pkg/compiler/test/custom_split/data/just_fuse/lib1.dart prefix: b1
|
||||
References
|
||||
- pkg/compiler/test/custom_split/data/just_fuse/libImport.dart::@methods::f_100_0
|
||||
- pkg/compiler/test/custom_split/data/just_fuse/lib_100_0.dart::@methods::g_100_0
|
||||
Constants
|
||||
- StringConstant("1000")
|
||||
|
||||
Part 2
|
||||
ImportSet
|
||||
- pkg/compiler/test/custom_split/data/just_fuse/lib2.dart prefix: b2
|
||||
|
||||
@@ -12,9 +12,14 @@
|
||||
(type $type0 <...>)
|
||||
(type $_AsyncSuspendState <...>)
|
||||
)
|
||||
(func $"wasm:js-string.charCodeAt (import)" (import "wasm:js-string" "charCodeAt") (param externref i32) (result i32))
|
||||
(@binaryen.removable.if.unused)
|
||||
(func $"wasm:js-string.equals (import)" (import "wasm:js-string" "equals") (param externref externref) (result i32))
|
||||
(@binaryen.removable.if.unused)
|
||||
(func $"wasm:js-string.length (import)" (import "wasm:js-string" "length") (param externref) (result i32))
|
||||
(global $".FooConst0(" (import "" "FooConst0(") (ref extern))
|
||||
(global $".FooConstBase(" (import "" "FooConstBase(") (ref extern))
|
||||
(table $cross-module-funcs-0 (export "cross-module-funcs-0") 34 funcref)
|
||||
(table $cross-module-funcs-0 (export "cross-module-funcs-0") 46 funcref)
|
||||
(global $"\")\"" (ref $JSExternWrapper) <...>)
|
||||
(global $"\"FooConst0(\"" (ref $JSExternWrapper)
|
||||
(i32.const 108)
|
||||
@@ -46,12 +51,21 @@
|
||||
(set 10 (ref.func $jsExceptionStackTrace))
|
||||
(set 14 (ref.func $print))
|
||||
(set 15 (ref.func $JSStringImpl._interpolate3))
|
||||
(set 16 (ref.func $"fooGlobal0 implicit getter"))
|
||||
(set 17 (ref.func $"foo0Code <noInline>"))
|
||||
(set 26 (ref.func $"_throwIndexError <noInline>"))
|
||||
(set 27 (ref.func $FooConstBase.doit))
|
||||
(set 28 (ref.func $GrowableList._withData))
|
||||
(set 29 (ref.func $int.parse)))
|
||||
(set 16 (ref.func $"foo0Code <noInline>"))
|
||||
(set 21 (ref.func $"_throwIndexError <noInline>"))
|
||||
(set 22 (ref.func $FooConstBase.doit))
|
||||
(set 23 (ref.func $GrowableList._withData))
|
||||
(set 26 (ref.func $"wasm:js-string.length (import)"))
|
||||
(set 27 (ref.func $"wasm:js-string.charCodeAt (import)"))
|
||||
(set 28 (ref.func $IntegerDivisionByZeroException))
|
||||
(set 29 (ref.func $"Error._throwWithCurrentStackTrace <noInline>"))
|
||||
(set 30 (ref.func $"wasm:js-string.equals (import)"))
|
||||
(set 31 (ref.func $JSStringImpl.substring))
|
||||
(set 32 (ref.func $JSStringImpl.+))
|
||||
(set 33 (ref.func $JSStringImpl._interpolate))
|
||||
(set 34 (ref.func $JSStringImpl.fromRefUnchecked))
|
||||
(set 35 (ref.func $JSStringImpl._interpolate2)))
|
||||
(func $Error._throwWithCurrentStackTrace <noInline> (param $var0 (ref $#Top)) (result (ref none)) <...>)
|
||||
(func $_throwIndexError <noInline> (param $var0 i64) (param $var1 i64) (param $var2 (ref null $JSExternWrapper)) (result (ref none)) <...>)
|
||||
(func $"foo0Code <noInline>" (param $var0 (ref null $#Top)) (result (ref null $#Top))
|
||||
global.get $FooConst0
|
||||
@@ -67,7 +81,6 @@
|
||||
global.set $fooGlobal0
|
||||
ref.null none
|
||||
)
|
||||
(func $fooGlobal0 implicit getter (result (ref $#Top)) <...>)
|
||||
(func $FooConst0.doit (param $var0 (ref $Object)) (param $var1 (ref null $#Top)) (result (ref null $#Top))
|
||||
global.get $"\"FooConst0(\""
|
||||
local.get $var1
|
||||
@@ -91,7 +104,13 @@
|
||||
ref.null none
|
||||
)
|
||||
(func $GrowableList._withData (param $var0 (ref $_Type)) (param $var1 (ref $Array<Object?>)) (result (ref $WasmListBase)) <...>)
|
||||
(func $IntegerDivisionByZeroException (result (ref $Object)) <...>)
|
||||
(func $JSStringImpl.+ (param $var0 (ref $JSExternWrapper)) (param $var1 (ref $JSExternWrapper)) (result (ref $JSExternWrapper)) <...>)
|
||||
(func $JSStringImpl._interpolate (param $var0 (ref $Array<Object?>)) (result (ref $JSExternWrapper)) <...>)
|
||||
(func $JSStringImpl._interpolate2 (param $var0 (ref null $#Top)) (param $var1 (ref null $#Top)) (result (ref $JSExternWrapper)) <...>)
|
||||
(func $JSStringImpl._interpolate3 (param $var0 (ref null $#Top)) (param $var1 (ref null $#Top)) (param $var2 (ref null $#Top)) (result (ref $JSExternWrapper)) <...>)
|
||||
(func $JSStringImpl.fromRefUnchecked (param $var0 externref) (result (ref $JSExternWrapper)) <...>)
|
||||
(func $JSStringImpl.substring (param $var0 (ref $JSExternWrapper)) (param $var1 i64) (param $var2 i64) (result (ref $JSExternWrapper)) <...>)
|
||||
(func $_AsyncSuspendState._complete (param $var0 (ref $_AsyncSuspendState)) (param $var1 (ref null $#Top)) (result (ref null $#Top)) <...>)
|
||||
(func $_AsyncSuspendState._completeError (param $var0 (ref $_AsyncSuspendState)) (param $var1 (ref $#Top)) (param $var2 (ref $Object)) (result (ref null $#Top)) <...>)
|
||||
(func $_awaitHelper (param $var0 (ref $_AsyncSuspendState)) (param $var1 (ref $_Future)) (result (ref null $#Top)) <...>)
|
||||
@@ -99,7 +118,6 @@
|
||||
(func $_newAsyncSuspendState (param $var0 (ref $type0)) (param $var1 structref) (param $var2 (ref $_Future)) (result (ref $_AsyncSuspendState)) <...>)
|
||||
(func $boxJsException (param $var0 externref) (result (ref $#Top)) <...>)
|
||||
(func $checkLibraryIsLoadedFromLoadId (param $var0 i64) (result i32) <...>)
|
||||
(func $int.parse (param $var0 (ref $JSExternWrapper)) (result i64) <...>)
|
||||
(func $jsExceptionStackTrace (param $var0 externref) (result (ref $JavaScriptStack)) <...>)
|
||||
(func $loadLibraryFromLoadId (param $var0 i64) (result (ref $_Future)) <...>)
|
||||
(func $print (param $var0 (ref null $#Top)) (result (ref null $#Top)) <...>)
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
(global $".FooConst1(" (import "" "FooConst1(") (ref extern))
|
||||
(global $"\")\"" (import "module0" "global4") (ref $JSExternWrapper))
|
||||
(global $1 (import "module0" "global8") (ref $BoxedInt))
|
||||
(table $module0.cross-module-funcs-0 (import "module0" "cross-module-funcs-0") 34 funcref)
|
||||
(table $module0.cross-module-funcs-0 (import "module0" "cross-module-funcs-0") 46 funcref)
|
||||
(global $"\"FooConst1(\"" (ref $JSExternWrapper)
|
||||
(i32.const 108)
|
||||
(i32.const 0)
|
||||
@@ -22,9 +22,10 @@
|
||||
(ref.null none))
|
||||
(elem $module0.cross-module-funcs-0
|
||||
(set 0 (ref.func $foo1))
|
||||
(set 18 (ref.func $"fooGlobal1 implicit getter"))
|
||||
(set 19 (ref.func $"foo1Code <noInline>"))
|
||||
(set 30 (ref.func $0)))
|
||||
(set 17 (ref.func $"foo1Code <noInline>"))
|
||||
(set 40 (ref.func $0))
|
||||
(set 41 (ref.func $1))
|
||||
(set 42 (ref.func $2)))
|
||||
(func $"foo1Code <noInline>" (param $var0 (ref null $#Top)) (result (ref null $#Top))
|
||||
global.get $FooConst1
|
||||
i32.const 14
|
||||
@@ -42,7 +43,8 @@
|
||||
global.set $fooGlobal1
|
||||
ref.null none
|
||||
)
|
||||
(func $fooGlobal1 implicit getter (result (ref $#Top)) <...>)
|
||||
(func $null (result (ref null $#Top)) <...>)
|
||||
(func $null (param $var0 (ref null $#Top)) <...>)
|
||||
(func $null (result (ref $Object)) <...>)
|
||||
(func $FooConst1.doit (param $var0 (ref $Object)) (param $var1 (ref null $#Top)) (result (ref null $#Top))
|
||||
global.get $"\"FooConst1(\""
|
||||
@@ -55,7 +57,7 @@
|
||||
drop
|
||||
local.get $var0
|
||||
local.get $var1
|
||||
i32.const 27
|
||||
i32.const 22
|
||||
call_indirect $module0.cross-module-funcs-0 (param (ref $Object) (ref null $#Top)) (result (ref null $#Top))
|
||||
drop
|
||||
ref.null none
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
(type $_Future <...>)
|
||||
(global $".FooConst2(" (import "" "FooConst2(") (ref extern))
|
||||
(global $"\")\"" (import "module0" "global4") (ref $JSExternWrapper))
|
||||
(global $2 (import "module0" "global12") (ref $BoxedInt))
|
||||
(table $module0.cross-module-funcs-0 (import "module0" "cross-module-funcs-0") 34 funcref)
|
||||
(global $2 (import "module0" "global19") (ref $BoxedInt))
|
||||
(table $module0.cross-module-funcs-0 (import "module0" "cross-module-funcs-0") 46 funcref)
|
||||
(global $"\"FooConst2(\"" (ref $JSExternWrapper)
|
||||
(i32.const 108)
|
||||
(i32.const 0)
|
||||
@@ -22,9 +22,10 @@
|
||||
(ref.null none))
|
||||
(elem $module0.cross-module-funcs-0
|
||||
(set 6 (ref.func $foo2))
|
||||
(set 20 (ref.func $"fooGlobal2 implicit getter"))
|
||||
(set 21 (ref.func $"foo2Code <noInline>"))
|
||||
(set 31 (ref.func $0)))
|
||||
(set 18 (ref.func $"foo2Code <noInline>"))
|
||||
(set 38 (ref.func $0))
|
||||
(set 39 (ref.func $1))
|
||||
(set 43 (ref.func $2)))
|
||||
(func $"foo2Code <noInline>" (param $var0 (ref null $#Top)) (result (ref null $#Top))
|
||||
global.get $FooConst2
|
||||
i32.const 14
|
||||
@@ -42,7 +43,8 @@
|
||||
global.set $fooGlobal2
|
||||
ref.null none
|
||||
)
|
||||
(func $fooGlobal2 implicit getter (result (ref $#Top)) <...>)
|
||||
(func $null (result (ref null $#Top)) <...>)
|
||||
(func $null (param $var0 (ref null $#Top)) <...>)
|
||||
(func $null (result (ref $Object)) <...>)
|
||||
(func $FooConst2.doit (param $var0 (ref $Object)) (param $var1 (ref null $#Top)) (result (ref null $#Top))
|
||||
global.get $"\"FooConst2(\""
|
||||
@@ -55,7 +57,7 @@
|
||||
drop
|
||||
local.get $var0
|
||||
local.get $var1
|
||||
i32.const 27
|
||||
i32.const 22
|
||||
call_indirect $module0.cross-module-funcs-0 (param (ref $Object) (ref null $#Top)) (result (ref null $#Top))
|
||||
drop
|
||||
ref.null none
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
(type $_Future <...>)
|
||||
(global $".FooConst3(" (import "" "FooConst3(") (ref extern))
|
||||
(global $"\")\"" (import "module0" "global4") (ref $JSExternWrapper))
|
||||
(global $3 (import "module0" "global11") (ref $BoxedInt))
|
||||
(table $module0.cross-module-funcs-0 (import "module0" "cross-module-funcs-0") 34 funcref)
|
||||
(global $3 (import "module0" "global18") (ref $BoxedInt))
|
||||
(table $module0.cross-module-funcs-0 (import "module0" "cross-module-funcs-0") 46 funcref)
|
||||
(global $"\"FooConst3(\"" (ref $JSExternWrapper)
|
||||
(i32.const 108)
|
||||
(i32.const 0)
|
||||
@@ -22,9 +22,10 @@
|
||||
(ref.null none))
|
||||
(elem $module0.cross-module-funcs-0
|
||||
(set 11 (ref.func $foo3))
|
||||
(set 22 (ref.func $"fooGlobal3 implicit getter"))
|
||||
(set 23 (ref.func $"foo3Code <noInline>"))
|
||||
(set 32 (ref.func $0)))
|
||||
(set 19 (ref.func $"foo3Code <noInline>"))
|
||||
(set 36 (ref.func $0))
|
||||
(set 37 (ref.func $1))
|
||||
(set 44 (ref.func $2)))
|
||||
(func $"foo3Code <noInline>" (param $var0 (ref null $#Top)) (result (ref null $#Top))
|
||||
global.get $FooConst3
|
||||
i32.const 14
|
||||
@@ -42,7 +43,8 @@
|
||||
global.set $fooGlobal3
|
||||
ref.null none
|
||||
)
|
||||
(func $fooGlobal3 implicit getter (result (ref $#Top)) <...>)
|
||||
(func $null (result (ref null $#Top)) <...>)
|
||||
(func $null (param $var0 (ref null $#Top)) <...>)
|
||||
(func $null (result (ref $Object)) <...>)
|
||||
(func $FooConst3.doit (param $var0 (ref $Object)) (param $var1 (ref null $#Top)) (result (ref null $#Top))
|
||||
global.get $"\"FooConst3(\""
|
||||
@@ -55,7 +57,7 @@
|
||||
drop
|
||||
local.get $var0
|
||||
local.get $var1
|
||||
i32.const 27
|
||||
i32.const 22
|
||||
call_indirect $module0.cross-module-funcs-0 (param (ref $Object) (ref null $#Top)) (result (ref null $#Top))
|
||||
drop
|
||||
ref.null none
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
(type $_Future <...>)
|
||||
(global $".FooConst4(" (import "" "FooConst4(") (ref extern))
|
||||
(global $"\")\"" (import "module0" "global4") (ref $JSExternWrapper))
|
||||
(global $4 (import "module0" "global10") (ref $BoxedInt))
|
||||
(table $module0.cross-module-funcs-0 (import "module0" "cross-module-funcs-0") 34 funcref)
|
||||
(global $4 (import "module0" "global17") (ref $BoxedInt))
|
||||
(table $module0.cross-module-funcs-0 (import "module0" "cross-module-funcs-0") 46 funcref)
|
||||
(global $"\"FooConst4(\"" (ref $JSExternWrapper)
|
||||
(i32.const 108)
|
||||
(i32.const 0)
|
||||
@@ -22,9 +22,10 @@
|
||||
(ref.null none))
|
||||
(elem $module0.cross-module-funcs-0
|
||||
(set 12 (ref.func $foo4))
|
||||
(set 24 (ref.func $"fooGlobal4 implicit getter"))
|
||||
(set 25 (ref.func $"foo4Code <noInline>"))
|
||||
(set 33 (ref.func $0)))
|
||||
(set 20 (ref.func $"foo4Code <noInline>"))
|
||||
(set 24 (ref.func $0))
|
||||
(set 25 (ref.func $1))
|
||||
(set 45 (ref.func $2)))
|
||||
(func $"foo4Code <noInline>" (param $var0 (ref null $#Top)) (result (ref null $#Top))
|
||||
global.get $FooConst4
|
||||
i32.const 14
|
||||
@@ -42,7 +43,8 @@
|
||||
global.set $fooGlobal4
|
||||
ref.null none
|
||||
)
|
||||
(func $fooGlobal4 implicit getter (result (ref $#Top)) <...>)
|
||||
(func $null (result (ref null $#Top)) <...>)
|
||||
(func $null (param $var0 (ref null $#Top)) <...>)
|
||||
(func $null (result (ref $Object)) <...>)
|
||||
(func $FooConst4.doit (param $var0 (ref $Object)) (param $var1 (ref null $#Top)) (result (ref null $#Top))
|
||||
global.get $"\"FooConst4(\""
|
||||
@@ -55,7 +57,7 @@
|
||||
drop
|
||||
local.get $var0
|
||||
local.get $var1
|
||||
i32.const 27
|
||||
i32.const 22
|
||||
call_indirect $module0.cross-module-funcs-0 (param (ref $Object) (ref null $#Top)) (result (ref null $#Top))
|
||||
drop
|
||||
ref.null none
|
||||
|
||||
@@ -11,10 +11,17 @@
|
||||
(global $".FooConst5(" (import "" "FooConst5(") (ref extern))
|
||||
(global $"\")\"" (import "module0" "global4") (ref $JSExternWrapper))
|
||||
(global $"\"[]\"" (import "module0" "global6") (ref $JSExternWrapper))
|
||||
(global $1 (import "module0" "global8") (ref $BoxedInt))
|
||||
(global $5 (import "module0" "global5") (ref $BoxedInt))
|
||||
(global $FooConst0 (import "module0" "global7") (ref $Object))
|
||||
(table $module0.cross-module-funcs-0 (import "module0" "cross-module-funcs-0") 34 funcref)
|
||||
(global $fooGlobal0 (import "module0" "global16") (ref null $#Top))
|
||||
(table $module0.cross-module-funcs-0 (import "module0" "cross-module-funcs-0") 46 funcref)
|
||||
(table $module0.dispatch0 (import "module0" "dispatch0") 695 funcref)
|
||||
(global $"\"0\"" (ref $JSExternWrapper) <...>)
|
||||
(global $"\"1\"" (ref $JSExternWrapper) <...>)
|
||||
(global $"\"2\"" (ref $JSExternWrapper) <...>)
|
||||
(global $"\"3\"" (ref $JSExternWrapper) <...>)
|
||||
(global $"\"4\"" (ref $JSExternWrapper) <...>)
|
||||
(global $"\"FooConst5(\"" (ref $JSExternWrapper)
|
||||
(i32.const 108)
|
||||
(i32.const 0)
|
||||
@@ -51,52 +58,120 @@
|
||||
drop
|
||||
global.get $5
|
||||
global.set $fooGlobal5
|
||||
block $label0 (result (ref $#Top))
|
||||
global.get $fooGlobal0
|
||||
br_on_non_null $label0
|
||||
global.get $1
|
||||
global.get $"\"1\""
|
||||
global.get $"\"0\""
|
||||
call $int.parse
|
||||
i64.const 1
|
||||
i64.eq
|
||||
select (ref $#Top)
|
||||
local.tee $var0
|
||||
global.set $fooGlobal0
|
||||
local.get $var0
|
||||
end $label0
|
||||
i32.const 16
|
||||
call_indirect $module0.cross-module-funcs-0 (result (ref $#Top))
|
||||
call_indirect $module0.cross-module-funcs-0 (param (ref null $#Top)) (result (ref null $#Top))
|
||||
drop
|
||||
block $label1 (result (ref $#Top))
|
||||
i32.const 40
|
||||
call_indirect $module0.cross-module-funcs-0 (result (ref null $#Top))
|
||||
br_on_non_null $label1
|
||||
global.get $1
|
||||
global.get $"\"1\""
|
||||
global.get $"\"1\""
|
||||
call $int.parse
|
||||
i64.const 1
|
||||
i64.eq
|
||||
select (ref $#Top)
|
||||
local.tee $var0
|
||||
i32.const 41
|
||||
call_indirect $module0.cross-module-funcs-0 (param (ref null $#Top))
|
||||
local.get $var0
|
||||
end $label1
|
||||
i32.const 17
|
||||
call_indirect $module0.cross-module-funcs-0 (param (ref null $#Top)) (result (ref null $#Top))
|
||||
drop
|
||||
block $label2 (result (ref $#Top))
|
||||
i32.const 38
|
||||
call_indirect $module0.cross-module-funcs-0 (result (ref null $#Top))
|
||||
br_on_non_null $label2
|
||||
global.get $1
|
||||
global.get $"\"1\""
|
||||
global.get $"\"2\""
|
||||
call $int.parse
|
||||
i64.const 1
|
||||
i64.eq
|
||||
select (ref $#Top)
|
||||
local.tee $var0
|
||||
i32.const 39
|
||||
call_indirect $module0.cross-module-funcs-0 (param (ref null $#Top))
|
||||
local.get $var0
|
||||
end $label2
|
||||
i32.const 18
|
||||
call_indirect $module0.cross-module-funcs-0 (result (ref $#Top))
|
||||
call_indirect $module0.cross-module-funcs-0 (param (ref null $#Top)) (result (ref null $#Top))
|
||||
drop
|
||||
block $label3 (result (ref $#Top))
|
||||
i32.const 36
|
||||
call_indirect $module0.cross-module-funcs-0 (result (ref null $#Top))
|
||||
br_on_non_null $label3
|
||||
global.get $1
|
||||
global.get $"\"1\""
|
||||
global.get $"\"3\""
|
||||
call $int.parse
|
||||
i64.const 1
|
||||
i64.eq
|
||||
select (ref $#Top)
|
||||
local.tee $var0
|
||||
i32.const 37
|
||||
call_indirect $module0.cross-module-funcs-0 (param (ref null $#Top))
|
||||
local.get $var0
|
||||
end $label3
|
||||
i32.const 19
|
||||
call_indirect $module0.cross-module-funcs-0 (param (ref null $#Top)) (result (ref null $#Top))
|
||||
drop
|
||||
block $label4 (result (ref $#Top))
|
||||
i32.const 24
|
||||
call_indirect $module0.cross-module-funcs-0 (result (ref null $#Top))
|
||||
br_on_non_null $label4
|
||||
global.get $1
|
||||
global.get $"\"1\""
|
||||
global.get $"\"4\""
|
||||
call $int.parse
|
||||
i64.const 1
|
||||
i64.eq
|
||||
select (ref $#Top)
|
||||
local.tee $var0
|
||||
i32.const 25
|
||||
call_indirect $module0.cross-module-funcs-0 (param (ref null $#Top))
|
||||
local.get $var0
|
||||
end $label4
|
||||
i32.const 20
|
||||
call_indirect $module0.cross-module-funcs-0 (result (ref $#Top))
|
||||
i32.const 21
|
||||
call_indirect $module0.cross-module-funcs-0 (param (ref null $#Top)) (result (ref null $#Top))
|
||||
drop
|
||||
i32.const 22
|
||||
call_indirect $module0.cross-module-funcs-0 (result (ref $#Top))
|
||||
i32.const 23
|
||||
call_indirect $module0.cross-module-funcs-0 (param (ref null $#Top)) (result (ref null $#Top))
|
||||
drop
|
||||
i32.const 24
|
||||
call_indirect $module0.cross-module-funcs-0 (result (ref $#Top))
|
||||
i32.const 25
|
||||
call_indirect $module0.cross-module-funcs-0 (param (ref null $#Top)) (result (ref null $#Top))
|
||||
drop
|
||||
block $label0 (result (ref $WasmListBase))
|
||||
block $label5 (result (ref $WasmListBase))
|
||||
global.get $allFooConstants
|
||||
br_on_non_null $label0
|
||||
br_on_non_null $label5
|
||||
global.get $_InterfaceType
|
||||
global.get $FooConst0
|
||||
i32.const 30
|
||||
i32.const 42
|
||||
call_indirect $module0.cross-module-funcs-0 (result (ref $Object))
|
||||
i32.const 31
|
||||
i32.const 43
|
||||
call_indirect $module0.cross-module-funcs-0 (result (ref $Object))
|
||||
i32.const 32
|
||||
i32.const 44
|
||||
call_indirect $module0.cross-module-funcs-0 (result (ref $Object))
|
||||
i32.const 33
|
||||
i32.const 45
|
||||
call_indirect $module0.cross-module-funcs-0 (result (ref $Object))
|
||||
global.get $FooConst5
|
||||
array.new_fixed $Array<Object?> 6
|
||||
i32.const 28
|
||||
i32.const 23
|
||||
call_indirect $module0.cross-module-funcs-0 (param (ref $_Type) (ref $Array<Object?>)) (result (ref $WasmListBase))
|
||||
local.tee $var1
|
||||
global.set $allFooConstants
|
||||
local.get $var1
|
||||
end $label0
|
||||
end $label5
|
||||
local.tee $var1
|
||||
struct.get $WasmListBase $_length
|
||||
local.tee $var3
|
||||
@@ -105,7 +180,7 @@
|
||||
i64.const 0
|
||||
local.get $var3
|
||||
global.get $"\"[]\""
|
||||
i32.const 26
|
||||
i32.const 21
|
||||
call_indirect $module0.cross-module-funcs-0 (param i64 i64 (ref null $JSExternWrapper)) (result (ref none))
|
||||
unreachable
|
||||
end
|
||||
@@ -135,10 +210,11 @@
|
||||
drop
|
||||
local.get $var0
|
||||
local.get $var1
|
||||
i32.const 27
|
||||
i32.const 22
|
||||
call_indirect $module0.cross-module-funcs-0 (param (ref $Object) (ref null $#Top)) (result (ref null $#Top))
|
||||
drop
|
||||
ref.null none
|
||||
)
|
||||
(func $foo5 (result (ref $_Future)) <...>)
|
||||
(func $int.parse (param $var0 (ref $JSExternWrapper)) (result i64) <...>)
|
||||
)
|
||||
Reference in New Issue
Block a user