summaryrefslogtreecommitdiff
path: root/compiler/optimizing
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/optimizing')
-rw-r--r--compiler/optimizing/code_generator.cc5
-rw-r--r--compiler/optimizing/code_generator.h9
-rw-r--r--compiler/optimizing/optimizing_compiler.cc4
3 files changed, 8 insertions, 10 deletions
diff --git a/compiler/optimizing/code_generator.cc b/compiler/optimizing/code_generator.cc
index c734922268..88bd818b0c 100644
--- a/compiler/optimizing/code_generator.cc
+++ b/compiler/optimizing/code_generator.cc
@@ -493,11 +493,10 @@ void CodeGenerator::FinishCriticalNativeFrameSetup(size_t out_frame_size,
GetMoveResolver()->EmitNativeCode(parallel_move);
}
-const char* CodeGenerator::GetCriticalNativeShorty(HInvokeStaticOrDirect* invoke,
- uint32_t* shorty_len) {
+std::string_view CodeGenerator::GetCriticalNativeShorty(HInvokeStaticOrDirect* invoke) {
ScopedObjectAccess soa(Thread::Current());
DCHECK(invoke->GetResolvedMethod()->IsCriticalNative());
- return invoke->GetResolvedMethod()->GetShorty(shorty_len);
+ return invoke->GetResolvedMethod()->GetShortyView();
}
void CodeGenerator::GenerateInvokeStaticOrDirectRuntimeCall(
diff --git a/compiler/optimizing/code_generator.h b/compiler/optimizing/code_generator.h
index c54c96c40f..73059313e2 100644
--- a/compiler/optimizing/code_generator.h
+++ b/compiler/optimizing/code_generator.h
@@ -597,7 +597,7 @@ class CodeGenerator : public DeletableArenaObject<kArenaAllocCodeGenerator> {
template <typename CriticalNativeCallingConventionVisitor,
size_t kNativeStackAlignment,
- size_t GetCriticalNativeDirectCallFrameSize(const char* shorty, uint32_t shorty_len)>
+ size_t GetCriticalNativeDirectCallFrameSize(std::string_view shorty)>
size_t PrepareCriticalNativeCall(HInvokeStaticOrDirect* invoke) {
DCHECK(!invoke->GetLocations()->Intrinsified());
CriticalNativeCallingConventionVisitor calling_convention_visitor(
@@ -607,9 +607,8 @@ class CodeGenerator : public DeletableArenaObject<kArenaAllocCodeGenerator> {
size_t out_frame_size =
RoundUp(calling_convention_visitor.GetStackOffset(), kNativeStackAlignment);
if (kIsDebugBuild) {
- uint32_t shorty_len;
- const char* shorty = GetCriticalNativeShorty(invoke, &shorty_len);
- CHECK_EQ(GetCriticalNativeDirectCallFrameSize(shorty, shorty_len), out_frame_size);
+ std::string_view shorty = GetCriticalNativeShorty(invoke);
+ CHECK_EQ(GetCriticalNativeDirectCallFrameSize(shorty), out_frame_size);
}
if (out_frame_size != 0u) {
FinishCriticalNativeFrameSetup(out_frame_size, &parallel_move);
@@ -882,7 +881,7 @@ class CodeGenerator : public DeletableArenaObject<kArenaAllocCodeGenerator> {
void FinishCriticalNativeFrameSetup(size_t out_frame_size, /*inout*/HParallelMove* parallel_move);
- static const char* GetCriticalNativeShorty(HInvokeStaticOrDirect* invoke, uint32_t* shorty_len);
+ static std::string_view GetCriticalNativeShorty(HInvokeStaticOrDirect* invoke);
OptimizingCompilerStats* stats_;
diff --git a/compiler/optimizing/optimizing_compiler.cc b/compiler/optimizing/optimizing_compiler.cc
index 65e8e51712..0e5de00f97 100644
--- a/compiler/optimizing/optimizing_compiler.cc
+++ b/compiler/optimizing/optimizing_compiler.cc
@@ -1224,7 +1224,7 @@ CompiledMethod* OptimizingCompiler::JniCompile(uint32_t access_flags,
}
JniCompiledMethod jni_compiled_method = ArtQuickJniCompileMethod(
- compiler_options, access_flags, method_idx, dex_file, &allocator);
+ compiler_options, dex_file.GetMethodShortyView(method_idx), access_flags, &allocator);
MaybeRecordStat(compilation_stats_.get(), MethodCompilationStat::kCompiledNativeStub);
ScopedArenaAllocator stack_map_allocator(&arena_stack); // Will hold the stack map.
@@ -1291,7 +1291,7 @@ bool OptimizingCompiler::JitCompile(Thread* self,
DCHECK_IMPLIES(method->IsCriticalNative(), !runtime->IsJavaDebuggable());
JniCompiledMethod jni_compiled_method = ArtQuickJniCompileMethod(
- compiler_options, access_flags, method_idx, *dex_file, &allocator);
+ compiler_options, dex_file->GetMethodShortyView(method_idx), access_flags, &allocator);
std::vector<Handle<mirror::Object>> roots;
ArenaSet<ArtMethod*, std::less<ArtMethod*>> cha_single_implementation_list(
allocator.Adapter(kArenaAllocCHA));