diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2008-10-18 23:27:01 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-10-20 11:52:32 -0400 |
commit | cb8f488c33539f096580e202f5438a809195008f (patch) | |
tree | 888b60a8638774d50ba897526e24b25ccc28c30f | |
parent | 51b07fc3c5c830bb49c80fc5eac041e1f66a72e7 (diff) |
mmap.c: deinline a few functions
__vma_link_file and expand_downwards functions are not small, yeat they
are marked inline. They probably had one callsite sometime in the past,
but now they have more. In order to prevent similar thing, I also
deinlined expand_upwards, despite it having only pne callsite. Nowadays
gcc auto-inlines such static functions anyway. In find_extend_vma, I
removed one extra level of indirection.
Patch is deliberately generated with -U $BIGNUM to make
it easier to see that functions are big.
Result:
# size */*/mmap.o */vmlinux
text data bss dec hex filename
9514 188 16 9718 25f6 0.org/mm/mmap.o
9237 188 16 9441 24e1 deinline/mm/mmap.o
6124402 858996 389480 7372878 70804e 0.org/vmlinux
6124113 858996 389480 7372589 707f2d deinline/vmlinux
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Cc: Hugh Dickins <hugh@veritas.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r-- | mm/mmap.c | 8 |
1 files changed, 4 insertions, 4 deletions
@@ -410,7 +410,7 @@ void __vma_link_rb(struct mm_struct *mm, struct vm_area_struct *vma, | |||
410 | rb_insert_color(&vma->vm_rb, &mm->mm_rb); | 410 | rb_insert_color(&vma->vm_rb, &mm->mm_rb); |
411 | } | 411 | } |
412 | 412 | ||
413 | static inline void __vma_link_file(struct vm_area_struct *vma) | 413 | static void __vma_link_file(struct vm_area_struct *vma) |
414 | { | 414 | { |
415 | struct file * file; | 415 | struct file * file; |
416 | 416 | ||
@@ -1591,7 +1591,7 @@ static int acct_stack_growth(struct vm_area_struct * vma, unsigned long size, un | |||
1591 | * vma is the last one with address > vma->vm_end. Have to extend vma. | 1591 | * vma is the last one with address > vma->vm_end. Have to extend vma. |
1592 | */ | 1592 | */ |
1593 | #ifndef CONFIG_IA64 | 1593 | #ifndef CONFIG_IA64 |
1594 | static inline | 1594 | static |
1595 | #endif | 1595 | #endif |
1596 | int expand_upwards(struct vm_area_struct *vma, unsigned long address) | 1596 | int expand_upwards(struct vm_area_struct *vma, unsigned long address) |
1597 | { | 1597 | { |
@@ -1641,7 +1641,7 @@ int expand_upwards(struct vm_area_struct *vma, unsigned long address) | |||
1641 | /* | 1641 | /* |
1642 | * vma is the first one with address < vma->vm_start. Have to extend vma. | 1642 | * vma is the first one with address < vma->vm_start. Have to extend vma. |
1643 | */ | 1643 | */ |
1644 | static inline int expand_downwards(struct vm_area_struct *vma, | 1644 | static int expand_downwards(struct vm_area_struct *vma, |
1645 | unsigned long address) | 1645 | unsigned long address) |
1646 | { | 1646 | { |
1647 | int error; | 1647 | int error; |
@@ -1703,7 +1703,7 @@ find_extend_vma(struct mm_struct *mm, unsigned long addr) | |||
1703 | vma = find_vma_prev(mm, addr, &prev); | 1703 | vma = find_vma_prev(mm, addr, &prev); |
1704 | if (vma && (vma->vm_start <= addr)) | 1704 | if (vma && (vma->vm_start <= addr)) |
1705 | return vma; | 1705 | return vma; |
1706 | if (!prev || expand_stack(prev, addr)) | 1706 | if (expand_stack(prev, addr)) |
1707 | return NULL; | 1707 | return NULL; |
1708 | if (prev->vm_flags & VM_LOCKED) { | 1708 | if (prev->vm_flags & VM_LOCKED) { |
1709 | if (mlock_vma_pages_range(prev, addr, prev->vm_end) < 0) | 1709 | if (mlock_vma_pages_range(prev, addr, prev->vm_end) < 0) |