diff --git a/runtime/observatory/lib/src/service/object.dart b/runtime/observatory/lib/src/service/object.dart
index 9878a02..703be40 100644
--- a/runtime/observatory/lib/src/service/object.dart
+++ b/runtime/observatory/lib/src/service/object.dart
@@ -3995,7 +3995,6 @@
     case 'NativeEntryData':
       return M.ObjectPoolEntryKind.nativeEntryData;
     case 'NativeFunction':
-    case 'NativeFunctionWrapper':
       return M.ObjectPoolEntryKind.nativeEntry;
   }
   throw new Exception('Unknown ObjectPoolEntryKind ($kind)');
diff --git a/runtime/observatory_2/lib/src/service/object.dart b/runtime/observatory_2/lib/src/service/object.dart
index 5e220dc..a8d3c89 100644
--- a/runtime/observatory_2/lib/src/service/object.dart
+++ b/runtime/observatory_2/lib/src/service/object.dart
@@ -4008,7 +4008,6 @@
     case 'NativeEntryData':
       return M.ObjectPoolEntryKind.nativeEntryData;
     case 'NativeFunction':
-    case 'NativeFunctionWrapper':
       return M.ObjectPoolEntryKind.nativeEntry;
   }
   throw new Exception('Unknown ObjectPoolEntryKind ($kind)');
diff --git a/runtime/vm/app_snapshot.cc b/runtime/vm/app_snapshot.cc
index 85e1bcb..c2c8b3d 100644
--- a/runtime/vm/app_snapshot.cc
+++ b/runtime/vm/app_snapshot.cc
@@ -2340,8 +2340,7 @@
             s->Write<intptr_t>(entry.raw_value_);
             break;
           }
-          case ObjectPool::EntryType::kNativeFunction:
-          case ObjectPool::EntryType::kNativeFunctionWrapper: {
+          case ObjectPool::EntryType::kNativeFunction: {
             // Write nothing. Will initialize with the lazy link entry.
             break;
           }
diff --git a/runtime/vm/compiler/assembler/assembler_base.cc b/runtime/vm/compiler/assembler/assembler_base.cc
index 9dbd0ff..07d7285 100644
--- a/runtime/vm/compiler/assembler/assembler_base.cc
+++ b/runtime/vm/compiler/assembler/assembler_base.cc
@@ -414,14 +414,6 @@
       label->address(), ObjectPoolBuilderEntry::kNativeFunction, patchable));
 }
 
-intptr_t ObjectPoolBuilder::FindNativeFunctionWrapper(
-    const ExternalLabel* label,
-    ObjectPoolBuilderEntry::Patchability patchable) {
-  return FindObject(ObjectPoolBuilderEntry(
-      label->address(), ObjectPoolBuilderEntry::kNativeFunctionWrapper,
-      patchable));
-}
-
 bool ObjectPoolBuilder::TryCommitToParent() {
   ASSERT(parent_ != nullptr);
   if (parent_->CurrentLength() != base_index_) {
diff --git a/runtime/vm/compiler/assembler/object_pool_builder.h b/runtime/vm/compiler/assembler/object_pool_builder.h
index e33ded6..7ceb222 100644
--- a/runtime/vm/compiler/assembler/object_pool_builder.h
+++ b/runtime/vm/compiler/assembler/object_pool_builder.h
@@ -29,7 +29,6 @@
     kTaggedObject,
     kImmediate,
     kNativeFunction,
-    kNativeFunctionWrapper,
 
     // Used only during AOT snapshot serialization/deserialization.
     // Denotes kImmediate entry with
@@ -166,9 +165,6 @@
   intptr_t FindImmediate(uword imm);
   intptr_t FindNativeFunction(const ExternalLabel* label,
                               ObjectPoolBuilderEntry::Patchability patchable);
-  intptr_t FindNativeFunctionWrapper(
-      const ExternalLabel* label,
-      ObjectPoolBuilderEntry::Patchability patchable);
 
   intptr_t CurrentLength() const {
     return object_pool_.length() + used_from_parent_.length();
diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc
index d793156..1fa6c99 100644
--- a/runtime/vm/object.cc
+++ b/runtime/vm/object.cc
@@ -14704,8 +14704,7 @@
         break;
       }
       case compiler::ObjectPoolBuilderEntry::kImmediate:
-      case compiler::ObjectPoolBuilderEntry::kNativeFunction:
-      case compiler::ObjectPoolBuilderEntry::kNativeFunctionWrapper: {
+      case compiler::ObjectPoolBuilderEntry::kNativeFunction: {
         compiler::ObjectPoolBuilderEntry entry(RawValueAt(i), type, patchable);
         builder->AddObject(entry);
         break;
@@ -14741,8 +14740,6 @@
       } else {
         THR_Print("0x%" Px " (native function)\n", pc);
       }
-    } else if (TypeAt(i) == EntryType::kNativeFunctionWrapper) {
-      THR_Print("0x%" Px " (native function wrapper)\n", RawValueAt(i));
     } else {
       THR_Print("0x%" Px " (raw)\n", RawValueAt(i));
     }
diff --git a/runtime/vm/object_service.cc b/runtime/vm/object_service.cc
index 1685ebf..f7fe7fe 100644
--- a/runtime/vm/object_service.cc
+++ b/runtime/vm/object_service.cc
@@ -722,11 +722,6 @@
           jsentry.AddProperty("kind", "NativeFunction");
           jsentry.AddProperty64("value", imm);
           break;
-        case ObjectPool::EntryType::kNativeFunctionWrapper:
-          imm = RawValueAt(i);
-          jsentry.AddProperty("kind", "NativeFunctionWrapper");
-          jsentry.AddProperty64("value", imm);
-          break;
         default:
           UNREACHABLE();
       }
