Parcourir la source

Kernel: Specify inline capacity of return type in capture_stack_trace

Since the inline capacity of the Vector return type was not specified
explicitly, the vector was automatically copied to a 0-length inline
capacity one, essentially eliminating the optimization.
Idan Horowitz il y a 3 ans
Parent
commit
03b7352286
2 fichiers modifiés avec 2 ajouts et 2 suppressions
  1. 1 1
      Kernel/Arch/x86/Processor.h
  2. 1 1
      Kernel/Arch/x86/common/Processor.cpp

+ 1 - 1
Kernel/Arch/x86/Processor.h

@@ -398,7 +398,7 @@ public:
     NEVER_INLINE void switch_context(Thread*& from_thread, Thread*& to_thread);
     [[noreturn]] static void assume_context(Thread& thread, FlatPtr flags);
     FlatPtr init_context(Thread& thread, bool leave_crit);
-    static Vector<FlatPtr> capture_stack_trace(Thread& thread, size_t max_frames = 0);
+    static Vector<FlatPtr, 32> capture_stack_trace(Thread& thread, size_t max_frames = 0);
 
     static StringView platform_string();
 };

+ 1 - 1
Kernel/Arch/x86/common/Processor.cpp

@@ -491,7 +491,7 @@ const DescriptorTablePointer& Processor::get_gdtr()
     return m_gdtr;
 }
 
-Vector<FlatPtr> Processor::capture_stack_trace(Thread& thread, size_t max_frames)
+Vector<FlatPtr, 32> Processor::capture_stack_trace(Thread& thread, size_t max_frames)
 {
     FlatPtr frame_ptr = 0, ip = 0;
     Vector<FlatPtr, 32> stack_trace;