Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- From nick@nicksieger.com Tue Apr 06 22:28:02 2010
- Content-Type: text/plain; charset="us-ascii"
- MIME-Version: 1.0
- Content-Transfer-Encoding: 7bit
- Subject: [PATCH] Add minimal bits to get coro patch to compile on Mac OSX SL
- X-Mercurial-Node: 77819688cf2d743032bbadfad18f04f27158dccf
- Message-Id: <77819688cf2d743032bb.1270610881@vanguard.local>
- User-Agent: Mercurial-patchbomb/1.3.1
- Date: Wed, 07 Apr 2010 03:28:01 -0000
- From: Nick Sieger <nick@nicksieger.com>
- To: mlvm-dev@openjdk.java.net
- # HG changeset patch
- # User Nick Sieger <nick@nicksieger.com>
- # Date 1270610516 18000
- # Node ID 77819688cf2d743032bbadfad18f04f27158dccf
- # Parent 90fe8277ed0f7663d1fe2f5bc390287df5cd73c8
- Add minimal bits to get coro patch to compile on Mac OSX SL
- diff --git a/coro.patch b/coro.patch
- --- a/coro.patch
- +++ b/coro.patch
- @@ -1,7 +1,7 @@
- diff --git a/src/cpu/x86/vm/assembler_x86.hpp b/src/cpu/x86/vm/assembler_x86.hpp
- --- a/src/cpu/x86/vm/assembler_x86.hpp
- +++ b/src/cpu/x86/vm/assembler_x86.hpp
- -@@ -653,7 +653,7 @@ private:
- +@@ -653,7 +653,7 @@
- // Instruction prefixes
- @@ -13,7 +13,7 @@
- diff --git a/src/cpu/x86/vm/frame_x86.cpp b/src/cpu/x86/vm/frame_x86.cpp
- --- a/src/cpu/x86/vm/frame_x86.cpp
- +++ b/src/cpu/x86/vm/frame_x86.cpp
- -@@ -289,7 +289,8 @@ BasicObjectLock* frame::interpreter_fram
- +@@ -289,7 +289,8 @@
- }
- BasicObjectLock* frame::interpreter_frame_monitor_end() const {
- @@ -38,7 +38,7 @@
- diff --git a/src/cpu/x86/vm/frame_x86.inline.hpp b/src/cpu/x86/vm/frame_x86.inline.hpp
- --- a/src/cpu/x86/vm/frame_x86.inline.hpp
- +++ b/src/cpu/x86/vm/frame_x86.inline.hpp
- -@@ -33,6 +33,7 @@ inline frame::frame() {
- +@@ -33,6 +33,7 @@
- _fp = NULL;
- _cb = NULL;
- _deopt_state = unknown;
- @@ -46,7 +46,7 @@
- }
- inline frame::frame(intptr_t* sp, intptr_t* fp, address pc) {
- -@@ -50,6 +51,25 @@ inline frame::frame(intptr_t* sp, intptr
- +@@ -50,6 +51,25 @@
- } else {
- _deopt_state = not_deoptimized;
- }
- @@ -72,7 +72,7 @@
- }
- inline frame::frame(intptr_t* sp, intptr_t* unextended_sp, intptr_t* fp, address pc) {
- -@@ -68,6 +88,7 @@ inline frame::frame(intptr_t* sp, intptr
- +@@ -68,6 +88,7 @@
- } else {
- _deopt_state = not_deoptimized;
- }
- @@ -80,7 +80,7 @@
- }
- inline frame::frame(intptr_t* sp, intptr_t* fp) {
- -@@ -96,6 +117,7 @@ inline frame::frame(intptr_t* sp, intptr
- +@@ -96,6 +117,7 @@
- } else {
- _deopt_state = not_deoptimized;
- }
- @@ -91,7 +91,7 @@
- diff --git a/src/cpu/x86/vm/sharedRuntime_x86_32.cpp b/src/cpu/x86/vm/sharedRuntime_x86_32.cpp
- --- a/src/cpu/x86/vm/sharedRuntime_x86_32.cpp
- +++ b/src/cpu/x86/vm/sharedRuntime_x86_32.cpp
- -@@ -1182,6 +1182,9 @@ void SharedRuntime::restore_native_resul
- +@@ -1182,6 +1182,9 @@
- }
- }
- @@ -101,7 +101,7 @@
- // ---------------------------------------------------------------------------
- // Generate a native wrapper for a given method. The method takes arguments
- // in the Java compiled code convention, marshals them to the native
- -@@ -1366,6 +1369,18 @@ nmethod *SharedRuntime::generate_native_
- +@@ -1366,6 +1369,18 @@
- __ bind (slowCase);
- }
- #endif // COMPILER1
- @@ -120,7 +120,7 @@
- // The instruction at the verified entry point must be 5 bytes or longer
- // because it can be patched on the fly by make_non_entrant. The stack bang
- -@@ -3078,3 +3093,381 @@ void SharedRuntime::generate_stubs() {
- +@@ -3078,3 +3093,381 @@
- generate_uncommon_trap_blob();
- #endif // COMPILER2
- }
- @@ -451,10 +451,10 @@
- + __ get_thread(rax);
- + // set new handle and resource areas
- + __ movptr(temp, Address(target_coroutine, Coroutine::handle_area_offset()));
- -+ __ movptr(Address(target_coroutine, Coroutine::handle_area_offset()), NULL); // TODO is this really needed?
- ++ __ movptr(Address(target_coroutine, Coroutine::handle_area_offset()), (RegisterImpl*)NULL); // TODO is this really needed?
- + __ movptr(Address(thread, Thread::handle_area_offset()), temp);
- + __ movptr(temp, Address(target_coroutine, Coroutine::resource_area_offset()));
- -+ __ movptr(Address(target_coroutine, Coroutine::resource_area_offset()), NULL); // TODO is this really needed?
- ++ __ movptr(Address(target_coroutine, Coroutine::resource_area_offset()), (RegisterImpl*)NULL); // TODO is this really needed?
- + __ movptr(Address(thread, Thread::resource_area_offset()), temp);
- +
- + // update the thread's stack base and size
- @@ -496,16 +496,16 @@
- + // slow case (terminate old coroutine)
- + __ get_thread(rax);
- + __ movptr(rcx, Address(rax, JavaThread::coroutine_temp_offset()));
- -+ __ movptr(Address(rax, JavaThread::coroutine_temp_offset()), NULL);
- -+ __ movptr(rdx, 0);
- ++ __ movptr(Address(rax, JavaThread::coroutine_temp_offset()), (RegisterImpl*)NULL);
- ++ __ movptr(rdx, (RegisterImpl*)NULL);
- +
- + }
- + }
- +}
- -diff --git a/src/os_cpu/linux_x86/vm/threadLS_linux_x86.cpp b/src/os_cpu/linux_x86/vm/threadLS_linux_x86.cpp
- ---- a/src/os_cpu/linux_x86/vm/threadLS_linux_x86.cpp
- -+++ b/src/os_cpu/linux_x86/vm/threadLS_linux_x86.cpp
- -@@ -89,3 +89,26 @@ void ThreadLocalStorage::pd_set_thread(T
- +diff --git a/src/os_cpu/bsd_x86/vm/threadLS_bsd_x86.cpp b/src/os_cpu/bsd_x86/vm/threadLS_bsd_x86.cpp
- +--- a/src/os_cpu/bsd_x86/vm/threadLS_bsd_x86.cpp
- ++++ b/src/os_cpu/bsd_x86/vm/threadLS_bsd_x86.cpp
- +@@ -89,3 +89,25 @@
- }
- #endif // !AMD64
- }
- @@ -531,11 +531,40 @@
- + }
- +#endif // !AMD64
- +}
- +diff --git a/src/os_cpu/linux_x86/vm/threadLS_linux_x86.cpp b/src/os_cpu/linux_x86/vm/threadLS_linux_x86.cpp
- +--- a/src/os_cpu/linux_x86/vm/threadLS_linux_x86.cpp
- ++++ b/src/os_cpu/linux_x86/vm/threadLS_linux_x86.cpp
- +@@ -89,3 +89,26 @@
- + }
- + #endif // !AMD64
- + }
- ++
- ++void ThreadLocalStorage::pd_add_coroutine_stack(Thread* thread, address stack_base, size_t stack_size) {
- ++#ifndef AMD64
- ++ for (address p = stack_base - stack_size; p < stack_base; p += PAGE_SIZE) {
- ++ assert(thread == NULL || _sp_map[(uintptr_t)p >> PAGE_SHIFT] == NULL ||
- ++ thread == _sp_map[(uintptr_t)p >> PAGE_SHIFT],
- ++ "coroutine exited without detaching from VM??");
- ++ _sp_map[(uintptr_t)p >> PAGE_SHIFT] = thread;
- ++ }
- ++#endif // !AMD64
- ++}
- ++
- ++
- ++void ThreadLocalStorage::pd_remove_coroutine_stack(Thread* thread, address stack_base, size_t stack_size) {
- ++#ifndef AMD64
- ++ for (address p = stack_base - stack_size; p < stack_base; p += PAGE_SIZE) {
- ++ assert(thread == _sp_map[(uintptr_t)p >> PAGE_SHIFT],
- ++ "coroutine exited without detaching from VM??");
- ++ _sp_map[(uintptr_t)p >> PAGE_SHIFT] = NULL;
- ++ }
- ++#endif // !AMD64
- ++}
- +
- diff --git a/src/os_cpu/windows_x86/vm/threadLS_windows_x86.cpp b/src/os_cpu/windows_x86/vm/threadLS_windows_x86.cpp
- --- a/src/os_cpu/windows_x86/vm/threadLS_windows_x86.cpp
- +++ b/src/os_cpu/windows_x86/vm/threadLS_windows_x86.cpp
- -@@ -46,3 +46,12 @@ void ThreadLocalStorage::pd_set_thread(T
- +@@ -46,3 +46,12 @@
- void ThreadLocalStorage::pd_set_thread(Thread* thread) {
- os::thread_local_storage_at_put(ThreadLocalStorage::thread_index(), thread);
- }
- @@ -551,7 +580,7 @@
- diff --git a/src/share/vm/classfile/javaClasses.cpp b/src/share/vm/classfile/javaClasses.cpp
- --- a/src/share/vm/classfile/javaClasses.cpp
- +++ b/src/share/vm/classfile/javaClasses.cpp
- -@@ -2724,6 +2724,26 @@ void sun_misc_AtomicLongCSImpl::compute_
- +@@ -2728,6 +2728,26 @@
- }
- }
- @@ -578,7 +607,7 @@
- void java_util_concurrent_locks_AbstractOwnableSynchronizer::initialize(TRAPS) {
- if (_owner_offset != 0) return;
- -@@ -2847,6 +2867,8 @@ void JavaClasses::compute_offsets() {
- +@@ -2851,6 +2871,8 @@
- // generated interpreter code wants to know about the offsets we just computed:
- AbstractAssembler::update_delayed_values();
- @@ -590,7 +619,7 @@
- diff --git a/src/share/vm/classfile/javaClasses.hpp b/src/share/vm/classfile/javaClasses.hpp
- --- a/src/share/vm/classfile/javaClasses.hpp
- +++ b/src/share/vm/classfile/javaClasses.hpp
- -@@ -1255,6 +1255,25 @@ class java_util_concurrent_locks_Abstrac
- +@@ -1256,6 +1256,25 @@
- static oop get_owner_threadObj(oop obj);
- };
- @@ -619,7 +648,7 @@
- diff --git a/src/share/vm/classfile/systemDictionary.hpp b/src/share/vm/classfile/systemDictionary.hpp
- --- a/src/share/vm/classfile/systemDictionary.hpp
- +++ b/src/share/vm/classfile/systemDictionary.hpp
- -@@ -170,6 +170,10 @@ class SymbolPropertyTable;
- +@@ -171,6 +171,10 @@
- template(Short_klass, java_lang_Short, Pre) \
- template(Integer_klass, java_lang_Integer, Pre) \
- template(Long_klass, java_lang_Long, Pre) \
- @@ -633,7 +662,7 @@
- diff --git a/src/share/vm/classfile/vmSymbols.hpp b/src/share/vm/classfile/vmSymbols.hpp
- --- a/src/share/vm/classfile/vmSymbols.hpp
- +++ b/src/share/vm/classfile/vmSymbols.hpp
- -@@ -356,6 +356,7 @@
- +@@ -365,6 +365,7 @@
- template(void_float_signature, "()F") \
- template(void_double_signature, "()D") \
- template(int_void_signature, "(I)V") \
- @@ -641,7 +670,7 @@
- template(int_int_signature, "(I)I") \
- template(int_bool_signature, "(I)Z") \
- template(float_int_signature, "(F)I") \
- -@@ -461,7 +462,7 @@
- +@@ -471,7 +472,7 @@
- template(createGarbageCollectorMBean_signature, "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/management/GarbageCollectorMBean;") \
- template(trigger_name, "trigger") \
- template(clear_name, "clear") \
- @@ -650,7 +679,7 @@
- template(startAgent_name, "startAgent") \
- template(java_lang_management_ThreadInfo_constructor_signature, "(Ljava/lang/Thread;ILjava/lang/Object;Ljava/lang/Thread;JJJJ[Ljava/lang/StackTraceElement;)V") \
- template(java_lang_management_ThreadInfo_with_locks_constructor_signature, "(Ljava/lang/Thread;ILjava/lang/Object;Ljava/lang/Thread;JJJJ[Ljava/lang/StackTraceElement;[Ljava/lang/Object;[I[Ljava/lang/Object;)V") \
- -@@ -479,7 +480,7 @@
- +@@ -489,7 +490,7 @@
- template(addThreadDumpForMonitors_name, "addThreadDumpForMonitors") \
- template(addThreadDumpForSynchronizers_name, "addThreadDumpForSynchronizers") \
- template(addThreadDumpForMonitors_signature, "(Ljava/lang/management/ThreadInfo;[Ljava/lang/Object;[I)V") \
- @@ -659,7 +688,7 @@
- \
- /* JVMTI/java.lang.instrument support and VM Attach mechanism */ \
- template(sun_misc_VMSupport, "sun/misc/VMSupport") \
- -@@ -489,6 +490,16 @@
- +@@ -499,6 +500,16 @@
- template(serializePropertiesToByteArray_signature, "()[B") \
- template(serializeAgentPropertiesToByteArray_name, "serializeAgentPropertiesToByteArray") \
- template(classRedefinedCount_name, "classRedefinedCount") \
- @@ -676,14 +705,14 @@
- /*end*/
- -@@ -825,8 +836,21 @@
- +@@ -835,9 +846,22 @@
- do_name( prefetchReadStatic_name, "prefetchReadStatic") \
- do_intrinsic(_prefetchWriteStatic, sun_misc_Unsafe, prefetchWriteStatic_name, prefetch_signature, F_SN) \
- do_name( prefetchWriteStatic_name, "prefetchWriteStatic") \
- + \
- /*== LAST_COMPILER_INLINE*/ \
- /*the compiler does have special inlining code for these; bytecode inline is just fine */ \
- -+ \
- + \
- + /* coroutine intrinsics */ \
- + do_intrinsic(_prepareSwitch, java_dyn_CoroutineSupport, prepareSwitch_name, prepareSwitch_signature, F_SN) \
- + do_name( prepareSwitch_name, "prepareSwitch") \
- @@ -695,13 +724,14 @@
- + do_name( switchToAndTerminate_name, "switchToAndTerminate") \
- + do_intrinsic(_switchToAndExit, java_dyn_CoroutineSupport, switchToAndExit_name, switchTo_signature, F_SN) \
- + do_name( switchToAndExit_name, "switchToAndExit") \
- - \
- ++ \
- do_intrinsic(_fillInStackTrace, java_lang_Throwable, fillInStackTrace_name, void_throwable_signature, F_RNY) \
- \
- + do_intrinsic(_StringBuilder_void, java_lang_StringBuilder, object_initializer_name, void_method_signature, F_R) \
- diff --git a/src/share/vm/gc_implementation/includeDB_gc_g1 b/src/share/vm/gc_implementation/includeDB_gc_g1
- --- a/src/share/vm/gc_implementation/includeDB_gc_g1
- +++ b/src/share/vm/gc_implementation/includeDB_gc_g1
- -@@ -323,7 +323,7 @@ ptrQueue.hpp
- +@@ -323,7 +323,7 @@
- ptrQueue.hpp allocation.hpp
- ptrQueue.hpp sizes.hpp
- @@ -713,11 +743,10 @@
- diff --git a/src/share/vm/includeDB_core b/src/share/vm/includeDB_core
- --- a/src/share/vm/includeDB_core
- +++ b/src/share/vm/includeDB_core
- -@@ -1300,6 +1300,14 @@ copy_<arch>.hpp
- - copy_<arch>.hpp generate_platform_dependent_include
- +@@ -1302,6 +1302,14 @@
- copy_<os_arch>.inline.hpp generate_platform_dependent_include
- -+
- +
- +coroutine.cpp coroutine.hpp
- +
- +coroutine.hpp jniHandles.hpp
- @@ -725,10 +754,11 @@
- +coroutine.hpp resourceArea.hpp
- +coroutine.hpp javaFrameAnchor.hpp
- +coroutine.hpp monitorChunk.hpp
- -
- ++
- cpCacheKlass.cpp bytecodes.hpp
- cpCacheKlass.cpp collectedHeap.hpp
- -@@ -4181,6 +4189,7 @@ thread.cpp
- + cpCacheKlass.cpp constantPoolOop.hpp
- +@@ -4185,6 +4193,7 @@
- thread.cpp attachListener.hpp
- thread.cpp biasedLocking.hpp
- thread.cpp classLoader.hpp
- @@ -736,7 +766,7 @@
- thread.cpp compileBroker.hpp
- thread.cpp defaultStream.hpp
- thread.cpp deoptimization.hpp
- -@@ -4447,6 +4456,7 @@ universe.inline.hpp
- +@@ -4451,6 +4460,7 @@
- unsafe.cpp allocation.inline.hpp
- unsafe.cpp copy.hpp
- @@ -747,7 +777,7 @@
- diff --git a/src/share/vm/prims/jni.cpp b/src/share/vm/prims/jni.cpp
- --- a/src/share/vm/prims/jni.cpp
- +++ b/src/share/vm/prims/jni.cpp
- -@@ -3401,6 +3401,7 @@ static jint attach_current_thread(JavaVM
- +@@ -3401,6 +3401,7 @@
- thread->set_thread_state(_thread_in_vm);
- // Must do this before initialize_thread_local_storage
- thread->record_stack_base_and_size();
- @@ -758,7 +788,7 @@
- diff --git a/src/share/vm/prims/nativeLookup.cpp b/src/share/vm/prims/nativeLookup.cpp
- --- a/src/share/vm/prims/nativeLookup.cpp
- +++ b/src/share/vm/prims/nativeLookup.cpp
- -@@ -77,6 +77,7 @@ char* NativeLookup::long_jni_name(method
- +@@ -77,6 +77,7 @@
- }
- extern "C" {
- @@ -766,20 +796,20 @@
- void JNICALL JVM_RegisterUnsafeMethods(JNIEnv *env, jclass unsafecls);
- void JNICALL JVM_RegisterMethodHandleMethods(JNIEnv *env, jclass unsafecls);
- void JNICALL JVM_RegisterPerfMethods(JNIEnv *env, jclass perfclass);
- -@@ -94,6 +95,9 @@ static address lookup_special_native(cha
- - if (strstr(jni_name, "Java_java_io_ObjectInputStream_setPrimitiveFieldValues") != NULL) {
- +@@ -95,6 +96,9 @@
- return CAST_FROM_FN_PTR(address, JVM_SetPrimitiveFieldValues);
- }
- -+ }
- + }
- + if (strstr(jni_name, "Java_java_dyn_CoroutineSupport_registerNatives") != NULL) {
- + return CAST_FROM_FN_PTR(address, JVM_RegisterCoroutineSupportMethods);
- - }
- ++ }
- if (strstr(jni_name, "Java_sun_misc_Unsafe_registerNatives") != NULL) {
- return CAST_FROM_FN_PTR(address, JVM_RegisterUnsafeMethods);
- + }
- diff --git a/src/share/vm/prims/unsafe.cpp b/src/share/vm/prims/unsafe.cpp
- --- a/src/share/vm/prims/unsafe.cpp
- +++ b/src/share/vm/prims/unsafe.cpp
- -@@ -1162,6 +1162,172 @@ UNSAFE_ENTRY(void, Unsafe_PrefetchWrite(
- +@@ -1162,6 +1162,172 @@
- Prefetch::write(addr, (intx)offset);
- UNSAFE_END
- @@ -889,7 +919,7 @@
- + Coroutine* coro = (Coroutine*)java_dyn_CoroutineBase::data(old_oop);
- + assert(coro != NULL, "NULL old coroutine in switchToAndTerminate");
- +
- -+ java_dyn_CoroutineBase::set_data(old_oop, NULL);
- ++ java_dyn_CoroutineBase::set_data(old_oop, 0);
- +
- + coro->remove_from_list(THREAD->coroutine_list());
- + Coroutine::free_coroutine(coro);
- @@ -952,7 +982,7 @@
- /// JVM_RegisterUnsafeMethods
- -@@ -1457,6 +1623,27 @@ JNINativeMethod anonk_methods[] = {
- +@@ -1457,6 +1623,27 @@
- {CC"defineAnonymousClass", CC"("DAC_Args")"CLS, FN_PTR(Unsafe_DefineAnonymousClass)},
- };
- @@ -980,7 +1010,7 @@
- #undef CC
- #undef FN_PTR
- -@@ -1555,3 +1742,28 @@ JVM_ENTRY(void, JVM_RegisterUnsafeMethod
- +@@ -1555,3 +1742,28 @@
- guarantee(status == 0, "register unsafe natives");
- }
- JVM_END
- @@ -1013,7 +1043,7 @@
- new file mode 100644
- --- /dev/null
- +++ b/src/share/vm/runtime/coroutine.cpp
- -@@ -0,0 +1,386 @@
- +@@ -0,0 +1,383 @@
- +/*
- + * Copyright 2001-2010 Sun Microsystems, Inc. All Rights Reserved.
- + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- @@ -1088,10 +1118,7 @@
- +
- + ShouldNotReachHere();
- +}
- -+#endif
- -+
- -+#ifdef LINUX
- -+
- ++#else
- +void coroutine_start(Coroutine* coroutine, jobject coroutineObj) {
- + coroutine->thread()->set_thread_state(_thread_in_vm);
- +
- @@ -1235,12 +1262,12 @@
- +
- + int capacity = data->capacity();
- + int size = 0;
- -+ data->data()[capacity - ++size] = NULL;
- ++ data->data()[capacity - ++size] = (intptr_t)NULL;
- + data->data()[capacity - ++size] = (intptr_t)JNIHandles::make_global(coroutineObj);
- + data->data()[capacity - ++size] = (intptr_t)coro;
- -+ data->data()[capacity - ++size] = NULL;
- ++ data->data()[capacity - ++size] = (intptr_t)NULL;
- + data->data()[capacity - ++size] = (intptr_t)coroutine_start;
- -+ data->data()[capacity - ++size] = NULL;
- ++ data->data()[capacity - ++size] = (intptr_t)NULL;
- + data->set_size(size);
- +
- + coro->_state = _stored;
- @@ -1643,7 +1670,7 @@
- diff --git a/src/share/vm/runtime/frame.cpp b/src/share/vm/runtime/frame.cpp
- --- a/src/share/vm/runtime/frame.cpp
- +++ b/src/share/vm/runtime/frame.cpp
- -@@ -465,17 +465,17 @@ BasicObjectLock* frame::previous_monitor
- +@@ -465,17 +465,17 @@
- intptr_t* frame::interpreter_frame_local_at(int index) const {
- const int n = Interpreter::local_offset_in_bytes(index)/wordSize;
- @@ -1664,7 +1691,7 @@
- }
- intptr_t* frame::interpreter_frame_expression_stack_at(jint offset) const {
- -@@ -1411,3 +1411,8 @@ StackFrameStream::StackFrameStream(JavaT
- +@@ -1411,3 +1411,8 @@
- _fr = thread->last_frame();
- _is_done = false;
- }
- @@ -1676,16 +1703,16 @@
- diff --git a/src/share/vm/runtime/frame.hpp b/src/share/vm/runtime/frame.hpp
- --- a/src/share/vm/runtime/frame.hpp
- +++ b/src/share/vm/runtime/frame.hpp
- -@@ -47,6 +47,8 @@ class frame VALUE_OBJ_CLASS_SPEC {
- - };
- +@@ -48,6 +48,8 @@
- deopt_state _deopt_state;
- +
- ++ intptr_t _displacement;
- +
- -+ intptr_t _displacement;
- -
- public:
- // Constructors
- -@@ -462,6 +464,7 @@ class StackFrameStream : public StackObj
- + frame();
- +@@ -462,6 +464,7 @@
- bool _is_done;
- public:
- StackFrameStream(JavaThread *thread, bool update = true);
- @@ -1696,7 +1723,7 @@
- diff --git a/src/share/vm/runtime/globals.hpp b/src/share/vm/runtime/globals.hpp
- --- a/src/share/vm/runtime/globals.hpp
- +++ b/src/share/vm/runtime/globals.hpp
- -@@ -3516,7 +3516,13 @@ class CommandLineFlags {
- +@@ -3516,7 +3516,13 @@
- product(bool, UseVMInterruptibleIO, false, \
- "(Unstable, Solaris-specific) Thread interrupt before or with " \
- "EINTR for I/O operations results in OS_INTRPT. The default value"\
- @@ -1714,7 +1741,7 @@
- diff --git a/src/share/vm/runtime/handles.hpp b/src/share/vm/runtime/handles.hpp
- --- a/src/share/vm/runtime/handles.hpp
- +++ b/src/share/vm/runtime/handles.hpp
- -@@ -250,6 +250,11 @@ class HandleArea: public Arena {
- +@@ -250,6 +250,11 @@
- debug_only(_no_handle_mark_nesting = 0);
- _prev = prev;
- }
- @@ -1729,7 +1756,7 @@
- diff --git a/src/share/vm/runtime/thread.cpp b/src/share/vm/runtime/thread.cpp
- --- a/src/share/vm/runtime/thread.cpp
- +++ b/src/share/vm/runtime/thread.cpp
- -@@ -1178,6 +1178,10 @@ void JavaThread::initialize() {
- +@@ -1178,6 +1178,10 @@
- _interp_only_mode = 0;
- _special_runtime_exit_condition = _no_async_condition;
- _pending_async_exception = NULL;
- @@ -1740,16 +1767,16 @@
- _is_compiling = false;
- _thread_stat = NULL;
- _thread_stat = new ThreadStatistics();
- -@@ -1356,6 +1360,8 @@ void JavaThread::run() {
- -
- +@@ -1357,6 +1361,8 @@
- // Record real stack base and size.
- this->record_stack_base_and_size();
- +
- ++ this->initialize_coroutine_support();
- +
- -+ this->initialize_coroutine_support();
- -
- // Initialize thread local storage; set before calling MutexLocker
- this->initialize_thread_local_storage();
- -@@ -2396,6 +2402,13 @@ void JavaThread::oops_do(OopClosure* f,
- +
- +@@ -2396,6 +2402,13 @@
- fst.current()->oops_do(f, cf, fst.register_map());
- }
- }
- @@ -1763,7 +1790,7 @@
- // callee_target is never live across a gc point so NULL it here should
- // it still contain a methdOop.
- -@@ -2437,6 +2450,13 @@ void JavaThread::nmethods_do(CodeBlobClo
- +@@ -2437,6 +2450,13 @@
- fst.current()->nmethods_do(cf);
- }
- }
- @@ -1777,7 +1804,7 @@
- }
- // Printing
- -@@ -2922,6 +2942,7 @@ jint Threads::create_vm(JavaVMInitArgs*
- +@@ -2922,6 +2942,7 @@
- // stacksize. This adjusted size is what is used to figure the placement
- // of the guard pages.
- main_thread->record_stack_base_and_size();
- @@ -1785,7 +1812,7 @@
- main_thread->initialize_thread_local_storage();
- main_thread->set_active_handles(JNIHandleBlock::allocate_block());
- -@@ -4103,3 +4124,9 @@ void Threads::verify() {
- +@@ -4103,3 +4124,9 @@
- VMThread* thread = VMThread::vm_thread();
- if (thread != NULL) thread->verify();
- }
- @@ -1798,17 +1825,17 @@
- diff --git a/src/share/vm/runtime/thread.hpp b/src/share/vm/runtime/thread.hpp
- --- a/src/share/vm/runtime/thread.hpp
- +++ b/src/share/vm/runtime/thread.hpp
- -@@ -45,6 +45,9 @@ class GCTaskQueue;
- - class GCTaskQueue;
- +@@ -46,6 +46,9 @@
- class ThreadClosure;
- class IdealGraphPrinter;
- -+
- +
- +class Coroutine;
- +class CoroutineStack;
- -
- ++
- // Class hierarchy
- // - Thread
- -@@ -486,6 +489,9 @@ public:
- + // - NamedThread
- +@@ -486,6 +489,9 @@
- void leaving_jvmti_env_iteration() { --_jvmti_env_iteration_count; }
- bool is_inside_jvmti_env_iteration() { return _jvmti_env_iteration_count > 0; }
- @@ -1818,11 +1845,10 @@
- // Code generation
- static ByteSize exception_file_offset() { return byte_offset_of(Thread, _exception_file ); }
- static ByteSize exception_line_offset() { return byte_offset_of(Thread, _exception_line ); }
- -@@ -786,6 +792,22 @@ class JavaThread: public Thread {
- - // JVMTI PopFrame support
- +@@ -787,6 +793,22 @@
- // This is set to popframe_pending to signal that top Java frame should be popped immediately
- int _popframe_condition;
- -+
- +
- + // coroutine support
- + CoroutineStack* _coroutine_stack_list;
- + Coroutine* _coroutine_list;
- @@ -1838,13 +1864,14 @@
- + void initialize_coroutine_support();
- +
- + private:
- -
- ++
- #ifndef PRODUCT
- int _jmp_ring_index;
- + struct {
- diff --git a/src/share/vm/runtime/threadLocalStorage.cpp b/src/share/vm/runtime/threadLocalStorage.cpp
- --- a/src/share/vm/runtime/threadLocalStorage.cpp
- +++ b/src/share/vm/runtime/threadLocalStorage.cpp
- -@@ -41,6 +41,14 @@ void ThreadLocalStorage::set_thread(Thre
- +@@ -41,6 +41,14 @@
- guarantee(get_thread_slow() == thread, "must be the same thread, slowly");
- }
- @@ -1862,7 +1889,7 @@
- diff --git a/src/share/vm/runtime/threadLocalStorage.hpp b/src/share/vm/runtime/threadLocalStorage.hpp
- --- a/src/share/vm/runtime/threadLocalStorage.hpp
- +++ b/src/share/vm/runtime/threadLocalStorage.hpp
- -@@ -36,6 +36,9 @@ class ThreadLocalStorage : AllStatic {
- +@@ -36,6 +36,9 @@
- static Thread* get_thread_slow();
- static void invalidate_all() { pd_invalidate_all(); }
- @@ -1872,7 +1899,7 @@
- // Machine dependent stuff
- #include "incls/_threadLS_pd.hpp.incl"
- -@@ -57,6 +60,10 @@ class ThreadLocalStorage : AllStatic {
- +@@ -57,6 +60,10 @@
- // Processor dependent parts of set_thread and initialization
- static void pd_set_thread(Thread* thread);
- static void pd_init();
Add Comment
Please, Sign In to add comment