kernel/x86_64: help gcc with devirtualization

This patch gets rid of some indirect calls in the paging code.
This commit is contained in:
Paweł Dziepak 2014-05-30 02:11:05 +02:00
parent fb010e297f
commit b20eb413cd
4 changed files with 12 additions and 7 deletions

View File

@ -25,7 +25,7 @@ class X86PhysicalPageMapper;
struct vm_page_reservation;
class X86PagingMethod64Bit : public X86PagingMethod {
class X86PagingMethod64Bit final : public X86PagingMethod {
public:
X86PagingMethod64Bit();
virtual ~X86PagingMethod64Bit();

View File

@ -10,7 +10,7 @@
#include "paging/X86PagingStructures.h"
struct X86PagingStructures64Bit : X86PagingStructures {
struct X86PagingStructures64Bit final : X86PagingStructures {
X86PagingStructures64Bit();
virtual ~X86PagingStructures64Bit();

View File

@ -13,7 +13,7 @@
struct X86PagingStructures64Bit;
struct X86VMTranslationMap64Bit : X86VMTranslationMap {
struct X86VMTranslationMap64Bit final : X86VMTranslationMap {
X86VMTranslationMap64Bit();
virtual ~X86VMTranslationMap64Bit();

View File

@ -9,6 +9,11 @@
#include <vm/VMTranslationMap.h>
#if __GNUC__ < 4
#define final
#endif
#define PAGE_INVALIDATE_CACHE_SIZE 64
@ -22,12 +27,12 @@ struct X86VMTranslationMap : VMTranslationMap {
status_t Init(bool kernel);
virtual bool Lock();
virtual void Unlock();
virtual bool Lock() final;
virtual void Unlock() final;
virtual addr_t MappedSize() const;
virtual addr_t MappedSize() const final;
virtual void Flush();
virtual void Flush() final;
virtual X86PagingStructures* PagingStructures() const = 0;