For the (slow) interpreter, it's just a string. For the compiler, we may end up just using a string in the end too, and interning, and then doing identity equality on the pointer. This is especially cheap because we have small/in-pointer/immediate strings.