@@ -1997,7 +1997,6 @@ JL_DLLEXPORT void jl_method_instance_add_backedge(jl_method_instance_t *callee,
1997
1997
assert (invokesig == NULL || jl_is_type (invokesig ));
1998
1998
JL_LOCK (& callee -> def .method -> writelock );
1999
1999
if (jl_atomic_load_relaxed (& allow_new_worlds )) {
2000
- int found = 0 ;
2001
2000
jl_array_t * backedges = jl_mi_get_backedges (callee );
2002
2001
// TODO: use jl_cache_type_(invokesig) like cache_method does to save memory
2003
2002
if (!backedges ) {
@@ -2006,25 +2005,7 @@ JL_DLLEXPORT void jl_method_instance_add_backedge(jl_method_instance_t *callee,
2006
2005
callee -> backedges = backedges ;
2007
2006
jl_gc_wb (callee , backedges );
2008
2007
}
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 );
2028
2009
}
2029
2010
JL_UNLOCK (& callee -> def .method -> writelock );
2030
2011
}
@@ -2047,14 +2028,6 @@ JL_DLLEXPORT void jl_method_table_add_backedge(jl_methtable_t *mt, jl_value_t *t
2047
2028
else {
2048
2029
// check if the edge is already present and avoid adding a duplicate
2049
2030
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
- }
2058
2031
// reuse an already cached instance of this type, if possible
2059
2032
// TODO: use jl_cache_type_(tt) like cache_method does, instead of this linear scan?
2060
2033
for (i = 1 ; i < l ; i += 2 ) {
0 commit comments