+
+ {
+ tws_hash_line_t line;
+ task_t task;
+
+ task = current_task();
+ if((map != NULL) &&
+ (task->dynamic_working_set != 0) &&
+ !(object->private)) {
+ kern_return_t kr;
+ vm_object_t base_object;
+ vm_object_offset_t base_offset;
+ base_object = object;
+ base_offset = cur_offset;
+ while(base_object->shadow) {
+ base_offset +=
+ base_object->shadow_offset;
+ base_object =
+ base_object->shadow;
+ }
+ kr = tws_lookup((tws_hash_t)
+ task->dynamic_working_set,
+ base_offset, base_object,
+ &line);
+ if(kr == KERN_OPERATION_TIMED_OUT){
+ write_startup_file = 1;
+ } else if (kr != KERN_SUCCESS) {
+ kr = tws_insert((tws_hash_t)
+ task->dynamic_working_set,
+ base_offset, base_object,
+ vaddr, pmap_map);
+ if(kr == KERN_NO_SPACE) {
+ vm_object_unlock(object);
+
+ tws_expand_working_set(
+ task->dynamic_working_set,
+ TWS_HASH_LINE_COUNT,
+ FALSE);
+
+ vm_object_lock(object);
+ }
+ if(kr ==
+ KERN_OPERATION_TIMED_OUT) {
+ write_startup_file = 1;
+ }
+ }
+ }
+ }