@@ -200,11 +200,11 @@ def to_native
200
200
end
201
201
202
202
def []( index )
203
- Truffle :: CExt . rb_tr_wrap ( array [ index ] )
203
+ Truffle . invoke_primitive ( :cext_wrap , array [ index ] )
204
204
end
205
205
206
206
def []=( index , value )
207
- array [ index ] = Truffle :: CExt . rb_tr_unwrap ( value )
207
+ array [ index ] = Truffle . invoke_primitive ( :cext_unwrap , value )
208
208
end
209
209
210
210
def native?
@@ -962,7 +962,7 @@ def rb_funcallv(recv, meth, args)
962
962
963
963
def rb_funcall ( recv , meth , n , *args )
964
964
# see #call_with_thread_locally_stored_block
965
- thread_local_block = Thread . current [ :__C_BLOCK__ ]
965
+ thread_local_block = Thread . current [ :__C_BLOCK__ ]
966
966
Thread . current [ :__C_BLOCK__ ] = nil
967
967
recv . __send__ ( meth , *args , &thread_local_block )
968
968
ensure
@@ -1032,7 +1032,7 @@ def rb_hash_set_ifnone(hash, value)
1032
1032
1033
1033
def rb_hash_foreach ( hash , func , farg )
1034
1034
hash . each do |key , value |
1035
- st_result = Truffle ::Interop . execute_without_conversion ( func , rb_tr_wrap ( key ) , rb_tr_wrap ( value ) , farg )
1035
+ st_result = Truffle ::Interop . execute_without_conversion ( func , Truffle . invoke_primitive ( :cext_wrap , key ) , Truffle . invoke_primitive ( :cext_wrap , value ) , farg )
1036
1036
1037
1037
case st_result
1038
1038
when ST_CONTINUE
@@ -1055,8 +1055,8 @@ def rb_path_to_class(path)
1055
1055
1056
1056
def rb_proc_new ( function , value )
1057
1057
Proc . new do |*args |
1058
- Truffle :: CExt . rb_tr_unwrap (
1059
- Truffle . invoke_primitive ( :call_with_c_mutex , function , args . map! { |arg | Truffle :: CExt . rb_tr_wrap ( arg ) } ) )
1058
+ Truffle . invoke_primitive ( :cext_unwrap ,
1059
+ Truffle . invoke_primitive ( :call_with_c_mutex , function , args . map! { |arg | Truffle . invoke_primitive ( :cext_wrap , arg ) } ) )
1060
1060
end
1061
1061
end
1062
1062
@@ -1088,7 +1088,7 @@ def rb_protect_with_block(function, arg)
1088
1088
# function called will do that. In general we try not to touch the
1089
1089
# values passed in or out of protected functions as C extensions
1090
1090
# may accept or return arbitrary pointers rather than ruby VALUEs.
1091
- res = rb_tr_wrap ( nil )
1091
+ res = Truffle . invoke_primitive ( :cext_wrap , nil )
1092
1092
pos = 0
1093
1093
e = capture_exception do
1094
1094
res = Truffle ::Interop . execute_without_conversion ( function , arg )
@@ -1271,7 +1271,7 @@ def rb_enumeratorize(obj, meth, args)
1271
1271
1272
1272
def rb_enumeratorize_with_size ( obj , meth , args , size_fn )
1273
1273
return rb_enumeratorize ( obj , meth , args ) if size_fn . nil?
1274
- enum = obj . to_enum ( meth , *args ) { rb_tr_unwrap ( Truffle . invoke_primitive ( :call_with_c_mutex , size_fn , [ rb_tr_wrap ( obj ) , rb_tr_wrap ( args ) , rb_tr_wrap ( enum ) ] ) ) }
1274
+ enum = obj . to_enum ( meth , *args ) { rb_tr_unwrap ( Truffle . invoke_primitive ( :call_with_c_mutex , size_fn , [ Truffle . invoke_primitive ( :cext_wrap , obj ) , Truffle . invoke_primitive ( :cext_wrap , args ) , Truffle . invoke_primitive ( :cext_wrap , enum ) ] ) ) }
1275
1275
enum
1276
1276
end
1277
1277
@@ -1281,7 +1281,7 @@ def rb_eval_string(str)
1281
1281
1282
1282
def rb_define_alloc_func ( ruby_class , function )
1283
1283
ruby_class . singleton_class . define_method ( :__allocate__ ) do
1284
- Truffle :: CExt . rb_tr_unwrap ( Truffle . invoke_primitive ( :call_with_c_mutex , function , [ Truffle :: CExt . rb_tr_wrap ( self ) ] ) )
1284
+ Truffle . invoke_primitive ( :cext_unwrap , Truffle . invoke_primitive ( :call_with_c_mutex , function , [ Truffle . invoke_primitive ( :cext_wrap , self ) ] ) )
1285
1285
end
1286
1286
class << ruby_class
1287
1287
private :__allocate__
@@ -1399,7 +1399,7 @@ def rb_mutex_sleep(mutex, timeout)
1399
1399
1400
1400
def rb_mutex_synchronize ( mutex , func , arg )
1401
1401
mutex . synchronize do
1402
- rb_tr_unwrap ( Truffle . invoke_primitive ( :call_with_c_mutex , func , [ rb_tr_wrap ( arg ) ] ) )
1402
+ rb_tr_unwrap ( Truffle . invoke_primitive ( :call_with_c_mutex , func , [ Truffle . invoke_primitive ( :cext_wrap , arg ) ] ) )
1403
1403
end
1404
1404
end
1405
1405
@@ -1513,7 +1513,7 @@ def send_splatted(object, method, args)
1513
1513
1514
1514
def rb_block_call ( object , method , args , func , data )
1515
1515
object . __send__ ( method , *args ) do |*block_args |
1516
- rb_tr_unwrap ( Truffle . invoke_primitive ( :call_with_c_mutex , func , [ rb_tr_wrap ( block_args . first ) , data , block_args . size , RARRAY_PTR ( block_args ) , nil ] ) )
1516
+ rb_tr_unwrap ( Truffle . invoke_primitive ( :call_with_c_mutex , func , [ Truffle . invoke_primitive ( :cext_wrap , block_args . first ) , data , block_args . size , RARRAY_PTR ( block_args ) , nil ] ) )
1517
1517
end
1518
1518
end
1519
1519
@@ -1529,35 +1529,35 @@ def rb_rescue(b_proc, data1, r_proc, data2)
1529
1529
begin
1530
1530
Truffle . invoke_primitive ( :call_with_c_mutex , b_proc , [ data1 ] )
1531
1531
rescue StandardError => e
1532
- Truffle . invoke_primitive ( :call_with_c_mutex , r_proc , [ data2 , rb_tr_wrap ( e ) ] )
1532
+ Truffle . invoke_primitive ( :call_with_c_mutex , r_proc , [ data2 , Truffle . invoke_primitive ( :cext_wrap , e ) ] )
1533
1533
end
1534
1534
end
1535
1535
1536
1536
def rb_rescue2 ( b_proc , data1 , r_proc , data2 , rescued )
1537
1537
begin
1538
1538
Truffle . invoke_primitive ( :call_with_c_mutex , b_proc , [ data1 ] )
1539
1539
rescue *rescued => e
1540
- Truffle . invoke_primitive ( :call_with_c_mutex , r_proc , [ data2 , rb_tr_wrap ( e ) ] )
1540
+ Truffle . invoke_primitive ( :call_with_c_mutex , r_proc , [ data2 , Truffle . invoke_primitive ( :cext_wrap , e ) ] )
1541
1541
end
1542
1542
end
1543
1543
1544
1544
def rb_exec_recursive ( func , obj , arg )
1545
1545
result = nil
1546
1546
1547
1547
recursive = Thread . detect_recursion ( obj ) do
1548
- result = rb_tr_unwrap ( Truffle . invoke_primitive ( :call_with_c_mutex , func , [ rb_tr_wrap ( obj ) , rb_tr_wrap ( arg ) , 0 ] ) )
1548
+ result = rb_tr_unwrap ( Truffle . invoke_primitive ( :call_with_c_mutex , func , [ Truffle . invoke_primitive ( :cext_wrap , obj ) , Truffle . invoke_primitive ( :cext_wrap , arg ) , 0 ] ) )
1549
1549
end
1550
1550
1551
1551
if recursive
1552
- rb_tr_unwrap ( Truffle . invoke_primitive ( :call_with_c_mutex , func , [ rb_tr_wrap ( obj ) , rb_tr_wrap ( arg ) , 1 ] ) )
1552
+ rb_tr_unwrap ( Truffle . invoke_primitive ( :call_with_c_mutex , func , [ Truffle . invoke_primitive ( :cext_wrap , obj ) , Truffle . invoke_primitive ( :cext_wrap , arg ) , 1 ] ) )
1553
1553
else
1554
1554
result
1555
1555
end
1556
1556
end
1557
1557
1558
1558
def rb_catch_obj ( tag , func , data )
1559
1559
catch tag do |caught |
1560
- rb_tr_unwrap ( Truffle . invoke_primitive ( :call_with_c_mutex , func , [ rb_tr_wrap ( caught ) , rb_tr_wrap ( data ) , rb_tr_wrap ( nil ) ] ) )
1560
+ rb_tr_unwrap ( Truffle . invoke_primitive ( :call_with_c_mutex , func , [ Truffle . invoke_primitive ( :cext_wrap , caught ) , Truffle . invoke_primitive ( :cext_wrap , data ) , Truffle . invoke_primitive ( :cext_wrap , nil ) ] ) )
1561
1561
end
1562
1562
end
1563
1563
@@ -1656,7 +1656,7 @@ def rb_iterate(iteration, iterated_object, callback, callback_arg)
1656
1656
end
1657
1657
else
1658
1658
call_with_thread_locally_stored_block iteration , iterated_object do |block_arg |
1659
- rb_tr_unwrap Truffle . invoke_primitive ( :call_with_c_mutex , callback , [ rb_tr_wrap ( block_arg ) , rb_tr_wrap ( callback_arg ) , rb_tr_wrap ( nil ) ] )
1659
+ rb_tr_unwrap Truffle . invoke_primitive ( :call_with_c_mutex , callback , [ Truffle . invoke_primitive ( :cext_wrap , block_arg ) , Truffle . invoke_primitive ( :cext_wrap , callback_arg ) , Truffle . invoke_primitive ( :cext_wrap , nil ) ] )
1660
1660
end
1661
1661
end
1662
1662
end
@@ -1762,11 +1762,11 @@ def rb_define_hooked_variable(name, gvar, getter, setter)
1762
1762
id = name . to_sym
1763
1763
1764
1764
getter_proc = -> {
1765
- rb_tr_unwrap Truffle . invoke_primitive ( :call_with_c_mutex , getter , [ rb_tr_wrap ( id ) , gvar , rb_tr_wrap ( nil ) ] )
1765
+ rb_tr_unwrap Truffle . invoke_primitive ( :call_with_c_mutex , getter , [ Truffle . invoke_primitive ( :cext_wrap , id ) , gvar , Truffle . invoke_primitive ( :cext_wrap , nil ) ] )
1766
1766
}
1767
1767
1768
1768
setter_proc = -> value {
1769
- Truffle . invoke_primitive ( :call_with_c_mutex , setter , [ rb_tr_wrap ( value ) , rb_tr_wrap ( id ) , gvar , rb_tr_wrap ( nil ) ] )
1769
+ Truffle . invoke_primitive ( :call_with_c_mutex , setter , [ Truffle . invoke_primitive ( :cext_wrap , value ) , Truffle . invoke_primitive ( :cext_wrap , id ) , gvar , Truffle . invoke_primitive ( :cext_wrap , nil ) ] )
1770
1770
}
1771
1771
1772
1772
Truffle ::KernelOperations . define_hooked_variable id , getter_proc , setter_proc
@@ -1837,4 +1837,12 @@ def rb_sprintf(format, *args)
1837
1837
sprintf ( f , *args ) rescue raise ArgumentError , "Bad format string #{ f } ."
1838
1838
end
1839
1839
1840
+ def rb_tr_wrap ( obj )
1841
+ Truffle . invoke_primitive :cext_wrap , obj
1842
+ end
1843
+
1844
+ def rb_tr_unwrap ( wrapper )
1845
+ Truffle . invoke_primitive :cext_unwrap , wrapper
1846
+ end
1847
+
1840
1848
end
0 commit comments