@@ -1997,7 +1997,6 @@ JL_DLLEXPORT void jl_method_instance_add_backedge(jl_method_instance_t *callee,
19971997 assert (invokesig == NULL || jl_is_type (invokesig ));
19981998 JL_LOCK (& callee -> def .method -> writelock );
19991999 if (jl_atomic_load_relaxed (& allow_new_worlds )) {
2000- int found = 0 ;
20012000 jl_array_t * backedges = jl_mi_get_backedges (callee );
20022001 // TODO: use jl_cache_type_(invokesig) like cache_method does to save memory
20032002 if (!backedges ) {
@@ -2006,25 +2005,7 @@ JL_DLLEXPORT void jl_method_instance_add_backedge(jl_method_instance_t *callee,
20062005 callee -> backedges = backedges ;
20072006 jl_gc_wb (callee , backedges );
20082007 }
2009- else {
2010- size_t i = 0 , l = jl_array_nrows (backedges );
2011- for (i = 0 ; i < l ; i ++ ) {
2012- // optimized version of while (i < l) i = get_next_edge(callee->backedges, i, &invokeTypes, &mi);
2013- jl_value_t * ciedge = jl_array_ptr_ref (backedges , i );
2014- if (ciedge != (jl_value_t * )caller )
2015- continue ;
2016- jl_value_t * invokeTypes = i > 0 ? jl_array_ptr_ref (backedges , i - 1 ) : NULL ;
2017- if (invokeTypes && jl_is_code_instance (invokeTypes ))
2018- invokeTypes = NULL ;
2019- if ((invokesig == NULL && invokeTypes == NULL ) ||
2020- (invokesig && invokeTypes && jl_types_equal (invokesig , invokeTypes ))) {
2021- found = 1 ;
2022- break ;
2023- }
2024- }
2025- }
2026- if (!found )
2027- push_edge (backedges , invokesig , caller );
2008+ push_edge (backedges , invokesig , caller );
20282009 }
20292010 JL_UNLOCK (& callee -> def .method -> writelock );
20302011}
@@ -2047,14 +2028,6 @@ JL_DLLEXPORT void jl_method_table_add_backedge(jl_methtable_t *mt, jl_value_t *t
20472028 else {
20482029 // check if the edge is already present and avoid adding a duplicate
20492030 size_t i , l = jl_array_nrows (mt -> backedges );
2050- for (i = 1 ; i < l ; i += 2 ) {
2051- if (jl_array_ptr_ref (mt -> backedges , i ) == (jl_value_t * )caller ) {
2052- if (jl_types_equal (jl_array_ptr_ref (mt -> backedges , i - 1 ), typ )) {
2053- JL_UNLOCK (& mt -> writelock );
2054- return ;
2055- }
2056- }
2057- }
20582031 // reuse an already cached instance of this type, if possible
20592032 // TODO: use jl_cache_type_(tt) like cache_method does, instead of this linear scan?
20602033 for (i = 1 ; i < l ; i += 2 ) {
0 commit comments