Vì vậy, I've read many times before về mặt kỹ thuật .NET không hỗ trợ tối ưu hóa cuộc gọi đuôi (TCO) vì nó có mã opcode cho nó và chỉ C# không tạo ra nó.Tại sao tối ưu hóa cuộc gọi đuôi cần mã op?
Tôi không chắc chắn lý do tại sao TCO cần mã opcode hoặc nó sẽ làm gì. Theo như tôi biết, yêu cầu để có thể thực hiện TCO là kết quả của một cuộc gọi đệ quy không được kết hợp với bất kỳ biến nào trong phạm vi chức năng hiện tại. Nếu bạn không có điều đó, sau đó tôi không thấy làm thế nào một opcode ngăn cản bạn phải giữ một khung stack mở. Nếu bạn có điều đó, thì trình biên dịch không thể dễ dàng biên dịch nó thành một cái gì đó lặp đi lặp lại?
Vậy điểm opcode là gì? Rõ ràng là có một cái gì đó tôi đang mất tích. Trong trường hợp TCO là có thể ở tất cả, không phải nó luôn luôn được xử lý ở cấp độ trình biên dịch hơn ở cấp opcode? Ví dụ về nơi nó không thể là gì?
Dự đoán không suy đoán của tôi là mã op này được dự định giống như một gợi ý từ trình biên dịch cao cấp đến JITter sao cho sau này có biên dịch nhanh là một trong những tính năng chính của nó - được giải phóng khỏi thời gian có thể -Phân tích nhiệm vụ phân tích IL để xem liệu tối ưu hóa cuộc gọi đuôi có thực sự khả thi trong bất kỳ kịch bản cụ thể nào không. –