Reland "Update how deoptimization from runtime methods is supported"

This reverts commit 79f078d87e410ed6d7b78a3afe8f7008db3601dd.

Reason for revert: Relanding after fixing golem failures. Earlier the
warning about undeoptimizable functions was logged even before we
determined if a deoptimization is required. The fix is to delay this
warning.

Change-Id: I93e59776cef894053f18b8f9ed8835ad7cb11377
diff --git a/tools/cpp-define-generator/globals.def b/tools/cpp-define-generator/globals.def
index 2572ea6..8dcc023 100644
--- a/tools/cpp-define-generator/globals.def
+++ b/tools/cpp-define-generator/globals.def
@@ -28,6 +28,7 @@
 #include "mirror/object_reference.h"
 #include "runtime_globals.h"
 #include "stack.h"
+#include "entrypoints/quick/callee_save_frame.h"
 #endif
 
 ASM_DEFINE(ACCESS_FLAGS_METHOD_IS_NATIVE,
@@ -82,3 +83,6 @@
            std::memory_order_relaxed)
 ASM_DEFINE(STACK_OVERFLOW_RESERVED_BYTES,
            GetStackOverflowReservedBytes(art::kRuntimeISA))
+ASM_DEFINE(CALLEE_SAVE_EVERYTHING_NUM_CORE_SPILLS,
+           art::POPCOUNT(art::RuntimeCalleeSaveFrame::GetCoreSpills(
+               art::CalleeSaveType::kSaveEverything)))