From aad352f8112a6bca30c2b4b0451797c3cfc96007 Mon Sep 17 00:00:00 2001 From: Victor Chang Date: Mon, 18 Jul 2022 15:08:09 +0100 Subject: Retrieve StackFrameInfo fields from the runtime Bug: 191862780 Test: atest art_standalone_runtime_tests Test: atest CtsLibcoreOjTestCases:test.java.lang.StackWalker.Basic Change-Id: I481e07e0ee23b82ba685478a1b8f27b0747baf31 --- runtime/class_linker_test.cc | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'runtime/class_linker_test.cc') diff --git a/runtime/class_linker_test.cc b/runtime/class_linker_test.cc index 0e7dee8c9f..666f86eca6 100644 --- a/runtime/class_linker_test.cc +++ b/runtime/class_linker_test.cc @@ -52,6 +52,7 @@ #include "mirror/object_array-inl.h" #include "mirror/proxy.h" #include "mirror/reference.h" +#include "mirror/stack_frame_info.h" #include "mirror/stack_trace_element.h" #include "mirror/string-inl.h" #include "mirror/var_handle.h" @@ -641,6 +642,20 @@ struct StackTraceElementOffsets : public CheckOffsets } }; +struct StackFrameInfoOffsets : public CheckOffsets { + StackFrameInfoOffsets() : CheckOffsets( + false, "Ljava/lang/StackFrameInfo;") { + addOffset(OFFSETOF_MEMBER(mirror::StackFrameInfo, bci_), "bci"); + addOffset(OFFSETOF_MEMBER(mirror::StackFrameInfo, declaring_class_), "declaringClass"); + addOffset(OFFSETOF_MEMBER(mirror::StackFrameInfo, file_name_), "fileName"); + addOffset(OFFSETOF_MEMBER(mirror::StackFrameInfo, line_number_), "lineNumber"); + addOffset(OFFSETOF_MEMBER(mirror::StackFrameInfo, method_name_), "methodName"); + addOffset(OFFSETOF_MEMBER(mirror::StackFrameInfo, method_type_), "methodType"); + addOffset(OFFSETOF_MEMBER(mirror::StackFrameInfo, retain_class_ref_), "retainClassRef"); + addOffset(OFFSETOF_MEMBER(mirror::StackFrameInfo, ste_), "ste"); + } +}; + struct ClassLoaderOffsets : public CheckOffsets { ClassLoaderOffsets() : CheckOffsets(false, "Ljava/lang/ClassLoader;") { addOffset(OFFSETOF_MEMBER(mirror::ClassLoader, allocator_), "allocator"); @@ -859,6 +874,7 @@ TEST_F(ClassLinkerTest, ValidateFieldOrderOfJavaCppUnionClasses) { EXPECT_TRUE(ArrayElementVarHandleOffsets().Check()); EXPECT_TRUE(ByteArrayViewVarHandleOffsets().Check()); EXPECT_TRUE(ByteBufferViewVarHandleOffsets().Check()); + EXPECT_TRUE(StackFrameInfoOffsets().Check()); } TEST_F(ClassLinkerTest, FindClassNonexistent) { -- cgit v1.2.3-59-g8ed1b