Hi, On 16/09/10 07:27, hakanardo@codespeak.net wrote:
Log: Allow jit to unroll calls to max() and min() with more than one argument.
[cut]
+@unroll_safe @specialize.arg(2) def min_max(space, args, implementation_of): if implementation_of == "max": compare = space.gt else: compare = space.lt + + args_w = args.arguments_w + if len(args_w)> 1 and not args.keywords: # Unrollable case + w_max_item = None + for w_item in args_w: + if w_max_item is None or \ + space.is_true(compare(w_item, w_max_item)): + w_max_item = w_item + return w_max_item + else: + return min_max_loop(space, args, implementation_of)
I don't think it's a good idea. What happens if I call max() over a list of 1 million of elements? We obviously don't want the jit to unroll 1 million of iterations. Or am I missing something? ciao, Anto