Changeset 12152 in project
- Timestamp:
- 10/14/08 10:39:25 (12 years ago)
- Location:
- chicken/branches/cmi
- Files:
-
- 4 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
chicken/branches/cmi/benchmarks/cscbench.scm
r12140 r12152 7 7 (define flonum-files '("fft" "maze")) 8 8 9 (define cc "` ../csc -cc-name`")10 (define chicken " ../chicken")9 (define cc "`csc -cc-name`") 10 (define chicken "chicken") 11 11 12 12 (define (abort-run) #f) … … 87 87 (system* "~A -v" cc) ) 88 88 (dflush "\nCFLAGS:\n") 89 (system* "echo ` ../csc -cflags`")90 (display "\n base unsafemax\n")89 (system* "echo `csc -cflags`") 90 (display "\n base unsafe max\n") 91 91 (let ((sum-base 0.0) 92 92 (sum-unsafe 0.0) … … 106 106 (newline) 107 107 (flush-output) ) ) 108 (lset-difference string=? (sort (glob "*.scm") string<?) '(" plists.scm")))108 (lset-difference string=? (sort (glob "*.scm") string<?) '("cscbench.scm"))) 109 109 (display "\nTOTAL ") 110 110 (display-f-4.3 sum-base) -
chicken/branches/cmi/distribution/manifest
r12117 r12152 9 9 banner.scm 10 10 batch-driver.scm 11 benchmarks/cscbench.scm 11 12 benchmarks/boyer.scm 12 13 benchmarks/browse.scm … … 110 111 csc.1 111 112 csc.scm 112 cscbench.scm113 113 csi.1 114 114 csi.scm -
chicken/branches/cmi/library.scm
r11989 r12152 3249 3249 (if (##sys#fudge 32) " gchooks" "") 3250 3250 (if (##sys#fudge 35) " applyhook" "") 3251 (if (##sys#fudge 22) " lockts" "")3252 3251 (if (##sys#fudge 37) " hostpcre" "") 3253 3252 (if (##sys#fudge 39) " cross" "") ) ) ) -
chicken/branches/cmi/rules.make
r12151 r12152 1393 1393 1394 1394 bench: 1395 here=`pwd`; cd $(SRCDIR)benchmark; \ 1396 LD_LIBRARY_PATH=$$here DYLD_LIBRARY_PATH=$$here \ 1397 $$here/csi -s $(SRCDIR)cscbench.scm $(BENCHMARK_OPTIONS) 1395 here=`pwd`; \ 1396 cd $(SRCDIR)benchmarks; \ 1397 LD_LIBRARY_PATH=$$here DYLD_LIBRARY_PATH=$$here PATH=$$here:$$PATH \ 1398 csi -s cscbench.scm $(BENCHMARK_OPTIONS) -
chicken/branches/cmi/runtime.c
r12021 r12152 148 148 #if defined(C_NO_HACKED_APPLY) && defined(C_HACKED_APPLY) 149 149 # undef C_HACKED_APPLY 150 #endif151 152 #ifdef C_LOCK_TOSPACE153 #include <sys/mman.h>154 150 #endif 155 151 … … 529 525 static C_word get_unbound_variable_value(C_word sym); 530 526 static LF_LIST *find_module_handle(C_char *name); 531 static void lock_tospace(int lock);532 527 533 528 static C_ccall void call_cc_wrapper(C_word c, C_word closure, C_word k, C_word result) C_noret; … … 658 653 return 0; 659 654 660 #ifdef C_LOCK_TOSPACE661 page_size = sysconf(_SC_PAGESIZE);662 assert(page_size > -1);663 #else664 655 page_size = 0; 665 #endif666 656 stack_size = stack ? stack : DEFAULT_STACK_SIZE; 667 657 C_set_or_change_heap_size(heap ? heap : DEFAULT_HEAP_SIZE, 0); … … 1037 1027 /* Align memory to page boundary */ 1038 1028 1039 #ifndef C_LOCK_TOSPACE1040 1029 static void *align_to_page(void *mem) 1041 1030 { 1042 1031 return (void *)C_align((C_uword)mem); 1043 1032 } 1044 #endif 1033 1045 1034 1046 1035 static C_byte * … … 1048 1037 { 1049 1038 C_byte *p; 1050 #ifdef C_LOCK_TOSPACE1051 p = (C_byte *)mmap (NULL, size, (PROT_READ | PROT_WRITE),1052 (MAP_PRIVATE | MAP_ANON), -1, 0);1053 if (p != NULL && page_aligned) *page_aligned = p;1054 #else1055 1039 p = (C_byte *)C_malloc (size + page_size); 1040 1056 1041 if (p != NULL && page_aligned) *page_aligned = align_to_page (p); 1057 #endif 1058 1059 /* . */ 1042 1060 1043 return p; 1061 1044 } 1045 1062 1046 1063 1047 static void 1064 1048 heap_free (C_byte *ptr, size_t size) 1065 1049 { 1066 #ifdef C_LOCK_TOSPACE1067 int r = munmap (ptr, size);1068 assert (r == 0);1069 #else1070 1050 C_free (ptr); 1071 #endif 1072 /* . */ 1073 } 1051 } 1052 1074 1053 1075 1054 static C_byte * … … 1078 1057 { 1079 1058 C_byte *p; 1080 #ifdef C_LOCK_TOSPACE1081 p = (C_byte *)mmap (NULL, new_size, (PROT_READ | PROT_WRITE),1082 (MAP_PRIVATE | MAP_ANON), -1, 0);1083 if (ptr != NULL) {1084 memcpy (p, ptr, old_size);1085 heap_free (ptr, old_size);1086 }1087 if (p != NULL && page_aligned) *page_aligned = p;1088 #else1089 1059 p = (C_byte *)C_realloc (ptr, new_size + page_size); 1060 1090 1061 if (p != NULL && page_aligned) *page_aligned = align_to_page (p); 1091 #endif 1092 1093 /* . */ 1062 1094 1063 return p; 1095 1064 } 1065 1096 1066 1097 1067 /* Modify heap size at runtime: */ … … 1127 1097 tospace_limit = tospace_start + size; 1128 1098 mutation_stack_top = mutation_stack_bottom; 1129 lock_tospace(1);1130 1099 1131 1100 if(reintern) initialize_symbol_table(); … … 2708 2677 2709 2678 2710 static void lock_tospace(int lock)2711 {2712 #ifdef C_LOCK_TOSPACE2713 int r;2714 2715 r = mprotect(tospace_start, (heap_size / 2),2716 lock ? PROT_NONE : (PROT_READ | PROT_WRITE));2717 2718 if(r == -1) panic(strerror(errno));2719 #endif2720 }2721 2722 2723 2679 C_regparm void C_fcall C_reclaim(void *trampoline, void *proc) 2724 2680 { … … 2746 2702 if(C_pre_gc_hook != NULL) C_pre_gc_hook(GC_MINOR); 2747 2703 2748 lock_tospace(0);2749 2704 finalizers_checked = 0; 2750 2705 C_restart_trampoline = (TRAMPOLINE)trampoline; … … 3015 2970 if(C_post_gc_hook != NULL) C_post_gc_hook(gc_mode, tgc); 3016 2971 3017 lock_tospace(1);3018 2972 /* Jump from the Empire State Building... */ 3019 2973 C_longjmp(C_restart, 1); … … 3195 3149 size_t new_heapspace_size; 3196 3150 3197 lock_tospace(0);3198 3199 3151 if(C_pre_gc_hook != NULL) C_pre_gc_hook(GC_REALLOC); 3200 3152 … … 3323 3275 C_fromspace_top = new_tospace_top; 3324 3276 C_fromspace_limit = new_tospace_limit; 3325 lock_tospace(1);3326 3277 3327 3278 if(gc_report_flag) { … … 4193 4144 return C_fix(C_MOST_POSITIVE_FIXNUM); 4194 4145 4195 case C_fix(22): 4196 #ifdef C_LOCK_TOSPACE 4197 return C_SCHEME_TRUE; 4198 #else 4199 return C_SCHEME_FALSE; 4200 #endif 4146 /* 22 */ 4201 4147 4202 4148 case C_fix(23):
Note: See TracChangeset
for help on using the changeset viewer.