// thread states within each bucket.
//
// The queueing thread uses the eval breaker mechanism to notify the owning
-// thread that it has objects to merge. Additionaly, all queued objects are
+// thread that it has objects to merge. Additionally, all queued objects are
// merged during GC.
#include "Python.h"
#include "pycore_object.h" // _Py_ExplicitMergeRefcount
{
// Unlock all bucket mutexes. Some of the buckets may be locked because
// locks can be handed off to a parked thread (see lock.c). We don't have
- // to worry about consistency here, becuase no thread can be actively
+ // to worry about consistency here, because no thread can be actively
// modifying a bucket, but it might be paused (not yet woken up) on a
// PyMutex_Lock while holding that lock.
for (Py_ssize_t i = 0; i < _Py_BRC_NUM_BUCKETS; i++) {
localsplus[total_args] = u;
}
else if (argcount > n) {
- /* Too many postional args. Error is reported later */
+ /* Too many positional args. Error is reported later */
for (j = n; j < argcount; j++) {
Py_DECREF(args[j]);
}
}
/* This is used by _PyCompile_Assemble to fill in the jump and exception
- * targets in a synthetic CFG (which is not the ouptut of the builtin compiler).
+ * targets in a synthetic CFG (which is not the output of the builtin compiler).
*/
int
_PyCfg_JumpLabelsToTargets(cfg_builder *g)
// This implements the reference cycle garbage collector.
-// The Python module inteface to the collector is in gcmodule.c.
+// The Python module interface to the collector is in gcmodule.c.
// See https://devguide.python.org/internals/garbage-collector/
#include "Python.h"
* the incremental collector must progress through the old
* space faster than objects are added to the old space.
*
- * Each young or incremental collection adds a numebr of
+ * Each young or incremental collection adds a number of
* objects, S (for survivors) to the old space, and
* incremental collectors scan I objects from the old space.
* I > S must be true. We also want I > S * N to be where
*
* However, for single-phase init the module's init function will
* create the module, create other objects (and allocate other
- * memory), populate it and its module state, and initialze static
+ * memory), populate it and its module state, and initialize static
* types. Some modules store other objects and data in global C
* variables and register callbacks with the runtime/stdlib or
* even external libraries (which is part of why we can't just
/* We use a bloomfilter with k = 6, m = 256
* The choice of k and the following constants
- * could do with a more rigourous analysis,
+ * could do with a more rigorous analysis,
* but here is a simple analysis:
*
* We want to keep the false positive rate low.
- **opcode**: Sometimes the same as a Tier 1 opcode, sometimes a separate micro opcode. Tier 2 opcodes are 9 bits (as opposed to Tier 1 opcodes, which fit in 8 bits). By convention, Tier 2 opcode names start with `_`.
- **oparg**: The argument. Usually the same as the Tier 1 oparg after expansion of `EXTENDED_ARG` prefixes. Up to 32 bits.
-- **operand**: An aditional argument, Typically the value of *one* cache item from the Tier 1 inline cache, up to 64 bits.
+- **operand**: An additional argument, Typically the value of *one* cache item from the Tier 1 inline cache, up to 64 bits.