Here we draw your line on the x2 bar no 3380 and include barstate.islast in conditions evaluated on every bar, as enclosing your line drawing call inside the if block will not make the detection of crossovers possible:
Version 1
//@version=4
study("", "", true, max_bars_back = 5000)
var line lineObj = na
trendLineCrossover = false
if (syminfo.tickerid == "BINANCE:SRMUSDT") and bar_index == 3380
lineObj := line.new(x1=bar_index-89, y1=0.9609, x2=bar_index , y2=1.0216, extend=extend.right)
trendLine = line.get_price(lineObj, bar_index)
trendLineCrossover := barstate.islast and crossover(close, trendLine)
plotshape(trendLineCrossover, title="trendLineCrossover", color=color.purple, style=shape.xcross)
// For validation only.
c = close < trendLine
plotchar(c, "c", "•", location.top, size = size.tiny)
// Show bg starting at the bar where we draw our line.
bgcolor(bar_index > 3380-89 ? color.silver : na)

Version 2
//@version=4
study("", "", true)
var line lineObj = na
if (syminfo.tickerid == "BINANCE:SRMUSDT") and bar_index == 3380
lineObj := line.new(x1=bar_index-89, y1=0.9609, x2=bar_index , y2=1.0216, extend=extend.right)
trendLine = line.get_price(lineObj, bar_index)
trendLineCrossover = crossover(close, trendLine)
plotshape(trendLineCrossover, title="trendLineCrossover", color=color.purple, style=shape.xcross)
// —————— For validation only.
// Bar no.
plotchar(bar_index, "bar_index", "", location.top, size = size.tiny)
// Plots the value returned by line.get_price() so you can see when it becomes available.
plot(trendLine, "trendLine", color.blue, 6, transp = 60)
// Show bg starting at the bar where where the line is drawn.
bgcolor(bar_index > 3380 ? color.silver : na)
