@Override protected final void addCompileString(byte[]bytes, int p, int mbLength, int byteLength, boolean ignoreCase) { int op = selectStrOpcode(mbLength, byteLength, ignoreCase); addOpcode(op); if (op == OPCode.EXACTMBN) addLength(mbLength); if (isNeedStrLenOpExact(op)) { if (op == OPCode.EXACTN_IC || op == OPCode.EXACTN_IC_SB) { addLength(byteLength); } else { addLength(byteLength / mbLength); } } if (Config.USE_STRING_TEMPLATES && opTemplated(op)) { addInt(templateNum); addInt(p); addTemplate(bytes); } else { addBytes(bytes, p, byteLength); } }
@Override protected final void addCompileString(byte[]bytes, int p, int mbLength, int byteLength, boolean ignoreCase) { int op = selectStrOpcode(mbLength, byteLength, ignoreCase); addOpcode(op); if (op == OPCode.EXACTMBN) addLength(mbLength); if (isNeedStrLenOpExact(op)) { if (op == OPCode.EXACTN_IC || op == OPCode.EXACTN_IC_SB) { addLength(byteLength); } else { addLength(byteLength / mbLength); } } if (Config.USE_STRING_TEMPLATES && opTemplated(op)) { addInt(templateNum); addInt(p); addTemplate(bytes); } else { addBytes(bytes, p, byteLength); } }
addBytes(sn.bytes, sn.p, 1); return; } else { addOpcodeRelAddr(OPCode.PUSH_OR_JUMP_EXACT1, modTLen + OPSize.JUMP); StringNode sn = (StringNode)qn.headExact; addBytes(sn.bytes, sn.p, 1); compileTreeEmptyCheck(qn.target, emptyInfo); addOpcodeRelAddr(OPCode.JUMP, -(modTLen + OPSize.JUMP + OPSize.PUSH_OR_JUMP_EXACT1)); addOpcodeRelAddr(OPCode.PUSH_IF_PEEK_NEXT, modTLen + OPSize.JUMP); StringNode sn = (StringNode)qn.nextHeadExact; addBytes(sn.bytes, sn.p, 1); compileTreeEmptyCheck(qn.target, emptyInfo); addOpcodeRelAddr(OPCode.JUMP, -(modTLen + OPSize.JUMP + OPSize.PUSH_IF_PEEK_NEXT));
addBytes(sn.bytes, sn.p, 1); return; } else { addOpcodeRelAddr(OPCode.PUSH_OR_JUMP_EXACT1, modTLen + OPSize.JUMP); StringNode sn = (StringNode)qn.headExact; addBytes(sn.bytes, sn.p, 1); compileTreeEmptyCheck(qn.target, emptyInfo); addOpcodeRelAddr(OPCode.JUMP, -(modTLen + OPSize.JUMP + OPSize.PUSH_OR_JUMP_EXACT1)); addOpcodeRelAddr(OPCode.PUSH_IF_PEEK_NEXT, modTLen + OPSize.JUMP); StringNode sn = (StringNode)qn.nextHeadExact; addBytes(sn.bytes, sn.p, 1); compileTreeEmptyCheck(qn.target, emptyInfo); addOpcodeRelAddr(OPCode.JUMP, -(modTLen + OPSize.JUMP + OPSize.PUSH_IF_PEEK_NEXT));
addBytes(sn.bytes, sn.p, 1); return; } else {
addBytes(sn.bytes, sn.p, 1); return; } else {