diff --git a/nova_vm/src/heap.rs b/nova_vm/src/heap.rs
index ec9cbd7e..f1206817 100644
--- a/nova_vm/src/heap.rs
+++ b/nova_vm/src/heap.rs
@@ -2,10 +2,13 @@ mod array;
mod bigint;
mod boolean;
mod date;
+mod element_array;
mod error;
mod function;
+mod heap_bits;
mod heap_constants;
-mod heap_trace;
+mod heap_gc;
+pub(crate) mod indexes;
mod math;
mod number;
mod object;
@@ -18,13 +21,18 @@ use self::{
bigint::{initialize_bigint_heap, BigIntHeapData},
boolean::initialize_boolean_heap,
date::{initialize_date_heap, DateHeapData},
+ element_array::{
+ ElementArray2Pow10, ElementArray2Pow12, ElementArray2Pow16, ElementArray2Pow24,
+ ElementArray2Pow32, ElementArray2Pow4, ElementArray2Pow6, ElementArray2Pow8, ElementArrays,
+ ElementsVector,
+ },
error::{initialize_error_heap, ErrorHeapData},
function::{initialize_function_heap, FunctionHeapData, JsBindingFunction},
heap_constants::{
BuiltinObjectIndexes, FIRST_CONSTRUCTOR_INDEX, LAST_BUILTIN_OBJECT_INDEX,
LAST_WELL_KNOWN_SYMBOL_INDEX,
},
- heap_trace::HeapTrace,
+ indexes::{FunctionIndex, NumberIndex, ObjectIndex, StringIndex},
math::initialize_math_object,
number::{initialize_number_heap, NumberHeapData},
object::{
@@ -35,11 +43,14 @@ use self::{
symbol::{initialize_symbol_heap, SymbolHeapData},
};
use crate::value::Value;
-use std::cell::Cell;
use wtf8::Wtf8;
#[derive(Debug)]
pub struct Heap {
+ /// ElementsArrays is where all element arrays live;
+ /// Element arrays are static arrays of Values plus
+ /// a HashMap of possible property descriptors.
+ pub(crate) elements: ElementArrays,
pub(crate) arrays: Vec