Skip to content
  • U.Nakamura's avatar
    d494cf4d
    merge revision(s) 4a7d6c28: [Backport #18991] · d494cf4d
    U.Nakamura authored
    	Fix false LocalJumpError when branch coverage is enabled
    
    	`throw TAG_BREAK` instruction makes a jump only if the continuation of
    	catch of TAG_BREAK exactly matches the instruction immediately following
    	the "send" instruction that is currently being executed. Otherwise, it
    	seems to determine break from proc-closure.
    
    	Branch coverage may insert some recording instructions after "send"
    	instruction, which broke the conditions for TAG_BREAK to work properly.
    
    	This change forces to set the continuation of catch of TAG_BREAK
    	immediately after "send" (or "invokesuper") instruction.
    
    	[Bug #18991]
    	---
    	 compile.c                      | 25 ++++++++++++++++++++++++-
    	 test/coverage/test_coverage.rb | 14 ++++++++++++++
    	 2 files changed, 38 insertions(+), 1 deletion(-)
    d494cf4d
    merge revision(s) 4a7d6c28: [Backport #18991]
    U.Nakamura authored
    	Fix false LocalJumpError when branch coverage is enabled
    
    	`throw TAG_BREAK` instruction makes a jump only if the continuation of
    	catch of TAG_BREAK exactly matches the instruction immediately following
    	the "send" instruction that is currently being executed. Otherwise, it
    	seems to determine break from proc-closure.
    
    	Branch coverage may insert some recording instructions after "send"
    	instruction, which broke the conditions for TAG_BREAK to work properly.
    
    	This change forces to set the continuation of catch of TAG_BREAK
    	immediately after "send" (or "invokesuper") instruction.
    
    	[Bug #18991]
    	---
    	 compile.c                      | 25 ++++++++++++++++++++++++-
    	 test/coverage/test_coverage.rb | 14 ++++++++++++++
    	 2 files changed, 38 insertions(+), 1 deletion(-)
Loading