mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	typedef rb_jmpbuf_t to void *[5] if __builtin_setjmp is used
The built-in version operates on a buffer of 5 words, much smaller than the size of jmp_buf defined in libc. Note, powerpc requires 5 words, while arm and x86_64 just require 3.
This commit is contained in:
		
							parent
							
								
									27144de2bd
								
							
						
					
					
						commit
						e006b992c2
					
				
				
				Notes:
				
					git
				
				2019-09-21 13:25:23 +09:00 
				
			
			
			
		
		
					 2 changed files with 5 additions and 1 deletions
				
			
		|  | @ -47,6 +47,6 @@ AS_IF([test x$setjmp_prefix:$setjmp_sigmask = xsig:], [ | |||
| AC_MSG_RESULT(${setjmp_prefix}setjmp${setjmp_suffix}${setjmp_cast:+\($setjmp_cast\)}${setjmp_sigmask}) | ||||
| AC_DEFINE_UNQUOTED([RUBY_SETJMP(env)], [${setjmp_prefix}setjmp${setjmp_suffix}($setjmp_cast(env)${setjmp_sigmask})]) | ||||
| AC_DEFINE_UNQUOTED([RUBY_LONGJMP(env,val)], [${setjmp_prefix}longjmp($setjmp_cast(env),val)]) | ||||
| AC_DEFINE_UNQUOTED(RUBY_JMP_BUF, ${setjmp_sigmask+${setjmp_prefix}}jmp_buf) | ||||
| AS_IF([test x$setjmp_prefix != x__builtin_], AC_DEFINE_UNQUOTED(RUBY_JMP_BUF, ${setjmp_sigmask+${setjmp_prefix}}jmp_buf)) | ||||
| AS_IF([test x$setjmp_suffix = xex], [AC_DEFINE_UNQUOTED(RUBY_USE_SETJMPEX, 1)]) | ||||
| ])dnl | ||||
|  |  | |||
|  | @ -775,7 +775,11 @@ enum rb_thread_status { | |||
|     THREAD_KILLED | ||||
| }; | ||||
| 
 | ||||
| #ifdef RUBY_JMP_BUF | ||||
| typedef RUBY_JMP_BUF rb_jmpbuf_t; | ||||
| #else | ||||
| typedef void *rb_jmpbuf_t[5]; | ||||
| #endif | ||||
| 
 | ||||
| /*
 | ||||
|   the members which are written in EC_PUSH_TAG() should be placed at | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Fangrui Song
						Fangrui Song