Add a separate path for MethodHandle invokeExact from transforms

This simplifies the logic in the MethodHandle invoke paths and perhaps
opens the door for faster implementation of the direct cases.

It also changes the logic around the ShadowFrame for invokes from
transforms trying to avoid the frame being GC reachable via two
routes.

Bug: 221894167
Test: atest CtsLibcoreOjTestCases:java.lang.invoke
Test: art/test/run-test --host {712,956,957,958}
Test: art/test.py --host --64 --gcstress -r
Change-Id: If94cfc982c58a36047e7acf417e6cee1be314fd8
diff --git a/runtime/runtime.cc b/runtime/runtime.cc
index b2fc369..c3f6471 100644
--- a/runtime/runtime.cc
+++ b/runtime/runtime.cc
@@ -130,6 +130,7 @@
 #include "native/java_lang_Thread.h"
 #include "native/java_lang_Throwable.h"
 #include "native/java_lang_VMClassLoader.h"
+#include "native/java_lang_invoke_MethodHandle.h"
 #include "native/java_lang_invoke_MethodHandleImpl.h"
 #include "native/java_lang_ref_FinalizerReference.h"
 #include "native/java_lang_ref_Reference.h"
@@ -2178,6 +2179,7 @@
   register_dalvik_system_ZygoteHooks(env);
   register_java_lang_Class(env);
   register_java_lang_Object(env);
+  register_java_lang_invoke_MethodHandle(env);
   register_java_lang_invoke_MethodHandleImpl(env);
   register_java_lang_ref_FinalizerReference(env);
   register_java_lang_reflect_Array(env);