
2015-04-20 16:41 GMT+02:00 Joachim Breitner
The conclusion I draw from your mail, at last for our case, is: Don’t bother (and keep the compiler code simple). Is that a correct reading?
Yes, I think that's the right approach. Do simple things like e.g. a distinction between sparse cases (=> "if" cascade), lots of sparse cases (=> some kind of decision tree) and a non-trivial number of dense cases (jump table). For the jump table, consider computed jumps (e.g. to a table of relative jumps, which is a common implementation for PIC) and indirect jumps (the usual address table) in the backend. The former could be faster than the latter (for some ARM cores IIRC), which is not exactly intuitive. Your mileage may vary. :-) As I said: This is our experience in a JIT, so I'd be interested in other people's experience, too, especially for real-world programs, not micro-benchmarks.