diff options
Diffstat (limited to 'compiler/optimizing/nodes.h')
-rw-r--r-- | compiler/optimizing/nodes.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/compiler/optimizing/nodes.h b/compiler/optimizing/nodes.h index 37d17478ff..d9df752e92 100644 --- a/compiler/optimizing/nodes.h +++ b/compiler/optimizing/nodes.h @@ -7208,6 +7208,8 @@ class HLoadMethodType final : public HInstruction { enum class LoadKind { // Load from an entry in the .bss section using a PC-relative load. kBssEntry, + // Load from the root table associated with the JIT compiled method. + kJitTableAddress, // Load using a single runtime call. kRuntimeCall, @@ -7244,6 +7246,10 @@ class HLoadMethodType final : public HInstruction { dex::ProtoIndex GetProtoIndex() const { return proto_index_; } + Handle<mirror::MethodType> GetMethodType() const { return method_type_; } + + void SetMethodType(Handle<mirror::MethodType> method_type) { method_type_ = method_type; } + const DexFile& GetDexFile() const { return dex_file_; } static SideEffects SideEffectsForArchRuntimeCalls() { @@ -7273,6 +7279,8 @@ class HLoadMethodType final : public HInstruction { const dex::ProtoIndex proto_index_; const DexFile& dex_file_; + + Handle<mirror::MethodType> method_type_; }; std::ostream& operator<<(std::ostream& os, HLoadMethodType::LoadKind rhs); @@ -7283,6 +7291,7 @@ inline void HLoadMethodType::SetLoadKind(LoadKind load_kind) { DCHECK(GetBlock() == nullptr); DCHECK(GetEnvironment() == nullptr); DCHECK_EQ(GetLoadKind(), LoadKind::kRuntimeCall); + DCHECK_IMPLIES(GetLoadKind() == LoadKind::kJitTableAddress, GetMethodType() != nullptr); SetPackedField<LoadKindField>(load_kind); } |