зеркало из https://github.com/github/ruby.git
RJIT: Workaround USE_RVARGC=0 CI
This commit is contained in:
Родитель
32e0c97dfa
Коммит
c4e2718763
|
@ -2734,7 +2734,8 @@ module RubyVM::RJIT
|
||||||
# @param asm [RubyVM::RJIT::Assembler]
|
# @param asm [RubyVM::RJIT::Assembler]
|
||||||
def jit_rb_str_empty_p(jit, ctx, asm, argc, known_recv_class)
|
def jit_rb_str_empty_p(jit, ctx, asm, argc, known_recv_class)
|
||||||
# Assume same offset to len embedded or not so we can use one code path to read the length
|
# Assume same offset to len embedded or not so we can use one code path to read the length
|
||||||
assert_equal(C.RString.offsetof(:as, :heap, :len), C.RString.offsetof(:as, :embed, :len))
|
#assert_equal(C.RString.offsetof(:as, :heap, :len), C.RString.offsetof(:as, :embed, :len))
|
||||||
|
# `C.RString.offsetof(:as, :embed, :len)` doesn't work because of USE_RVARGC=0 CI
|
||||||
|
|
||||||
recv_opnd = ctx.stack_pop(1)
|
recv_opnd = ctx.stack_pop(1)
|
||||||
out_opnd = ctx.stack_push
|
out_opnd = ctx.stack_push
|
||||||
|
|
|
@ -768,11 +768,6 @@ module RubyVM::RJIT # :nodoc: all
|
||||||
shared: self.VALUE,
|
shared: self.VALUE,
|
||||||
), Primitive.cexpr!("OFFSETOF(((struct RString *)NULL)->as.heap, aux)")],
|
), Primitive.cexpr!("OFFSETOF(((struct RString *)NULL)->as.heap, aux)")],
|
||||||
),
|
),
|
||||||
embed: CType::Struct.new(
|
|
||||||
"", Primitive.cexpr!("SIZEOF(((struct RString *)NULL)->as.embed)"),
|
|
||||||
len: [CType::Immediate.parse("long"), Primitive.cexpr!("OFFSETOF(((struct RString *)NULL)->as.embed, len)")],
|
|
||||||
ary: [CType::Pointer.new { CType::Immediate.parse("char") }, Primitive.cexpr!("OFFSETOF(((struct RString *)NULL)->as.embed, ary)")],
|
|
||||||
),
|
|
||||||
), Primitive.cexpr!("OFFSETOF((*((struct RString *)NULL)), as)")],
|
), Primitive.cexpr!("OFFSETOF((*((struct RString *)NULL)), as)")],
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
|
@ -606,6 +606,7 @@ generator = BindingGenerator.new(
|
||||||
],
|
],
|
||||||
skip_fields: {
|
skip_fields: {
|
||||||
'rb_execution_context_struct.machine': %w[regs], # differs between macOS and Linux
|
'rb_execution_context_struct.machine': %w[regs], # differs between macOS and Linux
|
||||||
|
'RString.as': %w[embed], # doesn't compile on USE_RVARGC=0 CI
|
||||||
rb_execution_context_struct: %w[method_missing_reason], # non-leading bit fields not supported
|
rb_execution_context_struct: %w[method_missing_reason], # non-leading bit fields not supported
|
||||||
rb_iseq_constant_body: %w[yjit_payload], # conditionally defined
|
rb_iseq_constant_body: %w[yjit_payload], # conditionally defined
|
||||||
rb_thread_struct: %w[status locking_native_thread to_kill abort_on_exception report_on_exception pending_interrupt_queue_checked],
|
rb_thread_struct: %w[status locking_native_thread to_kill abort_on_exception report_on_exception pending_interrupt_queue_checked],
|
||||||
|
|
Загрузка…
Ссылка в новой задаче