What's the problem?I'm running into some significant performance problems running iC64 on the device. Let's not forget this is a mobile device, and VICE is designed to run on some pretty hefty hardware. I believe the iPhone can do it, but it's going to take some work on my part to get it there.
What can you do about it?
I've been staring at ARM assembly (not Thumb) and monitored the device with Shark, which is a tool used for performance analysis. It's obvious that there simply aren't enough cycles to run the emulator as it stands today.
Part of the issue is that VICE is broken into 100's of small files for modularity, but that causes problems accessing shared static data across object files. What I'm finding is that a variable 'foo' declared in file 'a' and accessed in file 'b' generates three memory accesses. Two indirect reads before getting the value. Ouch. I've found ways to mitigate this, but it's going to require a fair amount of refactoring. I'll start with the hot-spots first and work my way on from there, until I've squeezed out the performance I need. Unfortunately, how long this will take is an unknown, so I'll post updates as I progress.