for (ResolvedJavaMethod candidate : metaAccess.lookupJavaType(CEntryPointBuiltins.class).getDeclaredMethods()) { CEntryPointBuiltinImplementation annotation = candidate.getAnnotation(CEntryPointBuiltinImplementation.class); if (annotation != null && annotation.builtin().equals(builtin)) { VMError.guarantee(builtinCallee == null, "More than one candidate for @" + CEntryPoint.class.getSimpleName() + " built-in " + builtin); builtinCallee = candidate;
@Uninterruptible(reason = UNINTERRUPTIBLE_REASON) @CEntryPoint @CEntryPointOptions(prologue = NoPrologue.class, epilogue = NoEpilogue.class, publishAs = Publish.NotPublished) @CEntryPointBuiltinImplementation(builtin = Builtin.GET_CURRENT_THREAD) public static IsolateThread getCurrentThread(Isolate isolate) { int status = CEntryPointActions.enterIsolate(isolate); if (status != 0) { return WordFactory.nullPointer(); } IsolateThread thread = CurrentIsolate.getCurrentThread(); if (CEntryPointActions.leave() != 0) { thread = WordFactory.nullPointer(); } return thread; }
@Uninterruptible(reason = UNINTERRUPTIBLE_REASON) @CEntryPoint @CEntryPointOptions(prologue = NoPrologue.class, epilogue = NoEpilogue.class, publishAs = Publish.NotPublished) @CEntryPointBuiltinImplementation(builtin = Builtin.GET_ISOLATE) public static Isolate getIsolate(IsolateThread thread) { int status = CEntryPointActions.enter(thread); if (status != 0) { return WordFactory.nullPointer(); } Isolate isolate = CurrentIsolate.getIsolate(); if (CEntryPointActions.leave() != 0) { isolate = WordFactory.nullPointer(); } return isolate; }
@Uninterruptible(reason = UNINTERRUPTIBLE_REASON) @CEntryPoint @CEntryPointOptions(prologue = NoPrologue.class, epilogue = NoEpilogue.class, publishAs = Publish.NotPublished) @CEntryPointBuiltinImplementation(builtin = Builtin.ATTACH_THREAD) public static IsolateThread attachThread(Isolate isolate) { IsolateThread result = WordFactory.nullPointer(); int status = CEntryPointActions.enterAttachThread(isolate); if (status == 0) { result = CurrentIsolate.getCurrentThread(); status = CEntryPointActions.leave(); } return result; }
@Uninterruptible(reason = UNINTERRUPTIBLE_REASON) @CEntryPoint @CEntryPointOptions(prologue = NoPrologue.class, epilogue = NoEpilogue.class, publishAs = Publish.NotPublished) @CEntryPointBuiltinImplementation(builtin = Builtin.CREATE_ISOLATE) public static IsolateThread createIsolate() { IsolateThread result = WordFactory.nullPointer(); int status = CEntryPointActions.enterCreateIsolate(WordFactory.nullPointer()); if (status == 0) { result = CurrentIsolate.getCurrentThread(); CEntryPointActions.leave(); } return result; }
@Uninterruptible(reason = UNINTERRUPTIBLE_REASON) @CEntryPoint @CEntryPointOptions(prologue = NoPrologue.class, epilogue = NoEpilogue.class, publishAs = Publish.NotPublished) @CEntryPointBuiltinImplementation(builtin = Builtin.DETACH_THREAD) public static int detachThread(IsolateThread thread) { int status = CEntryPointActions.enter(thread); if (status != 0) { CEntryPointActions.leave(); return status; } status = CEntryPointActions.leaveDetachThread(); return status; }
@Uninterruptible(reason = UNINTERRUPTIBLE_REASON) @CEntryPoint @CEntryPointOptions(prologue = NoPrologue.class, epilogue = NoEpilogue.class, publishAs = Publish.NotPublished) @CEntryPointBuiltinImplementation(builtin = Builtin.TEAR_DOWN_ISOLATE) public static int tearDownIsolate(IsolateThread isolateThread) { int result = CEntryPointActions.enter(isolateThread); if (result != 0) { CEntryPointActions.leave(); return result; } result = CEntryPointActions.leaveTearDownIsolate(); return result; }