Skip to content
  • NARUSE, Yui's avatar
    f93c7b9f
    merge revision(s)... · f93c7b9f
    NARUSE, Yui authored
    merge revision(s) b78f871d,ecd0cdaf: [Backport #19400]
    
    	YJIT: Use the system page size when the code page size is too small
    	 (#7267)
    
    	Previously on ARM64 Linux systems that use 64 KiB pages
    	(`CONFIG_ARM64_64K_PAGES=y`), YJIT was panicking on boot due to a failed
    	assertion.
    
    	The assertion was making sure that code GC can free the last code page
    	that YJIT manages without freeing unrelated memory. YJIT prefers picking
    	16 KiB as the granularity at which to free code memory, but when the
    	system can only free at 64 KiB granularity, that is not possible.
    
    	The fix is to use the system page size as the code page size when the
    	system page size is 64 KiB. Continue to use 16 KiB as the code page size
    	on common systems that use 16/4 KiB pages.
    
    	Add asserts to code_gc() and free_page() about code GC's assumptions.
    
    	Fixes [Bug #19400]
    	---
    	 yjit/src/asm/mod.rs    | 78 ++++++++++++++++++++++++++++++++------------------
    	 yjit/src/codegen.rs    |  2 --
    	 yjit/src/virtualmem.rs | 13 +++++++++
    	 3 files changed, 63 insertions(+), 30 deletions(-)
    
    	YJIT: Fix assertion for partially mapped last pages (#7337)
    
    	Follows up [Bug #19400]
    	---
    	 test/ruby/test_yjit.rb | 19 +++++++++++++++++++
    	 yjit/src/asm/mod.rs    |  2 +-
    	 yjit/src/virtualmem.rs | 18 +++++++++++++-----
    	 3 files changed, 33 insertions(+), 6 deletions(-)
    f93c7b9f
    merge revision(s)...
    NARUSE, Yui authored
    merge revision(s) b78f871d,ecd0cdaf: [Backport #19400]
    
    	YJIT: Use the system page size when the code page size is too small
    	 (#7267)
    
    	Previously on ARM64 Linux systems that use 64 KiB pages
    	(`CONFIG_ARM64_64K_PAGES=y`), YJIT was panicking on boot due to a failed
    	assertion.
    
    	The assertion was making sure that code GC can free the last code page
    	that YJIT manages without freeing unrelated memory. YJIT prefers picking
    	16 KiB as the granularity at which to free code memory, but when the
    	system can only free at 64 KiB granularity, that is not possible.
    
    	The fix is to use the system page size as the code page size when the
    	system page size is 64 KiB. Continue to use 16 KiB as the code page size
    	on common systems that use 16/4 KiB pages.
    
    	Add asserts to code_gc() and free_page() about code GC's assumptions.
    
    	Fixes [Bug #19400]
    	---
    	 yjit/src/asm/mod.rs    | 78 ++++++++++++++++++++++++++++++++------------------
    	 yjit/src/codegen.rs    |  2 --
    	 yjit/src/virtualmem.rs | 13 +++++++++
    	 3 files changed, 63 insertions(+), 30 deletions(-)
    
    	YJIT: Fix assertion for partially mapped last pages (#7337)
    
    	Follows up [Bug #19400]
    	---
    	 test/ruby/test_yjit.rb | 19 +++++++++++++++++++
    	 yjit/src/asm/mod.rs    |  2 +-
    	 yjit/src/virtualmem.rs | 18 +++++++++++++-----
    	 3 files changed, 33 insertions(+), 6 deletions(-)
Loading