void aboutToWriteReadMostlyMemoryMessage_class::handle_me() { if (!The_Memory_System()->contains(addr) && The_Memory_System()->object_table->probably_contains_not(addr)) { lprintf("%d about to do bad remote invalidate %d (%s) 0x%x (%s) 0x%x\n", getpid(), sender, Message_Statics::message_names[sender], addr, Message_Statics::message_names[(int)addr], nbytes); OS_Interface::die("bad remote invalidate"); } OS_Interface::invalidate_mem(addr, nbytes); }
/** Inspired by: !Interpreter methodsFor: 'image save/restore' stamp: 'dtl 10/5/2010 23:54'! normalizeFloatOrderingInImage "Float objects were saved in platform word ordering. Reorder them into the traditional object format." */ void Squeak_Image_Reader::normalize_float_ordering_in_image() { Squeak_Interpreter* const interp = The_Squeak_Interpreter(); Memory_System* const mem_sys = The_Memory_System(); Oop cls = interp->splObj(Special_Indices::ClassFloat); for (Oop floatInstance = mem_sys->initialInstanceOf(cls); floatInstance != interp->roots.nilObj; floatInstance = mem_sys->nextInstanceAfter(floatInstance) ) { /* Swap words within Float objects, taking them out of native platform ordering */ floatInstance.as_object()->swapFloatParts_for_cog_compatibility(); } }
bool verify_heap() { return The_Memory_System()->verify(); }
sqInt setSavedWindowSize(sqInt s) { The_Memory_System()->snapshot_window_size.savedWindowSize(s); return 0; }
sqInt incrementalGC(void) { The_Memory_System()->incrementalGC(); return 0; }
sqInt getSavedWindowSize() { return The_Memory_System()->snapshot_window_size.savedWindowSize(); }
sqInt fullGC() { The_Memory_System()->fullGC("fullGC from original Squeak code"); return 0; }
void addObjectFromSnapshotMessage_class::handle_me() { Object* dst_obj = The_Memory_System()->add_object_from_snapshot_to_a_local_heap_allocating_chunk(dst_oop, src_obj_wo_preheader); addObjectFromSnapshotResponse_class(dst_obj).send_to(sender); }
void screenInfoMessage_class::handle_me() { screenInfoResponse_class(ioScreenSize(), The_Memory_System()->snapshot_window_size.fullScreenFlag()).send_to(sender); }
void zapUnusedPortionOfHeapMessage_class::handle_me() { The_Memory_System()->heaps[Logical_Core::my_rank()][Memory_System:: read_write]->zap_unused_portion(); The_Memory_System()->heaps[Logical_Core::my_rank()][Memory_System::read_mostly]->zap_unused_portion(); }
void verifyInterpreterAndHeapMessage_class::handle_me() { The_Squeak_Interpreter()->verify(); The_Memory_System()->heaps[Logical_Core::my_rank()][Memory_System::read_mostly]->verify(); The_Memory_System()->heaps[Logical_Core::my_rank()][Memory_System:: read_write]->verify(); }
void scanCompactOrMakeFreeObjectsMessage_class::handle_me() { The_Memory_System()->scan_compact_or_make_free_objects_here(compacting, gc_or_null); }
void imageNamePutMessage_class::handle_me() { The_Memory_System()->imageNamePut_on_this_core(image_name, (int)len); }
void enforceCoherenceBeforeSenderStoresIntoAllHeapsMessage_class::handle_me() { The_Memory_System()->invalidate_heaps_and_fence(true); }
void enforceCoherenceBeforeEachCoreStoresIntoItsOwnHeapMessage_class::handle_me() { The_Memory_System()->invalidate_heaps_and_fence(false); }
void enforceCoherenceAfterEachCoreHasStoredIntoItsOwnHeapMessage_class::handle_me() { The_Memory_System()->heaps[Logical_Core::my_rank()][Memory_System::read_mostly]->enforce_coherence_in_whole_heap_after_store(); }