blob: b6f19323e986927abb11ba58c5a114289f2f2d59 [file] [log] [blame]
// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'package:kernel/ast.dart';
import 'package:kernel/library_index.dart';
/// Kernel nodes for classes and members referenced specifically by the
/// compiler.
mixin KernelNodes {
Component get component;
late final LibraryIndex index = LibraryIndex(component, [
"dart:_internal",
"dart:async",
"dart:collection",
"dart:core",
"dart:ffi",
"dart:typed_data",
"dart:wasm"
]);
// dart:_internal classes
late final Class symbolClass = index.getClass("dart:_internal", "Symbol");
// dart:collection classes
late final Class hashFieldBaseClass =
index.getClass("dart:collection", "_HashFieldBase");
late final Class immutableMapClass =
index.getClass("dart:collection", "_WasmImmutableMap");
late final Class immutableSetClass =
index.getClass("dart:collection", "_WasmImmutableSet");
// dart:core various classes
late final Class boxedBoolClass = index.getClass("dart:core", "_BoxedBool");
late final Class boxedDoubleClass =
index.getClass("dart:core", "_BoxedDouble");
late final Class boxedIntClass = index.getClass("dart:core", "_BoxedInt");
late final Class closureClass = index.getClass("dart:core", "_Closure");
late final Class listBaseClass = index.getClass("dart:core", "_ListBase");
late final Class fixedLengthListClass = index.getClass("dart:core", "_List");
late final Class growableListClass =
index.getClass("dart:core", "_GrowableList");
late final Class immutableListClass =
index.getClass("dart:core", "_ImmutableList");
late final Class stringBaseClass = index.getClass("dart:core", "_StringBase");
late final Class oneByteStringClass =
index.getClass("dart:core", "_OneByteString");
late final Class twoByteStringClass =
index.getClass("dart:core", "_TwoByteString");
late final Class invocationClass = index.getClass("dart:core", 'Invocation');
late final Class noSuchMethodErrorClass =
index.getClass("dart:core", "NoSuchMethodError");
late final Class typeErrorClass = index.getClass("dart:core", "_TypeError");
late final Class javaScriptErrorClass =
index.getClass("dart:core", "_JavaScriptError");
// dart:core runtime type classes
late final Class typeClass = index.getClass("dart:core", "_Type");
late final Class dynamicTypeClass =
index.getClass("dart:core", "_DynamicType");
late final Class functionTypeClass =
index.getClass("dart:core", "_FunctionType");
late final Class functionTypeParameterTypeClass =
index.getClass("dart:core", "_FunctionTypeParameterType");
late final Class futureOrTypeClass =
index.getClass("dart:core", "_FutureOrType");
late final Class interfaceTypeClass =
index.getClass("dart:core", "_InterfaceType");
late final Class interfaceTypeParameterTypeClass =
index.getClass("dart:core", "_InterfaceTypeParameterType");
late final Class namedParameterClass =
index.getClass("dart:core", "_NamedParameter");
late final Class neverTypeClass = index.getClass("dart:core", "_NeverType");
late final Class nullTypeClass = index.getClass("dart:core", "_NullType");
late final Class voidTypeClass = index.getClass("dart:core", "_VoidType");
late final Class stackTraceClass = index.getClass("dart:core", "StackTrace");
late final Class typeUniverseClass =
index.getClass("dart:core", "_TypeUniverse");
// dart:core sync* support classes
late final Class suspendStateClass =
index.getClass("dart:core", "_SuspendState");
late final Class syncStarIterableClass =
index.getClass("dart:core", "_SyncStarIterable");
late final Class syncStarIteratorClass =
index.getClass("dart:core", "_SyncStarIterator");
// dart:ffi classes
late final Class ffiCompoundClass = index.getClass("dart:ffi", "_Compound");
late final Class ffiPointerClass = index.getClass("dart:ffi", "Pointer");
// dart:typed_data classes
late final Class typedListBaseClass =
index.getClass("dart:typed_data", "_TypedListBase");
late final Class typedListClass =
index.getClass("dart:typed_data", "_TypedList");
late final Class typedListViewClass =
index.getClass("dart:typed_data", "_TypedListView");
late final Class byteDataViewClass =
index.getClass("dart:typed_data", "_ByteDataView");
late final Class unmodifiableByteDataViewClass =
index.getClass("dart:typed_data", "_UnmodifiableByteDataView");
// dart:wasm classes
late final Class wasmTypesBaseClass =
index.getClass("dart:wasm", "_WasmBase");
late final wasmI8Class = index.getClass("dart:wasm", "WasmI8");
late final wasmI16Class = index.getClass("dart:wasm", "WasmI16");
late final wasmI32Class = index.getClass("dart:wasm", "WasmI32");
late final wasmI64Class = index.getClass("dart:wasm", "WasmI64");
late final wasmF32Class = index.getClass("dart:wasm", "WasmF32");
late final wasmF64Class = index.getClass("dart:wasm", "WasmF64");
late final Class wasmAnyRefClass = index.getClass("dart:wasm", "WasmAnyRef");
late final Class wasmExternRefClass =
index.getClass("dart:wasm", "WasmExternRef");
late final Class wasmFuncRefClass =
index.getClass("dart:wasm", "WasmFuncRef");
late final Class wasmEqRefClass = index.getClass("dart:wasm", "WasmEqRef");
late final Class wasmStructRefClass =
index.getClass("dart:wasm", "WasmStructRef");
late final Class wasmArrayRefClass =
index.getClass("dart:wasm", "WasmArrayRef");
late final Class wasmFunctionClass =
index.getClass("dart:wasm", "WasmFunction");
late final Class wasmVoidClass = index.getClass("dart:wasm", "WasmVoid");
late final Class wasmTableClass = index.getClass("dart:wasm", "WasmTable");
// dart:_internal procedures
late final Procedure loadLibrary =
index.getTopLevelProcedure("dart:_internal", "loadLibrary");
late final Procedure checkLibraryIsLoaded =
index.getTopLevelProcedure("dart:_internal", "checkLibraryIsLoaded");
// dart:async procedures
late final Procedure asyncHelper =
index.getTopLevelProcedure("dart:async", "_asyncHelper");
late final Procedure awaitHelper =
index.getTopLevelProcedure("dart:async", "_awaitHelper");
// dart:collection procedures
late final Procedure mapFactory =
index.getProcedure("dart:collection", "LinkedHashMap", "_default");
late final Procedure mapPut = index
.getClass("dart:collection", "_WasmDefaultMap")
.superclass! // _LinkedHashMapMixin<K, V>
.procedures
.firstWhere((p) => p.name.text == "[]=");
late final Procedure setFactory =
index.getProcedure("dart:collection", "LinkedHashSet", "_default");
late final Procedure setAdd = index
.getClass("dart:collection", "_WasmDefaultSet")
.superclass! // _LinkedHashSetMixin<K, V>
.procedures
.firstWhere((p) => p.name.text == "add");
late final Procedure growableListAdd =
index.getProcedure("dart:core", "_GrowableList", "add");
late final Procedure hashImmutableIndexNullable = index.getProcedure(
"dart:collection", "_HashAbstractImmutableBase", "get:_indexNullable");
// dart:core various procedures
late final Procedure objectNoSuchMethod =
index.getProcedure("dart:core", "Object", "noSuchMethod");
late final Procedure objectRuntimeType =
index.getProcedure("dart:core", "Object", "get:_runtimeType");
late final Procedure nullToString =
index.getProcedure("dart:core", "Object", "_nullToString");
late final Procedure nullNoSuchMethod =
index.getProcedure("dart:core", "Object", "_nullNoSuchMethod");
late final Procedure stringEquals =
index.getProcedure("dart:core", "_StringBase", "==");
late final Procedure stringInterpolate =
index.getProcedure("dart:core", "_StringBase", "_interpolate");
// dart:core invocation/exception procedures
late final Procedure invocationGetterFactory =
index.getProcedure("dart:core", "Invocation", "getter");
late final Procedure invocationSetterFactory =
index.getProcedure("dart:core", "Invocation", "setter");
late final Procedure invocationMethodFactory =
index.getProcedure("dart:core", "Invocation", "method");
late final Procedure invocationGenericMethodFactory =
index.getProcedure("dart:core", "Invocation", "genericMethod");
late final Procedure noSuchMethodErrorThrowWithInvocation = index
.getProcedure("dart:core", "NoSuchMethodError", "_throwWithInvocation");
late final Procedure stackTraceCurrent =
index.getProcedure("dart:core", "StackTrace", "get:current");
late final Procedure throwNullCheckError =
index.getProcedure("dart:core", "_TypeError", "_throwNullCheckError");
late final Procedure throwAsCheckError =
index.getProcedure("dart:core", "_TypeError", "_throwAsCheckError");
late final Procedure throwWasmRefError =
index.getProcedure("dart:core", "_TypeError", "_throwWasmRefError");
late final Procedure throwArgumentTypeCheckError = index.getProcedure(
"dart:core", "_TypeError", "_throwArgumentTypeCheckError");
late final Procedure throwAssertionError =
index.getProcedure("dart:core", "AssertionError", "_throwWithMessage");
late final Procedure javaScriptErrorFactory =
index.getProcedure("dart:core", "_JavaScriptError", "_");
late final Procedure rangeErrorCheckValueInInterval =
index.getProcedure("dart:core", "RangeError", "checkValueInInterval");
late final Class errorClass = index.getClass("dart:core", "Error");
late final Field errorClassStackTraceField =
index.getField("dart:core", "Error", "_stackTrace");
late final Procedure errorThrow =
index.getProcedure("dart:core", "Error", "_throw");
// dart:core type procedures
late final Procedure isSubtype =
index.getTopLevelProcedure("dart:core", "_isSubtype");
late final Procedure checkClosureShape =
index.getTopLevelProcedure("dart:core", "_checkClosureShape");
late final Procedure checkClosureType =
index.getTopLevelProcedure("dart:core", "_checkClosureType");
late final Procedure typeAsNullable =
index.getProcedure("dart:core", "_Type", "get:asNullable");
late final Procedure createNormalizedFutureOrType = index.getProcedure(
"dart:core", "_TypeUniverse", "createNormalizedFutureOrType");
late final Procedure substituteFunctionTypeArgument = index.getProcedure(
"dart:core", "_TypeUniverse", "substituteFunctionTypeArgument");
// dart:core dynamic invocation helper procedures
late final Procedure getNamedParameterIndex =
index.getTopLevelProcedure("dart:core", "_getNamedParameterIndex");
late final Procedure namedParameterListToMap =
index.getTopLevelProcedure("dart:core", "_namedParameterListToMap");
late final Procedure namedParameterMapToList =
index.getTopLevelProcedure("dart:core", "_namedParameterMapToList");
late final Procedure listOf = index.getProcedure("dart:core", "_List", "of");
// dart:wasm procedures
late final Procedure wasmFunctionCall =
index.getProcedure("dart:wasm", "WasmFunction", "get:call");
late final Procedure wasmTableCallIndirect =
index.getProcedure("dart:wasm", "WasmTable", "callIndirect");
}