void ExecutionStack::iterate(OopVisitor* visitor) { #if USE_OOP_VISITOR Oop::iterate(visitor); NamedField id("thread", true); visitor->do_oop(&id, thread_offset(), true); #endif }
void ThreadObj::verify_fields() { UsingFastOops fast_oops; InstanceClass::Fast ic = Universe::thread_class(); ic().verify_instance_field("priority", "I", priority_offset()); ic().verify_instance_field("vm_thread", "Ljava/lang/Object;", thread_offset()); ic().verify_instance_field("is_terminated", "I", is_terminated_offset()); ic().verify_instance_field("is_stillborn", "I", is_stillborn_offset()); #if ENABLE_CLDC_11 ic().verify_instance_field("name", "[C", name_offset()); #endif }
void clear_thread() { GUARANTEE(is_terminated(), "Thread should be terminated"); obj_field_clear(thread_offset()); }
void set_thread(Oop* value) { GUARANTEE(is_unstarted(), "thread should not be started yet"); obj_field_put(thread_offset(), value); }
// Returns VM thread object corresponding to this java.lang.Thread instance. ReturnOop thread() { return obj_field(thread_offset()); }
static int CreateMaxThreads(void) { int i; int res = 1; // MIPS32 address space ends at 0x80000000 #if (defined(L4_ARCH_MIPS) && defined(L4_32BIT)) unsigned long utcb_base = 0x70000000; #else unsigned long utcb_base = 0xb0000000; #endif void * utcb = (void *)utcb_base; L4_Fpage_t utcb_area = L4_Fpage(utcb_base, 0x01000000); int max; L4_Word_t result; L4_SpaceId_t space; result = okl4_kspaceid_allocany(spaceid_pool, &space); fail_unless(result == OKL4_OK, "Failed to allocate any space id."); /* Create first thread (and address space) */ #ifdef NO_UTCB_RELOCATE utcb_area = L4_Nilpage; utcb = (void*)-1ul; #endif res = create_address_space(space, utcb_area); i = 3; // start creating threads after controlling space fail_unless(res == 1, "Failed to create controlling space\n"); /* create threads */ do { if (utcb) { utcb = (void *)(utcb_base + i * L4_GetUtcbSize()); } if (!isSystemThread(thread_offset(i))) { res = L4_ThreadControl(thread_offset(i), space, default_thread_handler, L4_nilthread, L4_nilthread, 0, (void *)utcb); } i++; } while (res == 1); max = i-3; /* delete threads */ for (; i >= 3; i--) { if (!isSystemThread(thread_offset(i))) { res = L4_ThreadControl(thread_offset(i), L4_nilspace, L4_nilthread, L4_nilthread, L4_nilthread, 0, (void *)0); } } res = L4_SpaceControl(space, L4_SpaceCtrl_delete, KTEST_CLIST, L4_Nilpage, 0, NULL); okl4_kspaceid_free(spaceid_pool, space); return max; }
void set_thread(ThreadObj* value) { obj_field_put(thread_offset(), value); }
void clear_thread() { obj_field_clear(thread_offset()); }
void set_thread(Thread* value) { obj_field_put(thread_offset(), (Oop*) value); }