projects
/
mono.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge pull request #5002 from BrzVlad/feature-sgen-modes
[mono.git]
/
mono
/
sgen
/
sgen-gc.c
diff --git
a/mono/sgen/sgen-gc.c
b/mono/sgen/sgen-gc.c
index b87bb300fe5c4a5fafa7cdc16cc87ba9e0b3635f..6cd939553a99cb91d0553e6a2e80e035fccbae43 100644
(file)
--- a/
mono/sgen/sgen-gc.c
+++ b/
mono/sgen/sgen-gc.c
@@
-1662,7
+1662,7
@@
collect_nursery (const char *reason, gboolean is_overflow, SgenGrayQueue *unpin_
object_ops_nopar = &sgen_minor_collector.serial_ops_with_concurrent_major;
} else {
object_ops_nopar = &sgen_minor_collector.serial_ops;
object_ops_nopar = &sgen_minor_collector.serial_ops_with_concurrent_major;
} else {
object_ops_nopar = &sgen_minor_collector.serial_ops;
- if (sgen_minor_collector.is_parallel) {
+ if (sgen_minor_collector.is_parallel
&& sgen_nursery_size >= SGEN_PARALLEL_MINOR_MIN_NURSERY_SIZE
) {
object_ops_par = &sgen_minor_collector.parallel_ops;
is_parallel = TRUE;
}
object_ops_par = &sgen_minor_collector.parallel_ops;
is_parallel = TRUE;
}
@@
-3597,12
+3597,15
@@
sgen_gc_init (void)
if (major_collector.is_concurrent || sgen_minor_collector.is_parallel) {
int num_workers = 1;
if (major_collector.is_parallel || sgen_minor_collector.is_parallel) {
if (major_collector.is_concurrent || sgen_minor_collector.is_parallel) {
int num_workers = 1;
if (major_collector.is_parallel || sgen_minor_collector.is_parallel) {
- /* FIXME Detect the number of physical cores, instead of logical */
- num_workers = mono_cpu_count () / 2;
- if (num_workers < 1)
+ num_workers = mono_cpu_count ();
+ if (num_workers <= 1) {
num_workers = 1;
num_workers = 1;
+ major_collector.is_parallel = FALSE;
+ sgen_minor_collector.is_parallel = FALSE;
+ }
}
}
- sgen_workers_init (num_workers, (SgenWorkerCallback) major_collector.worker_init_cb);
+ if (major_collector.is_concurrent || sgen_minor_collector.is_parallel)
+ sgen_workers_init (num_workers, (SgenWorkerCallback) major_collector.worker_init_cb);
}
sgen_memgov_init (max_heap, soft_limit, debug_print_allowance, allowance_ratio, save_target);
}
sgen_memgov_init (max_heap, soft_limit, debug_print_allowance, allowance_ratio, save_target);