| Index: runtime/vm/native_entry.h
|
| diff --git a/runtime/vm/native_entry.h b/runtime/vm/native_entry.h
|
| index 9b8f6e341e68eceba17ff5802570c6b79a3b6335..187472f4a6372f4d1e2e448cb3cc60a582f3c3ce 100644
|
| --- a/runtime/vm/native_entry.h
|
| +++ b/runtime/vm/native_entry.h
|
| @@ -22,6 +22,18 @@ namespace dart {
|
| class Class;
|
| class String;
|
|
|
| +// We have three variants of native functions:
|
| +// - bootstrap natives, which are called directly from stub code. The callee is
|
| +// responsible for safepoint transitions and setting up handle scopes as
|
| +// needed. Only VM-defined natives are bootstrap natives; they cannot be
|
| +// defined by embedders or native extensions.
|
| +// - no scope natives, which are called through a wrapper function. The wrapper
|
| +// function handles the safepoint transition. The callee is responsible for
|
| +// setting up API scopes as needed.
|
| +// - auto scope natives, which are called through a wrapper function. The
|
| +// wrapper function handles the safepoint transition and sets up an API
|
| +// scope.
|
| +
|
| typedef void (*NativeFunction)(NativeArguments* arguments);
|
|
|
|
|
| @@ -107,9 +119,13 @@ class NativeEntry : public AllStatic {
|
| uword pc);
|
| static const uint8_t* ResolveSymbol(uword pc);
|
|
|
| - static uword NativeCallWrapperEntry();
|
| - static void NativeCallWrapper(Dart_NativeArguments args,
|
| - Dart_NativeFunction func);
|
| + static uword NoScopeNativeCallWrapperEntry();
|
| + static void NoScopeNativeCallWrapper(Dart_NativeArguments args,
|
| + Dart_NativeFunction func);
|
| +
|
| + static uword AutoScopeNativeCallWrapperEntry();
|
| + static void AutoScopeNativeCallWrapper(Dart_NativeArguments args,
|
| + Dart_NativeFunction func);
|
|
|
| // DBC does not support lazy native call linking.
|
| #if !defined(TARGET_ARCH_DBC)
|
| @@ -118,8 +134,10 @@ class NativeEntry : public AllStatic {
|
| #endif
|
|
|
| private:
|
| - static void NativeCallWrapperNoStackCheck(Dart_NativeArguments args,
|
| - Dart_NativeFunction func);
|
| + static void NoScopeNativeCallWrapperNoStackCheck(Dart_NativeArguments args,
|
| + Dart_NativeFunction func);
|
| + static void AutoScopeNativeCallWrapperNoStackCheck(Dart_NativeArguments args,
|
| + Dart_NativeFunction func);
|
|
|
| static bool ReturnValueIsError(NativeArguments* arguments);
|
| static void PropagateErrors(NativeArguments* arguments);
|
|
|