Exemplo n.º 1
0
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);
}
Exemplo n.º 2
0
/** 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();
  }
}
Exemplo n.º 3
0
bool verify_heap() { return The_Memory_System()->verify(); }
Exemplo n.º 4
0
sqInt setSavedWindowSize(sqInt s) { The_Memory_System()->snapshot_window_size.savedWindowSize(s); return 0; }
Exemplo n.º 5
0
sqInt incrementalGC(void) { The_Memory_System()->incrementalGC(); return 0; }
Exemplo n.º 6
0
sqInt getSavedWindowSize() { return The_Memory_System()->snapshot_window_size.savedWindowSize(); }
Exemplo n.º 7
0
sqInt fullGC() { The_Memory_System()->fullGC("fullGC from original Squeak code"); return 0; }
Exemplo n.º 8
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);
}
Exemplo n.º 9
0
void screenInfoMessage_class::handle_me() {
  screenInfoResponse_class(ioScreenSize(), The_Memory_System()->snapshot_window_size.fullScreenFlag()).send_to(sender);
}
Exemplo n.º 10
0
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();
}
Exemplo n.º 11
0
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();
}
Exemplo n.º 12
0
void scanCompactOrMakeFreeObjectsMessage_class::handle_me() {
  The_Memory_System()->scan_compact_or_make_free_objects_here(compacting, gc_or_null);
}
Exemplo n.º 13
0
void imageNamePutMessage_class::handle_me() {
  The_Memory_System()->imageNamePut_on_this_core(image_name, (int)len);
}
Exemplo n.º 14
0
void enforceCoherenceBeforeSenderStoresIntoAllHeapsMessage_class::handle_me() {
  The_Memory_System()->invalidate_heaps_and_fence(true);
}
Exemplo n.º 15
0
void enforceCoherenceBeforeEachCoreStoresIntoItsOwnHeapMessage_class::handle_me() {
  The_Memory_System()->invalidate_heaps_and_fence(false);
}
Exemplo n.º 16
0
void enforceCoherenceAfterEachCoreHasStoredIntoItsOwnHeapMessage_class::handle_me() {
  The_Memory_System()->heaps[Logical_Core::my_rank()][Memory_System::read_mostly]->enforce_coherence_in_whole_heap_after_store();
}