@@ -238,7 +238,7 @@ clean_hooks(rb_hook_list_t *list)
238
238
}
239
239
240
240
static void
241
- exec_hooks_body (rb_thread_t * th , rb_hook_list_t * list , const rb_trace_arg_t * trace_arg )
241
+ exec_hooks_body (const rb_execution_context_t * ec , rb_hook_list_t * list , const rb_trace_arg_t * trace_arg )
242
242
{
243
243
rb_event_hook_t * hook ;
244
244
@@ -255,10 +255,10 @@ exec_hooks_body(rb_thread_t *th, rb_hook_list_t *list, const rb_trace_arg_t *tra
255
255
}
256
256
257
257
static int
258
- exec_hooks_precheck (rb_thread_t * th , rb_hook_list_t * list , const rb_trace_arg_t * trace_arg )
258
+ exec_hooks_precheck (const rb_execution_context_t * ec , rb_hook_list_t * list , const rb_trace_arg_t * trace_arg )
259
259
{
260
260
if (UNLIKELY (list -> need_clean != FALSE)) {
261
- if (th -> vm -> trace_running <= 1 ) { /* only running this hooks */
261
+ if (rb_ec_vm_ptr ( ec ) -> trace_running <= 1 ) { /* only running this hooks */
262
262
clean_hooks (list );
263
263
}
264
264
}
@@ -267,32 +267,32 @@ exec_hooks_precheck(rb_thread_t *th, rb_hook_list_t *list, const rb_trace_arg_t
267
267
}
268
268
269
269
static void
270
- exec_hooks_unprotected (rb_thread_t * th , rb_hook_list_t * list , const rb_trace_arg_t * trace_arg )
270
+ exec_hooks_unprotected (const rb_execution_context_t * ec , rb_hook_list_t * list , const rb_trace_arg_t * trace_arg )
271
271
{
272
- if (exec_hooks_precheck (th , list , trace_arg ) == 0 ) return ;
273
- exec_hooks_body (th , list , trace_arg );
272
+ if (exec_hooks_precheck (ec , list , trace_arg ) == 0 ) return ;
273
+ exec_hooks_body (ec , list , trace_arg );
274
274
}
275
275
276
276
static int
277
- exec_hooks_protected (rb_thread_t * th , rb_hook_list_t * list , const rb_trace_arg_t * trace_arg )
277
+ exec_hooks_protected (rb_execution_context_t * ec , rb_hook_list_t * list , const rb_trace_arg_t * trace_arg )
278
278
{
279
279
enum ruby_tag_type state ;
280
280
volatile int raised ;
281
281
282
- if (exec_hooks_precheck (th , list , trace_arg ) == 0 ) return 0 ;
282
+ if (exec_hooks_precheck (ec , list , trace_arg ) == 0 ) return 0 ;
283
283
284
- raised = rb_threadptr_reset_raised ( th );
284
+ raised = rb_ec_reset_raised ( ec );
285
285
286
286
/* TODO: Support !RUBY_EVENT_HOOK_FLAG_SAFE hooks */
287
287
288
- EC_PUSH_TAG (th -> ec );
288
+ EC_PUSH_TAG (ec );
289
289
if ((state = EC_EXEC_TAG ()) == TAG_NONE ) {
290
- exec_hooks_body (th , list , trace_arg );
290
+ exec_hooks_body (ec , list , trace_arg );
291
291
}
292
292
EC_POP_TAG ();
293
293
294
294
if (raised ) {
295
- rb_threadptr_set_raised (th );
295
+ rb_threadptr_set_raised (rb_ec_thread_ptr ( ec ) );
296
296
}
297
297
298
298
return state ;
@@ -302,8 +302,8 @@ static void
302
302
rb_threadptr_exec_event_hooks_orig (rb_trace_arg_t * trace_arg , int pop_p )
303
303
{
304
304
rb_execution_context_t * ec = trace_arg -> ec ;
305
- rb_thread_t * th = rb_ec_thread_ptr (ec );
306
- rb_vm_t * vm = th -> vm ;
305
+ rb_vm_t * vm = rb_ec_vm_ptr (ec );
306
+ rb_hook_list_t * th_event_hooks = & rb_ec_thread_ptr ( ec ) -> event_hooks ;
307
307
308
308
if (trace_arg -> event & RUBY_INTERNAL_EVENT_MASK ) {
309
309
if (ec -> trace_arg && (ec -> trace_arg -> event & RUBY_INTERNAL_EVENT_MASK )) {
@@ -313,8 +313,8 @@ rb_threadptr_exec_event_hooks_orig(rb_trace_arg_t *trace_arg, int pop_p)
313
313
rb_trace_arg_t * prev_trace_arg = ec -> trace_arg ;
314
314
vm -> trace_running ++ ;
315
315
ec -> trace_arg = trace_arg ;
316
- exec_hooks_unprotected (th , & th -> event_hooks , trace_arg );
317
- exec_hooks_unprotected (th , & vm -> event_hooks , trace_arg );
316
+ exec_hooks_unprotected (ec , th_event_hooks , trace_arg );
317
+ exec_hooks_unprotected (ec , & vm -> event_hooks , trace_arg );
318
318
ec -> trace_arg = prev_trace_arg ;
319
319
vm -> trace_running -- ;
320
320
}
@@ -333,11 +333,11 @@ rb_threadptr_exec_event_hooks_orig(rb_trace_arg_t *trace_arg, int pop_p)
333
333
ec -> trace_arg = trace_arg ;
334
334
{
335
335
/* thread local traces */
336
- state = exec_hooks_protected (th , & th -> event_hooks , trace_arg );
336
+ state = exec_hooks_protected (ec , th_event_hooks , trace_arg );
337
337
if (state ) goto terminate ;
338
338
339
339
/* vm global traces */
340
- state = exec_hooks_protected (th , & vm -> event_hooks , trace_arg );
340
+ state = exec_hooks_protected (ec , & vm -> event_hooks , trace_arg );
341
341
if (state ) goto terminate ;
342
342
343
343
ec -> errinfo = errinfo ;
@@ -379,35 +379,35 @@ rb_suppress_tracing(VALUE (*func)(VALUE), VALUE arg)
379
379
{
380
380
volatile int raised ;
381
381
VALUE result = Qnil ;
382
- rb_thread_t * volatile th = GET_THREAD ();
382
+ rb_execution_context_t * ec = GET_EC ();
383
383
enum ruby_tag_type state ;
384
- const int volatile tracing = th -> ec -> trace_arg ? 1 : 0 ;
384
+ const int volatile tracing = ec -> trace_arg ? 1 : 0 ;
385
385
rb_trace_arg_t dummy_trace_arg ;
386
386
dummy_trace_arg .event = 0 ;
387
387
388
- if (!tracing ) th -> vm -> trace_running ++ ;
389
- if (!th -> ec -> trace_arg ) th -> ec -> trace_arg = & dummy_trace_arg ;
388
+ if (!tracing ) rb_ec_vm_ptr ( ec ) -> trace_running ++ ;
389
+ if (!ec -> trace_arg ) ec -> trace_arg = & dummy_trace_arg ;
390
390
391
- raised = rb_threadptr_reset_raised ( th );
391
+ raised = rb_ec_reset_raised ( ec );
392
392
393
- EC_PUSH_TAG (th -> ec );
393
+ EC_PUSH_TAG (ec );
394
394
if ((state = EC_EXEC_TAG ()) == TAG_NONE ) {
395
395
result = (* func )(arg );
396
396
}
397
397
EC_POP_TAG ();
398
398
399
399
if (raised ) {
400
- rb_threadptr_set_raised ( th );
400
+ rb_ec_reset_raised ( ec );
401
401
}
402
402
403
- if (th -> ec -> trace_arg == & dummy_trace_arg ) th -> ec -> trace_arg = 0 ;
404
- if (!tracing ) th -> vm -> trace_running -- ;
403
+ if (ec -> trace_arg == & dummy_trace_arg ) ec -> trace_arg = NULL ;
404
+ if (!tracing ) rb_ec_vm_ptr ( ec ) -> trace_running -- ;
405
405
406
406
if (state ) {
407
407
#if defined RUBY_USE_SETJMPEX && RUBY_USE_SETJMPEX
408
408
RB_GC_GUARD (result );
409
409
#endif
410
- EC_JUMP_TAG (th -> ec , state );
410
+ EC_JUMP_TAG (ec , state );
411
411
}
412
412
413
413
return result ;
0 commit comments