protected final StackEntry pop() { switch (regex.stackPopLevel) { case StackPopLevel.FREE: return popFree(); case StackPopLevel.MEM_START: return popMemStart(); default: return popDefault(); } }
@SuppressWarnings("unused") protected final void compile() { if (Config.DEBUG) { Config.log.println(new String(chars, getBegin(), getEnd())); } reset(); regex.numMem = 0; regex.numRepeat = 0; regex.numNullCheck = 0; //regex.repeatRangeAlloc = 0; regex.repeatRangeLo = null; regex.repeatRangeHi = null; parse(); if (Config.DEBUG_PARSE_TREE_RAW && Config.DEBUG_PARSE_TREE) { Config.log.println("<RAW TREE>"); Config.log.println(root + "\n"); } root = setupTree(root, 0); if (Config.DEBUG_PARSE_TREE) { if (Config.DEBUG_PARSE_TREE_RAW) { Config.log.println("<TREE>"); } root.verifyTree(new HashSet<Node>(), env.reg.warnings); Config.log.println(root + "\n"); } regex.captureHistory = env.captureHistory; regex.btMemStart = env.btMemStart; regex.btMemEnd = env.btMemEnd; if (isFindCondition(regex.options)) { regex.btMemEnd = bsAll(); } else { regex.btMemEnd = env.btMemEnd; regex.btMemEnd |= regex.captureHistory; } regex.clearOptimizeInfo(); if (!Config.DONT_OPTIMIZE) { setOptimizedInfoFromTree(root); } env.memNodes = null; if (regex.numRepeat != 0 || regex.btMemEnd != 0) { regex.stackPopLevel = StackPopLevel.ALL; } else { if (regex.btMemStart != 0) { regex.stackPopLevel = StackPopLevel.MEM_START; } else { regex.stackPopLevel = StackPopLevel.FREE; } } if (Config.DEBUG_COMPILE) { Config.log.println("stack used: " + regex.stackNeeded); if (Config.USE_STRING_TEMPLATES) { Config.log.print("templates: " + regex.templateNum + "\n"); } Config.log.println(new ByteCodePrinter(regex).byteCodeListToString()); } // DEBUG_COMPILE }
@SuppressWarnings("unused") protected final void compile() { if (Config.DEBUG) { Config.log.println(new String(chars, getBegin(), getEnd())); } reset(); regex.numMem = 0; regex.numRepeat = 0; regex.numNullCheck = 0; //regex.repeatRangeAlloc = 0; regex.repeatRangeLo = null; regex.repeatRangeHi = null; parse(); if (Config.DEBUG_PARSE_TREE_RAW && Config.DEBUG_PARSE_TREE) { Config.log.println("<RAW TREE>"); Config.log.println(root + "\n"); } root = setupTree(root, 0); if (Config.DEBUG_PARSE_TREE) { if (Config.DEBUG_PARSE_TREE_RAW) { Config.log.println("<TREE>"); } root.verifyTree(new HashSet<Node>(), env.reg.warnings); Config.log.println(root + "\n"); } regex.captureHistory = env.captureHistory; regex.btMemStart = env.btMemStart; regex.btMemEnd = env.btMemEnd; if (isFindCondition(regex.options)) { regex.btMemEnd = bsAll(); } else { regex.btMemEnd = env.btMemEnd; regex.btMemEnd |= regex.captureHistory; } regex.clearOptimizeInfo(); if (!Config.DONT_OPTIMIZE) { setOptimizedInfoFromTree(root); } env.memNodes = null; new ArrayCompiler(this).compile(); if (regex.numRepeat != 0 || regex.btMemEnd != 0) { regex.stackPopLevel = StackPopLevel.ALL; } else { if (regex.btMemStart != 0) { regex.stackPopLevel = StackPopLevel.MEM_START; } else { regex.stackPopLevel = StackPopLevel.FREE; } } if (Config.DEBUG_COMPILE) { Config.log.println("stack used: " + regex.stackNeeded); if (Config.USE_STRING_TEMPLATES) { Config.log.print("templates: " + regex.templateNum + "\n"); } Config.log.println(new ByteCodePrinter(regex).byteCodeListToString()); } // DEBUG_COMPILE }
protected final void compile() { if (Config.DEBUG) { Config.log.println(new String(chars, getBegin(), getEnd())); } reset(); regex.numMem = 0; regex.numRepeat = 0; regex.numNullCheck = 0; //regex.repeatRangeAlloc = 0; regex.repeatRangeLo = null; regex.repeatRangeHi = null; parse(); if (Config.DEBUG_PARSE_TREE_RAW && Config.DEBUG_PARSE_TREE) { Config.log.println("<RAW TREE>"); Config.log.println(root + "\n"); } root = setupTree(root, 0); if (Config.DEBUG_PARSE_TREE) { if (Config.DEBUG_PARSE_TREE_RAW) Config.log.println("<TREE>"); root.verifyTree(new HashSet<Node>(), env.reg.warnings); Config.log.println(root + "\n"); } regex.captureHistory = env.captureHistory; regex.btMemStart = env.btMemStart; regex.btMemEnd = env.btMemEnd; if (isFindCondition(regex.options)) { regex.btMemEnd = bsAll(); } else { regex.btMemEnd = env.btMemEnd; regex.btMemEnd |= regex.captureHistory; } regex.clearOptimizeInfo(); if (!Config.DONT_OPTIMIZE) setOptimizedInfoFromTree(root); env.memNodes = null; if (regex.numRepeat != 0 || regex.btMemEnd != 0) { regex.stackPopLevel = StackPopLevel.ALL; } else { if (regex.btMemStart != 0) { regex.stackPopLevel = StackPopLevel.MEM_START; } else { regex.stackPopLevel = StackPopLevel.FREE; } } if (Config.DEBUG_COMPILE) { Config.log.println("stack used: " + regex.stackNeeded); if (Config.USE_STRING_TEMPLATES) Config.log.print("templates: " + regex.templateNum + "\n"); Config.log.println(new ByteCodePrinter(regex).byteCodeListToString()); } // DEBUG_COMPILE }