hash_sets_are_empty_ = false;
ClearFilteringHashSets();
+
+ heap_->isolate()->set_store_buffer_hash_set_1_address(hash_set_1_);
+ heap_->isolate()->set_store_buffer_hash_set_2_address(hash_set_2_);
}
void StoreBuffer::Compact() {
+ CHECK(hash_set_1_ == heap_->isolate()->store_buffer_hash_set_1_address());
+ CHECK(hash_set_2_ == heap_->isolate()->store_buffer_hash_set_2_address());
+
Address* top = reinterpret_cast<Address*>(heap_->store_buffer_top());
if (top == start_) return;
// TODO(bmeurer) Initialized lazily because it depends on flags; can
// be fixed once the default isolate cleanup is done.
random_number_generator_(NULL),
+ store_buffer_hash_set_1_address_(NULL),
+ store_buffer_hash_set_2_address_(NULL),
serializer_enabled_(enable_serializer),
has_fatal_error_(false),
initialized_from_snapshot_(false),
int GetNextUniqueSharedFunctionInfoId() { return next_unique_sfi_id_++; }
#endif
+ void set_store_buffer_hash_set_1_address(
+ uintptr_t* store_buffer_hash_set_1_address) {
+ store_buffer_hash_set_1_address_ = store_buffer_hash_set_1_address;
+ }
+
+ uintptr_t* store_buffer_hash_set_1_address() {
+ return store_buffer_hash_set_1_address_;
+ }
+
+ void set_store_buffer_hash_set_2_address(
+ uintptr_t* store_buffer_hash_set_2_address) {
+ store_buffer_hash_set_2_address_ = store_buffer_hash_set_2_address;
+ }
+
+ uintptr_t* store_buffer_hash_set_2_address() {
+ return store_buffer_hash_set_2_address_;
+ }
+
private:
explicit Isolate(bool enable_serializer);
unibrow::Mapping<unibrow::Ecma262Canonicalize> interp_canonicalize_mapping_;
CallInterfaceDescriptorData* call_descriptor_data_;
base::RandomNumberGenerator* random_number_generator_;
+ // TODO(hpayer): Remove the following store buffer addresses.
+ uintptr_t* store_buffer_hash_set_1_address_;
+ uintptr_t* store_buffer_hash_set_2_address_;
// Whether the isolate has been created for snapshotting.
bool serializer_enabled_;