diff options
Diffstat (limited to 'compiler/optimizing/code_generation_data.cc')
-rw-r--r-- | compiler/optimizing/code_generation_data.cc | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/compiler/optimizing/code_generation_data.cc b/compiler/optimizing/code_generation_data.cc index 7b23d46dc5..afc4f62f0f 100644 --- a/compiler/optimizing/code_generation_data.cc +++ b/compiler/optimizing/code_generation_data.cc @@ -20,6 +20,7 @@ #include "intern_table.h" #include "mirror/object-inl.h" #include "runtime.h" +#include "well_known_classes-inl.h" namespace art HIDDEN { @@ -52,6 +53,16 @@ void CodeGenerationData::EmitJitRoots( entry.second = index; ++index; } + for (auto& entry : jit_method_type_roots_) { + // Update the `roots` with the MethodType, and replace the address temporarily + // stored to the index in the table. + uint64_t address = entry.second; + roots->emplace_back(reinterpret_cast<StackReference<mirror::Object>*>(address)); + DCHECK(roots->back() != nullptr); + DCHECK(roots->back()->InstanceOf(WellKnownClasses::java_lang_invoke_MethodType.Get())); + entry.second = index; + ++index; + } } } // namespace art |