I am looking at the code below which comes from JavascriptCore and I don't know what the meaning of the && is in the context below. An address of an address does not really make sense.
So can someone explain what the && means in the context below.
(the bitwise_cast uses a union to avoid strict aliasing problems that come with a reinterpret_cast)
The code below compiles on clang (and presumably gcc) but does not compile on our own proprietary C++ compiler.
The full source can be found here.
#if ENABLE(COMPUTED_GOTO_OPCODES)
Opcode* opcodeMap = LLInt::opcodeMap();
#define OPCODE_ENTRY(__opcode, length) \
opcodeMap[__opcode] = bitwise_cast<void*>(&&__opcode); //<---- The double &&
FOR_EACH_OPCODE_ID(OPCODE_ENTRY)
#undef OPCODE_ENTRY
#define LLINT_OPCODE_ENTRY(__opcode, length) \
opcodeMap[__opcode] = bitwise_cast<void*>(&&__opcode);
FOR_EACH_LLINT_NATIVE_HELPER(LLINT_OPCODE_ENTRY)
#undef LLINT_OPCODE_ENTRY
#endif