@@ -2965,17 +2965,9 @@ pub enum CallType {
29652965 Forwarding ,
29662966}
29672967
2968- #[ derive( Clone , Debug , PartialEq ) ]
2969- pub enum ParameterType {
2970- /// For example, `foo(...)`. Interaction of JIT
2971- /// calling convention and side exits currently unsolved.
2972- Forwardable ,
2973- }
2974-
29752968#[ derive( Clone , Debug , PartialEq ) ]
29762969pub enum ParseError {
29772970 StackUnderflow ( FrameState ) ,
2978- UnknownParameterType ( ParameterType ) ,
29792971 MalformedIseq ( u32 ) , // insn_idx into iseq_encoded
29802972 Validation ( ValidationError ) ,
29812973 NotAllowed ,
@@ -3049,17 +3041,11 @@ impl ProfileOracle {
30493041/// The index of the self parameter in the HIR function
30503042pub const SELF_PARAM_IDX : usize = 0 ;
30513043
3052- fn filter_unknown_parameter_type ( iseq : * const rb_iseq_t ) -> Result < ( ) , ParseError > {
3053- if unsafe { rb_get_iseq_flags_forwardable ( iseq) } { return Err ( ParseError :: UnknownParameterType ( ParameterType :: Forwardable ) ) ; }
3054- Ok ( ( ) )
3055- }
3056-
30573044/// Compile ISEQ into High-level IR
30583045pub fn iseq_to_hir ( iseq : * const rb_iseq_t ) -> Result < Function , ParseError > {
30593046 if !ZJITState :: can_compile_iseq ( iseq) {
30603047 return Err ( ParseError :: NotAllowed ) ;
30613048 }
3062- filter_unknown_parameter_type ( iseq) ?;
30633049 let payload = get_or_create_iseq_payload ( iseq) ;
30643050 let mut profiles = ProfileOracle :: new ( payload) ;
30653051 let mut fun = Function :: new ( iseq) ;
@@ -5198,13 +5184,23 @@ mod tests {
51985184 eval ( "
51995185 def test(...) = super(...)
52005186 " ) ;
5201- assert_compile_fails ( "test" , ParseError :: UnknownParameterType ( ParameterType :: Forwardable ) ) ;
5187+ assert_snapshot ! ( hir_string( "test" ) , @r"
5188+ fn test@<compiled>:2:
5189+ bb0(v0:BasicObject, v1:BasicObject):
5190+ SideExit UnhandledYARVInsn(invokesuperforward)
5191+ " ) ;
52025192 }
52035193
52045194 #[ test]
5205- fn test_cant_compile_forwardable ( ) {
5195+ fn test_compile_forwardable ( ) {
52065196 eval ( "def forwardable(...) = nil" ) ;
5207- assert_compile_fails ( "forwardable" , ParseError :: UnknownParameterType ( ParameterType :: Forwardable ) ) ;
5197+ assert_snapshot ! ( hir_string( "forwardable" ) , @r"
5198+ fn forwardable@<compiled>:1:
5199+ bb0(v0:BasicObject, v1:BasicObject):
5200+ v5:NilClass = Const Value(nil)
5201+ CheckInterrupts
5202+ Return v5
5203+ " ) ;
52085204 }
52095205
52105206 // TODO(max): Figure out how to generate a call with OPT_SEND flag
@@ -5249,7 +5245,11 @@ mod tests {
52495245 eval ( "
52505246 def test(...) = foo(...)
52515247 " ) ;
5252- assert_compile_fails ( "test" , ParseError :: UnknownParameterType ( ParameterType :: Forwardable ) ) ;
5248+ assert_snapshot ! ( hir_string( "test" ) , @r"
5249+ fn test@<compiled>:2:
5250+ bb0(v0:BasicObject, v1:BasicObject):
5251+ SideExit UnhandledYARVInsn(sendforward)
5252+ " ) ;
52535253 }
52545254
52555255 #[ test]
0 commit comments