* configure.ac (THREADDLLIBS): Use alternate thread library on
Solaris 8.
-* configure.ac (need_atomic_ops_asm): Set to true only for Sparc
+* configure.ac (need_atomic_ops_asm): Set to true only for SPARC
Solaris.
* configure.ac: Don't use libdl on mips-sgi-irix6.
#endif /* !GC_NO_THREADS_DISCOVERY */
/* Use implicit threads registration (all task threads excluding the GC */
-/* special ones are stoped and scanned). Should be called before */
+/* special ones are stopped and scanned). Should be called before */
/* GC_INIT() (or, at least, before going multi-threaded). Deprecated. */
GC_API void GC_CALL GC_use_threads_discovery(void)
{
o PPC Processor
- Struct Alignment: PowerPC
- uncheck "Store Static Data in TOC" -- important!
- I don't think the others matter, I use full optimization and its ok
+ I don't think the others matter, I use full optimization and it is OK
o PPC Linker
- Factory Settings (SYM file with full paths, faster linking, dead-strip
static init, Main: __start)
For convenience I used one test-project with several targets so that all
test apps are build at once. Two for each library to test: test.c and
-gc_app.cc. When I was satisfied that the libraries were ok. I put the
+gc_app.cc. When I was satisfied that the libraries were OK. I put the
libraries + gc.h + the c++ interface-file in a folder that I then put into
the MSL hierarchy so that I don't have to alter access-paths in projects
that use the GC.
but on some platforms it may require assembly code, or just
tweaking of conditional compilation tests.
<P>
-For GC7, if your platform supports <TT>getcontext()</tt>, then definining
+For GC7, if your platform supports <TT>getcontext()</tt>, then defining
the macro <TT>UNIX_LIKE</tt> for your OS in <TT>gcconfig.h</tt>
(if it isn't defined there already) is likely to solve the problem.
otherwise, if you are using gcc, <TT>_builtin_unwind_init()</tt>
ensure that a sufficient <TT>atomic_ops</tt> port
exists for the platform to provided an atomic test and set
operation. (Current GC7 versions require more<TT>atomic_ops</tt>
-asupport than necessary. This is a bug.) For earlier versions define
+support than necessary. This is a bug.) For earlier versions define
<TT>GC_test_and_set</tt> in <TT>gc_locks.h</tt>.
<LI>Making any needed adjustments to <TT>pthread_stop_world.c</tt> and
<TT>pthread_support.c</tt>. Ideally none should be needed. In fact,
/* should pass the size of the buffer (of GC_prof_stats_s type) to fill */
/* in the values - this is for interoperability between different GC */
/* versions, an old client could have fewer fields, and vice versa, */
-/* client could use newer gc.h (with more entires declared in the */
+/* client could use newer gc.h (with more entries declared in the */
/* structure) than that of the linked libgc binary; in the latter case, */
/* unsupported (unknown) fields are filled in with -1. Return the size */
/* (in bytes) of the filled in part of the structure (excluding all */
GC_EXTERN GC_bool GC_have_errors; /* We saw a smashed or leaked object. */
/* Call error printing routine */
- /* occasionally. It is ok to read it */
+ /* occasionally. It is OK to read it */
/* without acquiring the lock. */
#define VERBOSE 2
# ifdef __ELF__
# define DYNAMIC_LOADING
# else
- Linux Sparc/a.out not supported
+# error --> Linux SPARC a.out not supported
# endif
extern int _end[];
extern int _etext[];
# define DATASTART ((ptr_t)((((word) (etext)) + 0xfff) & ~0xfff))
# endif
# ifdef USE_I686_PREFETCH
- /* FIXME: Thus should use __builtin_prefetch, but we'll leave that */
- /* for the next rtelease. */
+ /* FIXME: Thus should use __builtin_prefetch, but we'll leave */
+ /* that for the next release. */
# define PREFETCH(x) \
__asm__ __volatile__ ("prefetchnta %0" : : "m"(*(char *)(x)))
/* Empirically prefetcht0 is much more effective at reducing */
GC_release_mark_lock();
LOCK();
/* GC lock is needed for reclaim list access. We */
- /* must decrement fl_builder_count before reaquiring GC */
- /* lock. Hopefully this path is rare. */
+ /* must decrement fl_builder_count before reacquiring */
+ /* the lock. Hopefully this path is rare. */
}
# endif
}
/* is a multiple of align. That would be correct up to HBLKSIZE. */
new_lb = lb + align - 1;
result = GC_malloc(new_lb);
- /* It is ok not to check result for NULL as in that case */
+ /* It is OK not to check result for NULL as in that case */
/* GC_memalign returns NULL too since (0 + 0 % align) is 0. */
offset = (word)result % align;
if (offset != 0) {
#ifdef ENABLE_DISCLAIM
/* Unconditionally mark from all objects which have not been reclaimed. */
-/* This is useful in order to retain pointes which are reachable from */
+/* This is useful in order to retain pointers which are reachable from */
/* the disclaim notifiers. */
/* */
/* To determine whether an object has been reclaimed, we require that */
} /* Otherwise it's not safe to add 16 bytes and we fall */
/* back to using /proc. */
# elif defined(SPARC)
- /* Older versions of glibc for 64-bit Sparc do not set
- * this variable correctly, it gets set to either zero
- * or one.
- */
+ /* Older versions of glibc for 64-bit SPARC do not set this */
+ /* variable correctly, it gets set to either zero or one. */
if (__libc_stack_end != (ptr_t) (unsigned long)0x1)
return __libc_stack_end;
# else
{
while (GC_n_heap_bases-- > 0) {
# ifdef CYGWIN32
- /* FIXME: Is it ok to use non-GC free() here? */
+ /* FIXME: Is it OK to use non-GC free() here? */
# else
GlobalFree(GC_heap_bases[GC_n_heap_bases]);
# endif
} GC_mprotect_state_t;
#ifdef THREADS
- /* FIXME: 1 and 2 seem to be safe to use in the msgh_id field, */
- /* but it isn't documented. Use the source and see if they */
- /* should be ok. */
+ /* FIXME: 1 and 2 seem to be safe to use in the msgh_id field, but it */
+ /* is not documented. Use the source and see if they should be OK. */
# define ID_STOP 1
# define ID_RESUME 2
# define REAL_FUNC(f) GC_real_##f
/* We define both GC_f and plain f to be the wrapped function. */
/* In that way plain calls work, as do calls from files that */
- /* included gc.h, wich redefined f to GC_f. */
+ /* included gc.h, which redefined f to GC_f. */
/* FIXME: Needs work for DARWIN and True64 (OSF1) */
typedef int (* GC_pthread_create_t)(pthread_t *,
GC_PTHREAD_CREATE_CONST pthread_attr_t *,
me = p;
p -> next = 0;
# ifdef GC_DARWIN_THREADS
- /* Update thread Id after fork (it is ok to call */
+ /* Update thread Id after fork (it is OK to call */
/* GC_destroy_thread_local and GC_free_internal */
/* before update). */
me -> stop_info.mach_thread = mach_thread_self();
# if defined(THREAD_LOCAL_ALLOC) && !defined(USE_CUSTOM_SPECIFIC)
/* Some TLS implementations might be not fork-friendly, so */
/* we re-assign thread-local pointer to 'tlfs' for safety */
- /* instead of the assertion check (again, it is ok to call */
+ /* instead of the assertion check (again, it is OK to call */
/* GC_destroy_thread_local and GC_free_internal before). */
if (GC_setspecific(GC_thread_key, &me->tlfs) != 0)
ABORT("GC_setspecific failed (in child)");
# if defined(THREAD_LOCAL_ALLOC) && !defined(USE_CUSTOM_SPECIFIC)
/* For Cygwin, we need to re-assign thread-local pointer to */
- /* 'tlfs' (it is ok to call GC_destroy_thread_local and */
+ /* 'tlfs' (it is OK to call GC_destroy_thread_local and */
/* GC_free_internal before this action). */
if (GC_setspecific(GC_thread_key, &me->tlfs) != 0)
ABORT("GC_setspecific failed (in child)");
/* does not work because they are used with different checked */
/* conditions in different places (and, in addition, notifying is */
/* done after leaving critical section) and this could result in */
- /* a signal loosing between checking for a particular condition */
+ /* a signal losing between checking for a particular condition */
/* and calling WaitForSingleObject. So, we use PulseEvent() and */
/* NT SignalObjectAndWait() (which atomically sets mutex event to */
/* signaled state and starts waiting on condvar). A special */