| // This file was generated by KeywordLookupGenerator.py. Do not edit. |
| |
| #if CPU(NEEDS_ALIGNED_ACCESS) |
| |
| #define COMPARE_2CHARS(address, char1, char2) \ |
| (((address)[0] == char1) && ((address)[1] == char2)) |
| #define COMPARE_4CHARS(address, char1, char2, char3, char4) \ |
| (COMPARE_2CHARS(address, char1, char2) && COMPARE_2CHARS((address) + 2, char3, char4)) |
| #define COMPARE_2UCHARS(address, char1, char2) \ |
| (((address)[0] == char1) && ((address)[1] == char2)) |
| #define COMPARE_4UCHARS(address, char1, char2, char3, char4) \ |
| (COMPARE_2UCHARS(address, char1, char2) && COMPARE_2UCHARS((address) + 2, char3, char4)) |
| |
| #else // CPU(NEEDS_ALIGNED_ACCESS) |
| |
| #if CPU(BIG_ENDIAN) |
| |
| #define CHARPAIR_TOUINT16(a, b) \ |
| ((((uint16_t)(a)) << 8) + (uint16_t)(b)) |
| #define CHARQUAD_TOUINT32(a, b, c, d) \ |
| ((((uint32_t)(CHARPAIR_TOUINT16(a, b))) << 16) + CHARPAIR_TOUINT16(c, d)) |
| #define UCHARPAIR_TOUINT32(a, b) \ |
| ((((uint32_t)(a)) << 16) + (uint32_t)(b)) |
| #define UCHARQUAD_TOUINT64(a, b, c, d) \ |
| ((((uint64_t)(UCHARQUAD_TOUINT64(a, b))) << 32) + UCHARPAIR_TOUINT32(c, d)) |
| |
| #else // CPU(BIG_ENDIAN) |
| |
| #define CHARPAIR_TOUINT16(a, b) \ |
| ((((uint16_t)(b)) << 8) + (uint16_t)(a)) |
| #define CHARQUAD_TOUINT32(a, b, c, d) \ |
| ((((uint32_t)(CHARPAIR_TOUINT16(c, d))) << 16) + CHARPAIR_TOUINT16(a, b)) |
| #define UCHARPAIR_TOUINT32(a, b) \ |
| ((((uint32_t)(b)) << 16) + (uint32_t)(a)) |
| #define UCHARQUAD_TOUINT64(a, b, c, d) \ |
| ((((uint64_t)(UCHARPAIR_TOUINT32(c, d))) << 32) + UCHARPAIR_TOUINT32(a, b)) |
| |
| #endif // CPU(BIG_ENDIAN) |
| |
| |
| #define COMPARE_2CHARS(address, char1, char2) \ |
| ((reinterpret_cast<const uint16_t*>(address))[0] == CHARPAIR_TOUINT16(char1, char2)) |
| #define COMPARE_2UCHARS(address, char1, char2) \ |
| ((reinterpret_cast<const uint32_t*>(address))[0] == UCHARPAIR_TOUINT32(char1, char2)) |
| |
| #if CPU(X86_64) |
| |
| #define COMPARE_4CHARS(address, char1, char2, char3, char4) \ |
| ((reinterpret_cast<const uint32_t*>(address))[0] == CHARQUAD_TOUINT32(char1, char2, char3, char4)) |
| #define COMPARE_4UCHARS(address, char1, char2, char3, char4) \ |
| ((reinterpret_cast<const uint64_t*>(address))[0] == UCHARQUAD_TOUINT64(char1, char2, char3, char4)) |
| |
| #else // CPU(X86_64) |
| |
| #define COMPARE_4CHARS(address, char1, char2, char3, char4) \ |
| (COMPARE_2CHARS(address, char1, char2) && COMPARE_2CHARS((address) + 2, char3, char4)) |
| #define COMPARE_4UCHARS(address, char1, char2, char3, char4) \ |
| (COMPARE_2UCHARS(address, char1, char2) && COMPARE_2UCHARS((address) + 2, char3, char4)) |
| |
| #endif // CPU(X86_64) |
| |
| #endif // CPU(NEEDS_ALIGNED_ACCESS) |
| |
| #define COMPARE_3CHARS(address, char1, char2, char3) \ |
| (COMPARE_2CHARS(address, char1, char2) && ((address)[2] == (char3))) |
| #define COMPARE_3UCHARS(address, char1, char2, char3) \ |
| (COMPARE_2UCHARS(address, char1, char2) && ((address)[2] == (char3))) |
| #define COMPARE_5CHARS(address, char1, char2, char3, char4, char5) \ |
| (COMPARE_4CHARS(address, char1, char2, char3, char4) && ((address)[4] == (char5))) |
| #define COMPARE_5UCHARS(address, char1, char2, char3, char4, char5) \ |
| (COMPARE_4UCHARS(address, char1, char2, char3, char4) && ((address)[4] == (char5))) |
| #define COMPARE_6CHARS(address, char1, char2, char3, char4, char5, char6) \ |
| (COMPARE_4CHARS(address, char1, char2, char3, char4) && COMPARE_2CHARS(address + 4, char5, char6)) |
| #define COMPARE_6UCHARS(address, char1, char2, char3, char4, char5, char6) \ |
| (COMPARE_4UCHARS(address, char1, char2, char3, char4) && COMPARE_2UCHARS(address + 4, char5, char6)) |
| #define COMPARE_7CHARS(address, char1, char2, char3, char4, char5, char6, char7) \ |
| (COMPARE_4CHARS(address, char1, char2, char3, char4) && COMPARE_4CHARS(address + 3, char4, char5, char6, char7)) |
| #define COMPARE_7UCHARS(address, char1, char2, char3, char4, char5, char6, char7) \ |
| (COMPARE_4UCHARS(address, char1, char2, char3, char4) && COMPARE_4UCHARS(address + 3, char4, char5, char6, char7)) |
| #define COMPARE_8CHARS(address, char1, char2, char3, char4, char5, char6, char7, char8) \ |
| (COMPARE_4CHARS(address, char1, char2, char3, char4) && COMPARE_4CHARS(address + 4, char5, char6, char7, char8)) |
| #define COMPARE_8UCHARS(address, char1, char2, char3, char4, char5, char6, char7, char8) \ |
| (COMPARE_4UCHARS(address, char1, char2, char3, char4) && COMPARE_4UCHARS(address + 4, char5, char6, char7, char8)) |
| |
| namespace JSC { |
| |
| static ALWAYS_INLINE bool isIdentPartIncludingEscape(const LChar* code, const LChar* codeEnd); |
| static ALWAYS_INLINE bool isIdentPartIncludingEscape(const UChar* code, const UChar* codeEnd); |
| static const int maxTokenLength = 11; |
| |
| template <> |
| template <bool shouldCreateIdentifier> ALWAYS_INLINE JSTokenType Lexer<UChar>::parseKeyword(JSTokenData* data) |
| { |
| ASSERT(m_codeEnd - m_code >= maxTokenLength); |
| |
| const UChar* code = m_code; |
| if (code[0] == 'f') { |
| if (COMPARE_7UCHARS(code + 1, 'u', 'n', 'c', 't', 'i', 'o', 'n')) { |
| if (!isIdentPartIncludingEscape(code+8, m_codeEnd)) { |
| internalShift<8>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->functionKeyword; |
| return FUNCTION; |
| } |
| } else if (COMPARE_2UCHARS(code + 1, 'o', 'r')) { |
| if (!isIdentPartIncludingEscape(code+3, m_codeEnd)) { |
| internalShift<3>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->forKeyword; |
| return FOR; |
| } |
| } else if (COMPARE_4UCHARS(code + 1, 'a', 'l', 's', 'e')) { |
| if (!isIdentPartIncludingEscape(code+5, m_codeEnd)) { |
| internalShift<5>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->falseKeyword; |
| return FALSETOKEN; |
| } |
| } else if (COMPARE_6UCHARS(code + 1, 'i', 'n', 'a', 'l', 'l', 'y')) { |
| if (!isIdentPartIncludingEscape(code+7, m_codeEnd)) { |
| internalShift<7>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->finallyKeyword; |
| return FINALLY; |
| } |
| } |
| } else if (code[0] == 't') { |
| if (code[1] == 'h') { |
| if (COMPARE_2UCHARS(code + 2, 'i', 's')) { |
| if (!isIdentPartIncludingEscape(code+4, m_codeEnd)) { |
| internalShift<4>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->thisKeyword; |
| return THISTOKEN; |
| } |
| } else if (COMPARE_4UCHARS(code + 1, 'h', 'r', 'o', 'w')) { |
| if (!isIdentPartIncludingEscape(code+5, m_codeEnd)) { |
| internalShift<5>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->throwKeyword; |
| return THROW; |
| } |
| } |
| } else if (code[1] == 'r') { |
| if (COMPARE_2UCHARS(code + 2, 'u', 'e')) { |
| if (!isIdentPartIncludingEscape(code+4, m_codeEnd)) { |
| internalShift<4>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->trueKeyword; |
| return TRUETOKEN; |
| } |
| } else if (code[2] == 'y') { |
| if (!isIdentPartIncludingEscape(code+3, m_codeEnd)) { |
| internalShift<3>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->tryKeyword; |
| return TRY; |
| } |
| } |
| } else if (COMPARE_5UCHARS(code + 1, 'y', 'p', 'e', 'o', 'f')) { |
| if (!isIdentPartIncludingEscape(code+6, m_codeEnd)) { |
| internalShift<6>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->typeofKeyword; |
| return TYPEOF; |
| } |
| } |
| } else if (code[0] == 'i') { |
| if (code[1] == 'f') { |
| if (!isIdentPartIncludingEscape(code+2, m_codeEnd)) { |
| internalShift<2>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->ifKeyword; |
| return IF; |
| } |
| } else if (code[1] == 'n') { |
| if (!isIdentPartIncludingEscape(code+2, m_codeEnd)) { |
| internalShift<2>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->inKeyword; |
| return INTOKEN; |
| } |
| if (COMPARE_7UCHARS(code + 2, 't', 'e', 'r', 'f', 'a', 'c', 'e')) { |
| if (!isIdentPartIncludingEscape(code+9, m_codeEnd)) { |
| internalShift<9>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->interfaceKeyword; |
| return RESERVED_IF_STRICT; |
| } |
| } else if (COMPARE_8UCHARS(code + 2, 's', 't', 'a', 'n', 'c', 'e', 'o', 'f')) { |
| if (!isIdentPartIncludingEscape(code+10, m_codeEnd)) { |
| internalShift<10>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->instanceofKeyword; |
| return INSTANCEOF; |
| } |
| } |
| } else if (COMPARE_2UCHARS(code + 1, 'm', 'p')) { |
| if (COMPARE_4UCHARS(code + 2, 'p', 'o', 'r', 't')) { |
| if (!isIdentPartIncludingEscape(code+6, m_codeEnd)) { |
| internalShift<6>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->importKeyword; |
| return IMPORT; |
| } |
| } else if (COMPARE_7UCHARS(code + 3, 'l', 'e', 'm', 'e', 'n', 't', 's')) { |
| if (!isIdentPartIncludingEscape(code+10, m_codeEnd)) { |
| internalShift<10>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->implementsKeyword; |
| return RESERVED_IF_STRICT; |
| } |
| } |
| } |
| } else if (code[0] == 'v') { |
| if (COMPARE_2UCHARS(code + 1, 'a', 'r')) { |
| if (!isIdentPartIncludingEscape(code+3, m_codeEnd)) { |
| internalShift<3>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->varKeyword; |
| return VAR; |
| } |
| } else if (COMPARE_4UCHARS(code, 'v', 'o', 'i', 'd')) { |
| if (!isIdentPartIncludingEscape(code+4, m_codeEnd)) { |
| internalShift<4>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->voidKeyword; |
| return VOIDTOKEN; |
| } |
| } |
| } else if (COMPARE_6UCHARS(code, 'r', 'e', 't', 'u', 'r', 'n')) { |
| if (!isIdentPartIncludingEscape(code+6, m_codeEnd)) { |
| internalShift<6>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->returnKeyword; |
| return RETURN; |
| } |
| } else if (code[0] == 'n') { |
| if (COMPARE_4UCHARS(code, 'n', 'u', 'l', 'l')) { |
| if (!isIdentPartIncludingEscape(code+4, m_codeEnd)) { |
| internalShift<4>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->nullKeyword; |
| return NULLTOKEN; |
| } |
| } else if (COMPARE_2UCHARS(code + 1, 'e', 'w')) { |
| if (!isIdentPartIncludingEscape(code+3, m_codeEnd)) { |
| internalShift<3>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->newKeyword; |
| return NEW; |
| } |
| } |
| } else if (code[0] == 'e') { |
| if (COMPARE_4UCHARS(code, 'e', 'l', 's', 'e')) { |
| if (!isIdentPartIncludingEscape(code+4, m_codeEnd)) { |
| internalShift<4>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->elseKeyword; |
| return ELSE; |
| } |
| } else if (code[1] == 'x') { |
| if (COMPARE_4UCHARS(code + 2, 'p', 'o', 'r', 't')) { |
| if (!isIdentPartIncludingEscape(code+6, m_codeEnd)) { |
| internalShift<6>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->exportKeyword; |
| return EXPORT; |
| } |
| } else if (COMPARE_5UCHARS(code + 2, 't', 'e', 'n', 'd', 's')) { |
| if (!isIdentPartIncludingEscape(code+7, m_codeEnd)) { |
| internalShift<7>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->extendsKeyword; |
| return EXTENDS; |
| } |
| } |
| } else if (COMPARE_4UCHARS(code, 'e', 'n', 'u', 'm')) { |
| if (!isIdentPartIncludingEscape(code+4, m_codeEnd)) { |
| internalShift<4>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->enumKeyword; |
| return RESERVED; |
| } |
| } |
| } else if (code[0] == 'c') { |
| if (code[1] == 'a') { |
| if (COMPARE_4UCHARS(code + 1, 'a', 't', 'c', 'h')) { |
| if (!isIdentPartIncludingEscape(code+5, m_codeEnd)) { |
| internalShift<5>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->catchKeyword; |
| return CATCH; |
| } |
| } else if (COMPARE_2UCHARS(code + 2, 's', 'e')) { |
| if (!isIdentPartIncludingEscape(code+4, m_codeEnd)) { |
| internalShift<4>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->caseKeyword; |
| return CASE; |
| } |
| } |
| } else if (COMPARE_2UCHARS(code + 1, 'o', 'n')) { |
| if (COMPARE_5UCHARS(code + 3, 't', 'i', 'n', 'u', 'e')) { |
| if (!isIdentPartIncludingEscape(code+8, m_codeEnd)) { |
| internalShift<8>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->continueKeyword; |
| return CONTINUE; |
| } |
| } else if (COMPARE_2UCHARS(code + 3, 's', 't')) { |
| if (!isIdentPartIncludingEscape(code+5, m_codeEnd)) { |
| internalShift<5>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->constKeyword; |
| return CONSTTOKEN; |
| } |
| } |
| } else if (COMPARE_4UCHARS(code + 1, 'l', 'a', 's', 's')) { |
| if (!isIdentPartIncludingEscape(code+5, m_codeEnd)) { |
| internalShift<5>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->classKeyword; |
| return CLASSTOKEN; |
| } |
| } |
| } else if (COMPARE_5UCHARS(code, 'b', 'r', 'e', 'a', 'k')) { |
| if (!isIdentPartIncludingEscape(code+5, m_codeEnd)) { |
| internalShift<5>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->breakKeyword; |
| return BREAK; |
| } |
| } else if (code[0] == 'w') { |
| if (COMPARE_4UCHARS(code + 1, 'h', 'i', 'l', 'e')) { |
| if (!isIdentPartIncludingEscape(code+5, m_codeEnd)) { |
| internalShift<5>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->whileKeyword; |
| return WHILE; |
| } |
| } else if (COMPARE_4UCHARS(code, 'w', 'i', 't', 'h')) { |
| if (!isIdentPartIncludingEscape(code+4, m_codeEnd)) { |
| internalShift<4>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->withKeyword; |
| return WITH; |
| } |
| } |
| } else if (code[0] == 'd') { |
| if (code[1] == 'e') { |
| if (COMPARE_5UCHARS(code + 2, 'f', 'a', 'u', 'l', 't')) { |
| if (!isIdentPartIncludingEscape(code+7, m_codeEnd)) { |
| internalShift<7>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->defaultKeyword; |
| return DEFAULT; |
| } |
| } else if (COMPARE_6UCHARS(code + 2, 'b', 'u', 'g', 'g', 'e', 'r')) { |
| if (!isIdentPartIncludingEscape(code+8, m_codeEnd)) { |
| internalShift<8>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->debuggerKeyword; |
| return DEBUGGER; |
| } |
| } else if (COMPARE_4UCHARS(code + 2, 'l', 'e', 't', 'e')) { |
| if (!isIdentPartIncludingEscape(code+6, m_codeEnd)) { |
| internalShift<6>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->deleteKeyword; |
| return DELETETOKEN; |
| } |
| } |
| } else if (code[1] == 'o') { |
| if (!isIdentPartIncludingEscape(code+2, m_codeEnd)) { |
| internalShift<2>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->doKeyword; |
| return DO; |
| } |
| } |
| } else if (COMPARE_5UCHARS(code, 'a', 'w', 'a', 'i', 't')) { |
| if (!isIdentPartIncludingEscape(code+5, m_codeEnd)) { |
| internalShift<5>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->awaitKeyword; |
| return AWAIT; |
| } |
| } else if (COMPARE_5UCHARS(code, 'y', 'i', 'e', 'l', 'd')) { |
| if (!isIdentPartIncludingEscape(code+5, m_codeEnd)) { |
| internalShift<5>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->yieldKeyword; |
| return YIELD; |
| } |
| } else if (code[0] == 'p') { |
| if (code[1] == 'r') { |
| if (COMPARE_5UCHARS(code + 2, 'i', 'v', 'a', 't', 'e')) { |
| if (!isIdentPartIncludingEscape(code+7, m_codeEnd)) { |
| internalShift<7>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->privateKeyword; |
| return RESERVED_IF_STRICT; |
| } |
| } else if (COMPARE_7UCHARS(code + 2, 'o', 't', 'e', 'c', 't', 'e', 'd')) { |
| if (!isIdentPartIncludingEscape(code+9, m_codeEnd)) { |
| internalShift<9>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->protectedKeyword; |
| return RESERVED_IF_STRICT; |
| } |
| } |
| } else if (COMPARE_5UCHARS(code + 1, 'u', 'b', 'l', 'i', 'c')) { |
| if (!isIdentPartIncludingEscape(code+6, m_codeEnd)) { |
| internalShift<6>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->publicKeyword; |
| return RESERVED_IF_STRICT; |
| } |
| } else if (COMPARE_6UCHARS(code + 1, 'a', 'c', 'k', 'a', 'g', 'e')) { |
| if (!isIdentPartIncludingEscape(code+7, m_codeEnd)) { |
| internalShift<7>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->packageKeyword; |
| return RESERVED_IF_STRICT; |
| } |
| } |
| } else if (code[0] == 's') { |
| if (COMPARE_5UCHARS(code + 1, 'w', 'i', 't', 'c', 'h')) { |
| if (!isIdentPartIncludingEscape(code+6, m_codeEnd)) { |
| internalShift<6>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->switchKeyword; |
| return SWITCH; |
| } |
| } else if (COMPARE_5UCHARS(code + 1, 't', 'a', 't', 'i', 'c')) { |
| if (!isIdentPartIncludingEscape(code+6, m_codeEnd)) { |
| internalShift<6>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->staticKeyword; |
| return RESERVED_IF_STRICT; |
| } |
| } else if (COMPARE_4UCHARS(code + 1, 'u', 'p', 'e', 'r')) { |
| if (!isIdentPartIncludingEscape(code+5, m_codeEnd)) { |
| internalShift<5>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->superKeyword; |
| return SUPER; |
| } |
| } |
| } else if (COMPARE_3UCHARS(code, 'l', 'e', 't')) { |
| if (!isIdentPartIncludingEscape(code+3, m_codeEnd)) { |
| internalShift<3>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->letKeyword; |
| return LET; |
| } |
| } |
| return IDENT; |
| } |
| |
| template <> |
| template <bool shouldCreateIdentifier> ALWAYS_INLINE JSTokenType Lexer<LChar>::parseKeyword(JSTokenData* data) |
| { |
| ASSERT(m_codeEnd - m_code >= maxTokenLength); |
| |
| const LChar* code = m_code; |
| if (code[0] == 'f') { |
| if (COMPARE_7CHARS(code + 1, 'u', 'n', 'c', 't', 'i', 'o', 'n')) { |
| if (!isIdentPartIncludingEscape(code+8, m_codeEnd)) { |
| internalShift<8>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->functionKeyword; |
| return FUNCTION; |
| } |
| } else if (COMPARE_2CHARS(code + 1, 'o', 'r')) { |
| if (!isIdentPartIncludingEscape(code+3, m_codeEnd)) { |
| internalShift<3>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->forKeyword; |
| return FOR; |
| } |
| } else if (COMPARE_4CHARS(code + 1, 'a', 'l', 's', 'e')) { |
| if (!isIdentPartIncludingEscape(code+5, m_codeEnd)) { |
| internalShift<5>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->falseKeyword; |
| return FALSETOKEN; |
| } |
| } else if (COMPARE_6CHARS(code + 1, 'i', 'n', 'a', 'l', 'l', 'y')) { |
| if (!isIdentPartIncludingEscape(code+7, m_codeEnd)) { |
| internalShift<7>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->finallyKeyword; |
| return FINALLY; |
| } |
| } |
| } else if (code[0] == 't') { |
| if (code[1] == 'h') { |
| if (COMPARE_2CHARS(code + 2, 'i', 's')) { |
| if (!isIdentPartIncludingEscape(code+4, m_codeEnd)) { |
| internalShift<4>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->thisKeyword; |
| return THISTOKEN; |
| } |
| } else if (COMPARE_4CHARS(code + 1, 'h', 'r', 'o', 'w')) { |
| if (!isIdentPartIncludingEscape(code+5, m_codeEnd)) { |
| internalShift<5>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->throwKeyword; |
| return THROW; |
| } |
| } |
| } else if (code[1] == 'r') { |
| if (COMPARE_2CHARS(code + 2, 'u', 'e')) { |
| if (!isIdentPartIncludingEscape(code+4, m_codeEnd)) { |
| internalShift<4>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->trueKeyword; |
| return TRUETOKEN; |
| } |
| } else if (code[2] == 'y') { |
| if (!isIdentPartIncludingEscape(code+3, m_codeEnd)) { |
| internalShift<3>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->tryKeyword; |
| return TRY; |
| } |
| } |
| } else if (COMPARE_5CHARS(code + 1, 'y', 'p', 'e', 'o', 'f')) { |
| if (!isIdentPartIncludingEscape(code+6, m_codeEnd)) { |
| internalShift<6>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->typeofKeyword; |
| return TYPEOF; |
| } |
| } |
| } else if (code[0] == 'i') { |
| if (code[1] == 'f') { |
| if (!isIdentPartIncludingEscape(code+2, m_codeEnd)) { |
| internalShift<2>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->ifKeyword; |
| return IF; |
| } |
| } else if (code[1] == 'n') { |
| if (!isIdentPartIncludingEscape(code+2, m_codeEnd)) { |
| internalShift<2>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->inKeyword; |
| return INTOKEN; |
| } |
| if (COMPARE_7CHARS(code + 2, 't', 'e', 'r', 'f', 'a', 'c', 'e')) { |
| if (!isIdentPartIncludingEscape(code+9, m_codeEnd)) { |
| internalShift<9>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->interfaceKeyword; |
| return RESERVED_IF_STRICT; |
| } |
| } else if (COMPARE_8CHARS(code + 2, 's', 't', 'a', 'n', 'c', 'e', 'o', 'f')) { |
| if (!isIdentPartIncludingEscape(code+10, m_codeEnd)) { |
| internalShift<10>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->instanceofKeyword; |
| return INSTANCEOF; |
| } |
| } |
| } else if (COMPARE_2CHARS(code + 1, 'm', 'p')) { |
| if (COMPARE_4CHARS(code + 2, 'p', 'o', 'r', 't')) { |
| if (!isIdentPartIncludingEscape(code+6, m_codeEnd)) { |
| internalShift<6>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->importKeyword; |
| return IMPORT; |
| } |
| } else if (COMPARE_7CHARS(code + 3, 'l', 'e', 'm', 'e', 'n', 't', 's')) { |
| if (!isIdentPartIncludingEscape(code+10, m_codeEnd)) { |
| internalShift<10>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->implementsKeyword; |
| return RESERVED_IF_STRICT; |
| } |
| } |
| } |
| } else if (code[0] == 'v') { |
| if (COMPARE_2CHARS(code + 1, 'a', 'r')) { |
| if (!isIdentPartIncludingEscape(code+3, m_codeEnd)) { |
| internalShift<3>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->varKeyword; |
| return VAR; |
| } |
| } else if (COMPARE_4CHARS(code, 'v', 'o', 'i', 'd')) { |
| if (!isIdentPartIncludingEscape(code+4, m_codeEnd)) { |
| internalShift<4>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->voidKeyword; |
| return VOIDTOKEN; |
| } |
| } |
| } else if (COMPARE_6CHARS(code, 'r', 'e', 't', 'u', 'r', 'n')) { |
| if (!isIdentPartIncludingEscape(code+6, m_codeEnd)) { |
| internalShift<6>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->returnKeyword; |
| return RETURN; |
| } |
| } else if (code[0] == 'n') { |
| if (COMPARE_4CHARS(code, 'n', 'u', 'l', 'l')) { |
| if (!isIdentPartIncludingEscape(code+4, m_codeEnd)) { |
| internalShift<4>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->nullKeyword; |
| return NULLTOKEN; |
| } |
| } else if (COMPARE_2CHARS(code + 1, 'e', 'w')) { |
| if (!isIdentPartIncludingEscape(code+3, m_codeEnd)) { |
| internalShift<3>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->newKeyword; |
| return NEW; |
| } |
| } |
| } else if (code[0] == 'e') { |
| if (COMPARE_4CHARS(code, 'e', 'l', 's', 'e')) { |
| if (!isIdentPartIncludingEscape(code+4, m_codeEnd)) { |
| internalShift<4>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->elseKeyword; |
| return ELSE; |
| } |
| } else if (code[1] == 'x') { |
| if (COMPARE_4CHARS(code + 2, 'p', 'o', 'r', 't')) { |
| if (!isIdentPartIncludingEscape(code+6, m_codeEnd)) { |
| internalShift<6>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->exportKeyword; |
| return EXPORT; |
| } |
| } else if (COMPARE_5CHARS(code + 2, 't', 'e', 'n', 'd', 's')) { |
| if (!isIdentPartIncludingEscape(code+7, m_codeEnd)) { |
| internalShift<7>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->extendsKeyword; |
| return EXTENDS; |
| } |
| } |
| } else if (COMPARE_4CHARS(code, 'e', 'n', 'u', 'm')) { |
| if (!isIdentPartIncludingEscape(code+4, m_codeEnd)) { |
| internalShift<4>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->enumKeyword; |
| return RESERVED; |
| } |
| } |
| } else if (code[0] == 'c') { |
| if (code[1] == 'a') { |
| if (COMPARE_4CHARS(code + 1, 'a', 't', 'c', 'h')) { |
| if (!isIdentPartIncludingEscape(code+5, m_codeEnd)) { |
| internalShift<5>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->catchKeyword; |
| return CATCH; |
| } |
| } else if (COMPARE_2CHARS(code + 2, 's', 'e')) { |
| if (!isIdentPartIncludingEscape(code+4, m_codeEnd)) { |
| internalShift<4>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->caseKeyword; |
| return CASE; |
| } |
| } |
| } else if (COMPARE_2CHARS(code + 1, 'o', 'n')) { |
| if (COMPARE_5CHARS(code + 3, 't', 'i', 'n', 'u', 'e')) { |
| if (!isIdentPartIncludingEscape(code+8, m_codeEnd)) { |
| internalShift<8>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->continueKeyword; |
| return CONTINUE; |
| } |
| } else if (COMPARE_2CHARS(code + 3, 's', 't')) { |
| if (!isIdentPartIncludingEscape(code+5, m_codeEnd)) { |
| internalShift<5>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->constKeyword; |
| return CONSTTOKEN; |
| } |
| } |
| } else if (COMPARE_4CHARS(code + 1, 'l', 'a', 's', 's')) { |
| if (!isIdentPartIncludingEscape(code+5, m_codeEnd)) { |
| internalShift<5>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->classKeyword; |
| return CLASSTOKEN; |
| } |
| } |
| } else if (COMPARE_5CHARS(code, 'b', 'r', 'e', 'a', 'k')) { |
| if (!isIdentPartIncludingEscape(code+5, m_codeEnd)) { |
| internalShift<5>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->breakKeyword; |
| return BREAK; |
| } |
| } else if (code[0] == 'w') { |
| if (COMPARE_4CHARS(code + 1, 'h', 'i', 'l', 'e')) { |
| if (!isIdentPartIncludingEscape(code+5, m_codeEnd)) { |
| internalShift<5>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->whileKeyword; |
| return WHILE; |
| } |
| } else if (COMPARE_4CHARS(code, 'w', 'i', 't', 'h')) { |
| if (!isIdentPartIncludingEscape(code+4, m_codeEnd)) { |
| internalShift<4>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->withKeyword; |
| return WITH; |
| } |
| } |
| } else if (code[0] == 'd') { |
| if (code[1] == 'e') { |
| if (COMPARE_5CHARS(code + 2, 'f', 'a', 'u', 'l', 't')) { |
| if (!isIdentPartIncludingEscape(code+7, m_codeEnd)) { |
| internalShift<7>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->defaultKeyword; |
| return DEFAULT; |
| } |
| } else if (COMPARE_6CHARS(code + 2, 'b', 'u', 'g', 'g', 'e', 'r')) { |
| if (!isIdentPartIncludingEscape(code+8, m_codeEnd)) { |
| internalShift<8>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->debuggerKeyword; |
| return DEBUGGER; |
| } |
| } else if (COMPARE_4CHARS(code + 2, 'l', 'e', 't', 'e')) { |
| if (!isIdentPartIncludingEscape(code+6, m_codeEnd)) { |
| internalShift<6>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->deleteKeyword; |
| return DELETETOKEN; |
| } |
| } |
| } else if (code[1] == 'o') { |
| if (!isIdentPartIncludingEscape(code+2, m_codeEnd)) { |
| internalShift<2>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->doKeyword; |
| return DO; |
| } |
| } |
| } else if (COMPARE_5CHARS(code, 'a', 'w', 'a', 'i', 't')) { |
| if (!isIdentPartIncludingEscape(code+5, m_codeEnd)) { |
| internalShift<5>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->awaitKeyword; |
| return AWAIT; |
| } |
| } else if (COMPARE_5CHARS(code, 'y', 'i', 'e', 'l', 'd')) { |
| if (!isIdentPartIncludingEscape(code+5, m_codeEnd)) { |
| internalShift<5>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->yieldKeyword; |
| return YIELD; |
| } |
| } else if (code[0] == 'p') { |
| if (code[1] == 'r') { |
| if (COMPARE_5CHARS(code + 2, 'i', 'v', 'a', 't', 'e')) { |
| if (!isIdentPartIncludingEscape(code+7, m_codeEnd)) { |
| internalShift<7>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->privateKeyword; |
| return RESERVED_IF_STRICT; |
| } |
| } else if (COMPARE_7CHARS(code + 2, 'o', 't', 'e', 'c', 't', 'e', 'd')) { |
| if (!isIdentPartIncludingEscape(code+9, m_codeEnd)) { |
| internalShift<9>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->protectedKeyword; |
| return RESERVED_IF_STRICT; |
| } |
| } |
| } else if (COMPARE_5CHARS(code + 1, 'u', 'b', 'l', 'i', 'c')) { |
| if (!isIdentPartIncludingEscape(code+6, m_codeEnd)) { |
| internalShift<6>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->publicKeyword; |
| return RESERVED_IF_STRICT; |
| } |
| } else if (COMPARE_6CHARS(code + 1, 'a', 'c', 'k', 'a', 'g', 'e')) { |
| if (!isIdentPartIncludingEscape(code+7, m_codeEnd)) { |
| internalShift<7>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->packageKeyword; |
| return RESERVED_IF_STRICT; |
| } |
| } |
| } else if (code[0] == 's') { |
| if (COMPARE_5CHARS(code + 1, 'w', 'i', 't', 'c', 'h')) { |
| if (!isIdentPartIncludingEscape(code+6, m_codeEnd)) { |
| internalShift<6>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->switchKeyword; |
| return SWITCH; |
| } |
| } else if (COMPARE_5CHARS(code + 1, 't', 'a', 't', 'i', 'c')) { |
| if (!isIdentPartIncludingEscape(code+6, m_codeEnd)) { |
| internalShift<6>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->staticKeyword; |
| return RESERVED_IF_STRICT; |
| } |
| } else if (COMPARE_4CHARS(code + 1, 'u', 'p', 'e', 'r')) { |
| if (!isIdentPartIncludingEscape(code+5, m_codeEnd)) { |
| internalShift<5>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->superKeyword; |
| return SUPER; |
| } |
| } |
| } else if (COMPARE_3CHARS(code, 'l', 'e', 't')) { |
| if (!isIdentPartIncludingEscape(code+3, m_codeEnd)) { |
| internalShift<3>(); |
| if (shouldCreateIdentifier) |
| data->ident = &m_vm->propertyNames->letKeyword; |
| return LET; |
| } |
| } |
| return IDENT; |
| } |
| |
| } // namespace JSC |