mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	* vm_exec.h, tool/instruction.rb: not an error, but a BUG if stack
overflow checking failed just before/after the beginning of an instruction. It should be treated as a BUG. Please tell us if your code cause BUG with this problem. This check will removed soon (for performance). git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42194 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
		
							parent
							
								
									d462261395
								
							
						
					
					
						commit
						621da98309
					
				
					 3 changed files with 14 additions and 2 deletions
				
			
		| 
						 | 
				
			
			@ -1,3 +1,11 @@
 | 
			
		|||
Fri Jul 26 19:25:17 2013  Koichi Sasada  <ko1@atdot.net>
 | 
			
		||||
 | 
			
		||||
	* vm_exec.h, tool/instruction.rb: not an error, but a BUG if stack
 | 
			
		||||
	  overflow checking failed just before/after the beginning of an
 | 
			
		||||
	  instruction. It should be treated as a BUG.
 | 
			
		||||
	  Please tell us if your code cause BUG with this problem.
 | 
			
		||||
	  This check will removed soon (for performance).
 | 
			
		||||
 | 
			
		||||
Fri Jul 26 18:30:14 2013  Koichi Sasada  <ko1@atdot.net>
 | 
			
		||||
 | 
			
		||||
	* array.c (ary_memcpy): cast to int to suppress a warning.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -692,7 +692,7 @@ class RubyVM
 | 
			
		|||
 | 
			
		||||
      n = 0
 | 
			
		||||
      push_ba.each {|pushs| n += pushs.length}
 | 
			
		||||
      commit "  CHECK_VM_STACK_OVERFLOW(REG_CFP, #{n});" if n > 0
 | 
			
		||||
      commit "  CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, #{n});" if n > 0
 | 
			
		||||
      push_ba.each{|pushs|
 | 
			
		||||
        pushs.each{|r|
 | 
			
		||||
          commit "  PUSH(SCREG(#{r}));"
 | 
			
		||||
| 
						 | 
				
			
			@ -842,7 +842,7 @@ class RubyVM
 | 
			
		|||
      each_footer_stack_val(insn){|v|
 | 
			
		||||
        n += 1 unless v[2]
 | 
			
		||||
      }
 | 
			
		||||
      commit "  CHECK_VM_STACK_OVERFLOW(REG_CFP, #{n});" if n > 0
 | 
			
		||||
      commit "  CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, #{n});" if n > 0
 | 
			
		||||
      each_footer_stack_val(insn){|v|
 | 
			
		||||
        if v[2]
 | 
			
		||||
          commit "  SCREG(#{v[2]}) = #{v[1]};"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -169,5 +169,9 @@ default:                        \
 | 
			
		|||
#endif
 | 
			
		||||
 | 
			
		||||
#define SCREG(r) (reg_##r)
 | 
			
		||||
#define CHECK_VM_STACK_OVERFLOW_FOR_INSN(cfp, margin) \
 | 
			
		||||
  if ((VALUE *)((char *)(((VALUE *)(cfp)->sp) + (margin)) + sizeof(rb_control_frame_t)) >= ((VALUE *)(cfp))) { \
 | 
			
		||||
      rb_bug("CHECK_VM_STACK_OVERFLOW_FOR_INSN: should not overflow here. Please contact ruby-core/dev with your (a part of) script. This check will be removed soon."); \
 | 
			
		||||
  } while (0);
 | 
			
		||||
 | 
			
		||||
#endif /* RUBY_VM_EXEC_H */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue