diff options
| author | Russ Cox <rsc@golang.org> | 2010-09-07 09:57:22 -0400 |
|---|---|---|
| committer | Russ Cox <rsc@golang.org> | 2010-09-07 09:57:22 -0400 |
| commit | d4cc557b0d61ac02d0ff153ecd643867e803ed1f (patch) | |
| tree | c8301a638fd5010bb90b6a6d415ec371c74ba3ce /src/pkg/runtime/linux/arm/sys.s | |
| parent | 6f5f558c101a5948f1d90007fe93159804743bb6 (diff) | |
| download | go-d4cc557b0d61ac02d0ff153ecd643867e803ed1f.tar.xz | |
runtime: use manual stack for garbage collection
Old code was using recursion to traverse object graph.
New code uses an explicit stack, cutting the per-pointer
footprint to two words during the recursion and avoiding
the standard allocator and stack splitting code.
in test/garbage:
Reduces parser runtime by 2-3%
Reduces Peano runtime by 40%
Increases tree runtime by 4-5%
R=r
CC=golang-dev
https://golang.org/cl/2150042
Diffstat (limited to 'src/pkg/runtime/linux/arm/sys.s')
| -rw-r--r-- | src/pkg/runtime/linux/arm/sys.s | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/pkg/runtime/linux/arm/sys.s b/src/pkg/runtime/linux/arm/sys.s index f30aed0012..6824e29e85 100644 --- a/src/pkg/runtime/linux/arm/sys.s +++ b/src/pkg/runtime/linux/arm/sys.s @@ -25,6 +25,7 @@ #define SYS_gettid (SYS_BASE + 224) #define SYS_futex (SYS_BASE + 240) #define SYS_exit_group (SYS_BASE + 248) +#define SYS_munmap (SYS_BASE + 91) #define ARM_BASE (SYS_BASE + 0x0f0000) #define SYS_ARM_cacheflush (ARM_BASE + 2) @@ -64,6 +65,13 @@ TEXT ·mmap(SB),7,$0 SWI $0 RET +TEXT ·mmap(SB),7,$0 + MOVW 0(FP), R0 + MOVW 4(FP), R1 + MOVW $SYS_munmap, R7 + SWI $0 + RET + TEXT gettime(SB),7,$32 /* dummy version - return 0,0 */ MOVW $0, R1 |
