|
@@ -13206,10 +13206,10 @@ However, we limit tuples to a length of $50$ so that their length and
|
|
|
pointer mask can fit into the 64-bit tag at the beginning of each
|
|
|
tuple (Section~\ref{sec:data-rep-gc}). We intend arrays to allow
|
|
|
millions of elements, so we need more bits to store the length.
|
|
|
-However, because arrays are homogeneous, we only need $1$ bit for the
|
|
|
-pointer mask instead of one bit per array elements. Finally, the
|
|
|
-garbage collector will need to be able to distinguish between tuples
|
|
|
-and arrays, so we need to reserve $1$ bit for that purpose. So we
|
|
|
+However, because arrays are homogeneous, we only need one bit for the
|
|
|
+pointer mask instead of one bit per array element. Finally, the
|
|
|
+garbage collector must be able to distinguish between tuples
|
|
|
+and arrays, so we need to reserve one bit for that purpose. We
|
|
|
arrive at the following layout for the 64-bit tag at the beginning of
|
|
|
an array:
|
|
|
\begin{itemize}
|
|
@@ -13311,8 +13311,9 @@ operations. In particular, the new AST node \ALLOCARRAY{\Exp}{\Type}
|
|
|
is analogous to the \code{Allocate} AST node for tuples. The $\Type$
|
|
|
argument must be \ARRAYTY{T} where $T$ is the element type for the
|
|
|
array. The \code{AllocateArray} AST node allocates an array of the
|
|
|
-length specified by the $\Exp$ but does not initialize the elements of
|
|
|
-the array. Generate code in this pass to initialize the elements.
|
|
|
+length specified by the $\Exp$ (of type \INTTY), but does not initialize the elements of
|
|
|
+the array. Generate code in this pass to initialize the elements
|
|
|
+analogous to the case for tuples.
|
|
|
|
|
|
\subsection{Remove Complex Operands}
|
|
|
|