| /* |
| * Permission is hereby granted, free of charge, to any person obtaining a copy of |
| * this software and associated documentation files (the "Software"), to deal in |
| * the Software without restriction, including without limitation the rights to |
| * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies |
| * of the Software, and to permit persons to whom the Software is furnished to do |
| * so, subject to the following conditions: |
| * |
| * The above copyright notice and this permission notice shall be included in all |
| * copies or substantial portions of the Software. |
| * |
| * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
| * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
| * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
| * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
| * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
| * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
| * SOFTWARE. |
| */ |
| package jdk.nashorn.internal.runtime.regexp.joni; |
| |
| final class StackEntry { |
| int type; |
| private int E1, E2, E3, E4; |
| |
| // first union member |
| /* byte code position */ |
| void setStatePCode(final int pcode) { |
| E1 = pcode; |
| } |
| int getStatePCode() { |
| return E1; |
| } |
| /* string position */ |
| void setStatePStr(final int pstr) { |
| E2 = pstr; |
| } |
| int getStatePStr() { |
| return E2; |
| } |
| /* previous char position of pstr */ |
| void setStatePStrPrev(final int pstrPrev) { |
| E3 = pstrPrev; |
| } |
| int getStatePStrPrev() { |
| return E3; |
| } |
| |
| void setStateCheck(final int check) { |
| E4 = check; |
| } |
| int getStateCheck() { |
| return E4; |
| } |
| |
| // second union member |
| /* for OP_REPEAT_INC, OP_REPEAT_INC_NG */ |
| void setRepeatCount(final int count) { |
| E1 = count; |
| } |
| int getRepeatCount() { |
| return E1; |
| } |
| void decreaseRepeatCount() { |
| E1--; |
| } |
| void increaseRepeatCount() { |
| E1++; |
| } |
| /* byte code position (head of repeated target) */ |
| void setRepeatPCode(final int pcode) { |
| E2 = pcode; |
| } |
| int getRepeatPCode() { |
| return E2; |
| } |
| /* repeat id */ |
| void setRepeatNum(final int num) { |
| E3 = num; |
| } |
| int getRepeatNum() { |
| return E3; |
| } |
| |
| // third union member |
| /* index of stack */ /*int repeat_inc struct*/ |
| void setSi(final int si) { |
| E1 = si; |
| } |
| int getSi() { |
| return E1; |
| } |
| |
| // fourth union member |
| /* memory num */ |
| void setMemNum(final int num) { |
| E1 = num; |
| } |
| int getMemNum() { |
| return E1; |
| } |
| /* start/end position */ |
| void setMemPstr(final int pstr) { |
| E2 = pstr; |
| } |
| int getMemPStr() { |
| return E2; |
| } |
| |
| /* Following information is set, if this stack type is MEM-START */ |
| /* prev. info (for backtrack "(...)*" ) */ |
| void setMemStart(final int start) { |
| E3 = start; |
| } |
| int getMemStart() { |
| return E3; |
| } |
| /* prev. info (for backtrack "(...)*" ) */ |
| void setMemEnd(final int end) { |
| E4 = end; |
| } |
| int getMemEnd() { |
| return E4; |
| } |
| |
| // fifth union member |
| /* null check id */ |
| void setNullCheckNum(final int num) { |
| E1 = num; |
| } |
| int getNullCheckNum() { |
| return E1; |
| } |
| /* start position */ |
| void setNullCheckPStr(final int pstr) { |
| E2 = pstr; |
| } |
| int getNullCheckPStr() { |
| return E2; |
| } |
| |
| // sixth union member |
| /* byte code position */ |
| void setCallFrameRetAddr(final int addr) { |
| E1 = addr; |
| } |
| int getCallFrameRetAddr() { |
| return E1; |
| } |
| /* null check id */ |
| void setCallFrameNum(final int num) { |
| E2 = num; |
| } |
| int getCallFrameNum() { |
| return E2; |
| } |
| /* string position */ |
| void setCallFramePStr(final int pstr) { |
| E3 = pstr; |
| } |
| int getCallFramePStr() { |
| return E3; |
| } |
| } |