jaxp/src/com/sun/org/apache/xalan/internal/xsltc/compiler/Text.java
author joehw
Thu, 12 Apr 2012 08:38:26 -0700
changeset 12457 c348e06f0e82
parent 6 jaxp/src/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/Text.java@7f561c08de6b
permissions -rw-r--r--
7160496: Rename JDK8 JAXP source directory Summary: moving src/share/classes to src Reviewed-by: ohair
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
6
7f561c08de6b Initial load
duke
parents:
diff changeset
     1
/*
7f561c08de6b Initial load
duke
parents:
diff changeset
     2
 * reserved comment block
7f561c08de6b Initial load
duke
parents:
diff changeset
     3
 * DO NOT REMOVE OR ALTER!
7f561c08de6b Initial load
duke
parents:
diff changeset
     4
 */
7f561c08de6b Initial load
duke
parents:
diff changeset
     5
/*
7f561c08de6b Initial load
duke
parents:
diff changeset
     6
 * Copyright 2001-2004 The Apache Software Foundation.
7f561c08de6b Initial load
duke
parents:
diff changeset
     7
 *
7f561c08de6b Initial load
duke
parents:
diff changeset
     8
 * Licensed under the Apache License, Version 2.0 (the "License");
7f561c08de6b Initial load
duke
parents:
diff changeset
     9
 * you may not use this file except in compliance with the License.
7f561c08de6b Initial load
duke
parents:
diff changeset
    10
 * You may obtain a copy of the License at
7f561c08de6b Initial load
duke
parents:
diff changeset
    11
 *
7f561c08de6b Initial load
duke
parents:
diff changeset
    12
 *     http://www.apache.org/licenses/LICENSE-2.0
7f561c08de6b Initial load
duke
parents:
diff changeset
    13
 *
7f561c08de6b Initial load
duke
parents:
diff changeset
    14
 * Unless required by applicable law or agreed to in writing, software
7f561c08de6b Initial load
duke
parents:
diff changeset
    15
 * distributed under the License is distributed on an "AS IS" BASIS,
7f561c08de6b Initial load
duke
parents:
diff changeset
    16
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
7f561c08de6b Initial load
duke
parents:
diff changeset
    17
 * See the License for the specific language governing permissions and
7f561c08de6b Initial load
duke
parents:
diff changeset
    18
 * limitations under the License.
7f561c08de6b Initial load
duke
parents:
diff changeset
    19
 */
7f561c08de6b Initial load
duke
parents:
diff changeset
    20
/*
7f561c08de6b Initial load
duke
parents:
diff changeset
    21
 * $Id: Text.java,v 1.2.4.1 2005/09/12 11:33:09 pvedula Exp $
7f561c08de6b Initial load
duke
parents:
diff changeset
    22
 */
7f561c08de6b Initial load
duke
parents:
diff changeset
    23
7f561c08de6b Initial load
duke
parents:
diff changeset
    24
package com.sun.org.apache.xalan.internal.xsltc.compiler;
7f561c08de6b Initial load
duke
parents:
diff changeset
    25
7f561c08de6b Initial load
duke
parents:
diff changeset
    26
import com.sun.org.apache.bcel.internal.generic.ConstantPoolGen;
7f561c08de6b Initial load
duke
parents:
diff changeset
    27
import com.sun.org.apache.bcel.internal.generic.GETSTATIC;
7f561c08de6b Initial load
duke
parents:
diff changeset
    28
import com.sun.org.apache.bcel.internal.generic.INVOKEINTERFACE;
7f561c08de6b Initial load
duke
parents:
diff changeset
    29
import com.sun.org.apache.bcel.internal.generic.InstructionList;
7f561c08de6b Initial load
duke
parents:
diff changeset
    30
import com.sun.org.apache.bcel.internal.generic.PUSH;
7f561c08de6b Initial load
duke
parents:
diff changeset
    31
import com.sun.org.apache.xalan.internal.xsltc.compiler.util.ClassGenerator;
7f561c08de6b Initial load
duke
parents:
diff changeset
    32
import com.sun.org.apache.xalan.internal.xsltc.compiler.util.MethodGenerator;
7f561c08de6b Initial load
duke
parents:
diff changeset
    33
import com.sun.org.apache.xalan.internal.xsltc.compiler.util.Util;
7f561c08de6b Initial load
duke
parents:
diff changeset
    34
7f561c08de6b Initial load
duke
parents:
diff changeset
    35
/**
7f561c08de6b Initial load
duke
parents:
diff changeset
    36
 * @author Jacek Ambroziak
7f561c08de6b Initial load
duke
parents:
diff changeset
    37
 * @author Santiago Pericas-Geertsen
7f561c08de6b Initial load
duke
parents:
diff changeset
    38
 * @author Morten Jorgensen
7f561c08de6b Initial load
duke
parents:
diff changeset
    39
 */
7f561c08de6b Initial load
duke
parents:
diff changeset
    40
final class Text extends Instruction {
7f561c08de6b Initial load
duke
parents:
diff changeset
    41
7f561c08de6b Initial load
duke
parents:
diff changeset
    42
    private String _text;
7f561c08de6b Initial load
duke
parents:
diff changeset
    43
    private boolean _escaping = true;
7f561c08de6b Initial load
duke
parents:
diff changeset
    44
    private boolean _ignore = false;
7f561c08de6b Initial load
duke
parents:
diff changeset
    45
    private boolean _textElement = false;
7f561c08de6b Initial load
duke
parents:
diff changeset
    46
7f561c08de6b Initial load
duke
parents:
diff changeset
    47
    /**
7f561c08de6b Initial load
duke
parents:
diff changeset
    48
     * Create a blank Text syntax tree node.
7f561c08de6b Initial load
duke
parents:
diff changeset
    49
     */
7f561c08de6b Initial load
duke
parents:
diff changeset
    50
    public Text() {
7f561c08de6b Initial load
duke
parents:
diff changeset
    51
        _textElement = true;
7f561c08de6b Initial load
duke
parents:
diff changeset
    52
    }
7f561c08de6b Initial load
duke
parents:
diff changeset
    53
7f561c08de6b Initial load
duke
parents:
diff changeset
    54
    /**
7f561c08de6b Initial load
duke
parents:
diff changeset
    55
     * Create text syntax tree node.
7f561c08de6b Initial load
duke
parents:
diff changeset
    56
     * @param text is the text to put in the node.
7f561c08de6b Initial load
duke
parents:
diff changeset
    57
     */
7f561c08de6b Initial load
duke
parents:
diff changeset
    58
    public Text(String text) {
7f561c08de6b Initial load
duke
parents:
diff changeset
    59
        _text = text;
7f561c08de6b Initial load
duke
parents:
diff changeset
    60
    }
7f561c08de6b Initial load
duke
parents:
diff changeset
    61
7f561c08de6b Initial load
duke
parents:
diff changeset
    62
    /**
7f561c08de6b Initial load
duke
parents:
diff changeset
    63
     * Returns the text wrapped inside this node
7f561c08de6b Initial load
duke
parents:
diff changeset
    64
     * @return The text wrapped inside this node
7f561c08de6b Initial load
duke
parents:
diff changeset
    65
     */
7f561c08de6b Initial load
duke
parents:
diff changeset
    66
    protected String getText() {
7f561c08de6b Initial load
duke
parents:
diff changeset
    67
        return _text;
7f561c08de6b Initial load
duke
parents:
diff changeset
    68
    }
7f561c08de6b Initial load
duke
parents:
diff changeset
    69
7f561c08de6b Initial load
duke
parents:
diff changeset
    70
    /**
7f561c08de6b Initial load
duke
parents:
diff changeset
    71
     * Set the text for this node. Appends the given text to any already
7f561c08de6b Initial load
duke
parents:
diff changeset
    72
     * existing text (using string concatenation, so use only when needed).
7f561c08de6b Initial load
duke
parents:
diff changeset
    73
     * @param text is the text to wrap inside this node.
7f561c08de6b Initial load
duke
parents:
diff changeset
    74
     */
7f561c08de6b Initial load
duke
parents:
diff changeset
    75
    protected void setText(String text) {
7f561c08de6b Initial load
duke
parents:
diff changeset
    76
        if (_text == null)
7f561c08de6b Initial load
duke
parents:
diff changeset
    77
            _text = text;
7f561c08de6b Initial load
duke
parents:
diff changeset
    78
        else
7f561c08de6b Initial load
duke
parents:
diff changeset
    79
            _text = _text + text;
7f561c08de6b Initial load
duke
parents:
diff changeset
    80
    }
7f561c08de6b Initial load
duke
parents:
diff changeset
    81
7f561c08de6b Initial load
duke
parents:
diff changeset
    82
    public void display(int indent) {
7f561c08de6b Initial load
duke
parents:
diff changeset
    83
        indent(indent);
7f561c08de6b Initial load
duke
parents:
diff changeset
    84
        Util.println("Text");
7f561c08de6b Initial load
duke
parents:
diff changeset
    85
        indent(indent + IndentIncrement);
7f561c08de6b Initial load
duke
parents:
diff changeset
    86
        Util.println(_text);
7f561c08de6b Initial load
duke
parents:
diff changeset
    87
    }
7f561c08de6b Initial load
duke
parents:
diff changeset
    88
7f561c08de6b Initial load
duke
parents:
diff changeset
    89
    public void parseContents(Parser parser) {
7f561c08de6b Initial load
duke
parents:
diff changeset
    90
        final String str = getAttribute("disable-output-escaping");
7f561c08de6b Initial load
duke
parents:
diff changeset
    91
        if ((str != null) && (str.equals("yes"))) _escaping = false;
7f561c08de6b Initial load
duke
parents:
diff changeset
    92
7f561c08de6b Initial load
duke
parents:
diff changeset
    93
        parseChildren(parser);
7f561c08de6b Initial load
duke
parents:
diff changeset
    94
7f561c08de6b Initial load
duke
parents:
diff changeset
    95
        if (_text == null) {
7f561c08de6b Initial load
duke
parents:
diff changeset
    96
            if (_textElement) {
7f561c08de6b Initial load
duke
parents:
diff changeset
    97
                _text = EMPTYSTRING;
7f561c08de6b Initial load
duke
parents:
diff changeset
    98
            }
7f561c08de6b Initial load
duke
parents:
diff changeset
    99
            else {
7f561c08de6b Initial load
duke
parents:
diff changeset
   100
                _ignore = true;
7f561c08de6b Initial load
duke
parents:
diff changeset
   101
            }
7f561c08de6b Initial load
duke
parents:
diff changeset
   102
        }
7f561c08de6b Initial load
duke
parents:
diff changeset
   103
        else if (_textElement) {
7f561c08de6b Initial load
duke
parents:
diff changeset
   104
            if (_text.length() == 0) _ignore = true;
7f561c08de6b Initial load
duke
parents:
diff changeset
   105
        }
7f561c08de6b Initial load
duke
parents:
diff changeset
   106
        else if (getParent() instanceof LiteralElement) {
7f561c08de6b Initial load
duke
parents:
diff changeset
   107
            LiteralElement element = (LiteralElement)getParent();
7f561c08de6b Initial load
duke
parents:
diff changeset
   108
            String space = element.getAttribute("xml:space");
7f561c08de6b Initial load
duke
parents:
diff changeset
   109
            if ((space == null) || (!space.equals("preserve")))
7f561c08de6b Initial load
duke
parents:
diff changeset
   110
        {
7f561c08de6b Initial load
duke
parents:
diff changeset
   111
            int i;
7f561c08de6b Initial load
duke
parents:
diff changeset
   112
            final int textLength = _text.length();
7f561c08de6b Initial load
duke
parents:
diff changeset
   113
            for (i = 0; i < textLength; i++) {
7f561c08de6b Initial load
duke
parents:
diff changeset
   114
                char c = _text.charAt(i);
7f561c08de6b Initial load
duke
parents:
diff changeset
   115
                if (!isWhitespace(c))
7f561c08de6b Initial load
duke
parents:
diff changeset
   116
                    break;
7f561c08de6b Initial load
duke
parents:
diff changeset
   117
            }
7f561c08de6b Initial load
duke
parents:
diff changeset
   118
            if (i == textLength)
7f561c08de6b Initial load
duke
parents:
diff changeset
   119
                _ignore = true;
7f561c08de6b Initial load
duke
parents:
diff changeset
   120
        }
7f561c08de6b Initial load
duke
parents:
diff changeset
   121
        }
7f561c08de6b Initial load
duke
parents:
diff changeset
   122
        else {
7f561c08de6b Initial load
duke
parents:
diff changeset
   123
        int i;
7f561c08de6b Initial load
duke
parents:
diff changeset
   124
        final int textLength = _text.length();
7f561c08de6b Initial load
duke
parents:
diff changeset
   125
        for (i = 0; i < textLength; i++)
7f561c08de6b Initial load
duke
parents:
diff changeset
   126
        {
7f561c08de6b Initial load
duke
parents:
diff changeset
   127
            char c = _text.charAt(i);
7f561c08de6b Initial load
duke
parents:
diff changeset
   128
            if (!isWhitespace(c))
7f561c08de6b Initial load
duke
parents:
diff changeset
   129
                break;
7f561c08de6b Initial load
duke
parents:
diff changeset
   130
        }
7f561c08de6b Initial load
duke
parents:
diff changeset
   131
        if (i == textLength)
7f561c08de6b Initial load
duke
parents:
diff changeset
   132
            _ignore = true;
7f561c08de6b Initial load
duke
parents:
diff changeset
   133
        }
7f561c08de6b Initial load
duke
parents:
diff changeset
   134
    }
7f561c08de6b Initial load
duke
parents:
diff changeset
   135
7f561c08de6b Initial load
duke
parents:
diff changeset
   136
    public void ignore() {
7f561c08de6b Initial load
duke
parents:
diff changeset
   137
        _ignore = true;
7f561c08de6b Initial load
duke
parents:
diff changeset
   138
    }
7f561c08de6b Initial load
duke
parents:
diff changeset
   139
7f561c08de6b Initial load
duke
parents:
diff changeset
   140
    public boolean isIgnore() {
7f561c08de6b Initial load
duke
parents:
diff changeset
   141
        return _ignore;
7f561c08de6b Initial load
duke
parents:
diff changeset
   142
    }
7f561c08de6b Initial load
duke
parents:
diff changeset
   143
7f561c08de6b Initial load
duke
parents:
diff changeset
   144
    public boolean isTextElement() {
7f561c08de6b Initial load
duke
parents:
diff changeset
   145
        return _textElement;
7f561c08de6b Initial load
duke
parents:
diff changeset
   146
    }
7f561c08de6b Initial load
duke
parents:
diff changeset
   147
7f561c08de6b Initial load
duke
parents:
diff changeset
   148
    protected boolean contextDependent() {
7f561c08de6b Initial load
duke
parents:
diff changeset
   149
        return false;
7f561c08de6b Initial load
duke
parents:
diff changeset
   150
    }
7f561c08de6b Initial load
duke
parents:
diff changeset
   151
7f561c08de6b Initial load
duke
parents:
diff changeset
   152
    private static boolean isWhitespace(char c)
7f561c08de6b Initial load
duke
parents:
diff changeset
   153
    {
7f561c08de6b Initial load
duke
parents:
diff changeset
   154
        return (c == 0x20 || c == 0x09 || c == 0x0A || c == 0x0D);
7f561c08de6b Initial load
duke
parents:
diff changeset
   155
    }
7f561c08de6b Initial load
duke
parents:
diff changeset
   156
7f561c08de6b Initial load
duke
parents:
diff changeset
   157
    public void translate(ClassGenerator classGen, MethodGenerator methodGen) {
7f561c08de6b Initial load
duke
parents:
diff changeset
   158
        final ConstantPoolGen cpg = classGen.getConstantPool();
7f561c08de6b Initial load
duke
parents:
diff changeset
   159
        final InstructionList il = methodGen.getInstructionList();
7f561c08de6b Initial load
duke
parents:
diff changeset
   160
7f561c08de6b Initial load
duke
parents:
diff changeset
   161
        if (!_ignore) {
7f561c08de6b Initial load
duke
parents:
diff changeset
   162
            // Turn off character escaping if so is wanted.
7f561c08de6b Initial load
duke
parents:
diff changeset
   163
            final int esc = cpg.addInterfaceMethodref(OUTPUT_HANDLER,
7f561c08de6b Initial load
duke
parents:
diff changeset
   164
                                                      "setEscaping", "(Z)Z");
7f561c08de6b Initial load
duke
parents:
diff changeset
   165
            if (!_escaping) {
7f561c08de6b Initial load
duke
parents:
diff changeset
   166
                il.append(methodGen.loadHandler());
7f561c08de6b Initial load
duke
parents:
diff changeset
   167
                il.append(new PUSH(cpg, false));
7f561c08de6b Initial load
duke
parents:
diff changeset
   168
                il.append(new INVOKEINTERFACE(esc, 2));
7f561c08de6b Initial load
duke
parents:
diff changeset
   169
            }
7f561c08de6b Initial load
duke
parents:
diff changeset
   170
7f561c08de6b Initial load
duke
parents:
diff changeset
   171
            il.append(methodGen.loadHandler());
7f561c08de6b Initial load
duke
parents:
diff changeset
   172
7f561c08de6b Initial load
duke
parents:
diff changeset
   173
            // Call characters(String) or characters(char[],int,int), as
7f561c08de6b Initial load
duke
parents:
diff changeset
   174
            // appropriate.
7f561c08de6b Initial load
duke
parents:
diff changeset
   175
            if (!canLoadAsArrayOffsetLength()) {
7f561c08de6b Initial load
duke
parents:
diff changeset
   176
                final int characters = cpg.addInterfaceMethodref(OUTPUT_HANDLER,
7f561c08de6b Initial load
duke
parents:
diff changeset
   177
                                                           "characters",
7f561c08de6b Initial load
duke
parents:
diff changeset
   178
                                                           "("+STRING_SIG+")V");
7f561c08de6b Initial load
duke
parents:
diff changeset
   179
                il.append(new PUSH(cpg, _text));
7f561c08de6b Initial load
duke
parents:
diff changeset
   180
                il.append(new INVOKEINTERFACE(characters, 2));
7f561c08de6b Initial load
duke
parents:
diff changeset
   181
            } else {
7f561c08de6b Initial load
duke
parents:
diff changeset
   182
                final int characters = cpg.addInterfaceMethodref(OUTPUT_HANDLER,
7f561c08de6b Initial load
duke
parents:
diff changeset
   183
                                                                 "characters",
7f561c08de6b Initial load
duke
parents:
diff changeset
   184
                                                                 "([CII)V");
7f561c08de6b Initial load
duke
parents:
diff changeset
   185
                loadAsArrayOffsetLength(classGen, methodGen);
7f561c08de6b Initial load
duke
parents:
diff changeset
   186
                il.append(new INVOKEINTERFACE(characters, 4));
7f561c08de6b Initial load
duke
parents:
diff changeset
   187
            }
7f561c08de6b Initial load
duke
parents:
diff changeset
   188
7f561c08de6b Initial load
duke
parents:
diff changeset
   189
            // Restore character escaping setting to whatever it was.
7f561c08de6b Initial load
duke
parents:
diff changeset
   190
            // Note: setEscaping(bool) returns the original (old) value
7f561c08de6b Initial load
duke
parents:
diff changeset
   191
            if (!_escaping) {
7f561c08de6b Initial load
duke
parents:
diff changeset
   192
                il.append(methodGen.loadHandler());
7f561c08de6b Initial load
duke
parents:
diff changeset
   193
                il.append(SWAP);
7f561c08de6b Initial load
duke
parents:
diff changeset
   194
                il.append(new INVOKEINTERFACE(esc, 2));
7f561c08de6b Initial load
duke
parents:
diff changeset
   195
                il.append(POP);
7f561c08de6b Initial load
duke
parents:
diff changeset
   196
            }
7f561c08de6b Initial load
duke
parents:
diff changeset
   197
        }
7f561c08de6b Initial load
duke
parents:
diff changeset
   198
        translateContents(classGen, methodGen);
7f561c08de6b Initial load
duke
parents:
diff changeset
   199
    }
7f561c08de6b Initial load
duke
parents:
diff changeset
   200
7f561c08de6b Initial load
duke
parents:
diff changeset
   201
    /**
7f561c08de6b Initial load
duke
parents:
diff changeset
   202
     * Check whether this Text node can be stored in a char[] in the translet.
7f561c08de6b Initial load
duke
parents:
diff changeset
   203
     * Calling this is precondition to calling loadAsArrayOffsetLength.
7f561c08de6b Initial load
duke
parents:
diff changeset
   204
     * @see #loadAsArrayOffsetLength(ClassGenerator,MethodGenerator)
7f561c08de6b Initial load
duke
parents:
diff changeset
   205
     * @return true if this Text node can be
7f561c08de6b Initial load
duke
parents:
diff changeset
   206
     */
7f561c08de6b Initial load
duke
parents:
diff changeset
   207
    public boolean canLoadAsArrayOffsetLength() {
7f561c08de6b Initial load
duke
parents:
diff changeset
   208
        // Magic number!  21845*3 == 65535.  BCEL uses a DataOutputStream to
7f561c08de6b Initial load
duke
parents:
diff changeset
   209
        // serialize class files.  The Java run-time places a limit on the size
7f561c08de6b Initial load
duke
parents:
diff changeset
   210
        // of String data written using a DataOutputStream - it cannot require
7f561c08de6b Initial load
duke
parents:
diff changeset
   211
        // more than 64KB when represented as UTF-8.  The number of bytes
7f561c08de6b Initial load
duke
parents:
diff changeset
   212
        // required to represent a Java string as UTF-8 cannot be greater
7f561c08de6b Initial load
duke
parents:
diff changeset
   213
        // than three times the number of char's in the string, hence the
7f561c08de6b Initial load
duke
parents:
diff changeset
   214
        // check for 21845.
7f561c08de6b Initial load
duke
parents:
diff changeset
   215
7f561c08de6b Initial load
duke
parents:
diff changeset
   216
        return (_text.length() <= 21845);
7f561c08de6b Initial load
duke
parents:
diff changeset
   217
    }
7f561c08de6b Initial load
duke
parents:
diff changeset
   218
7f561c08de6b Initial load
duke
parents:
diff changeset
   219
    /**
7f561c08de6b Initial load
duke
parents:
diff changeset
   220
     * Generates code that loads the array that will contain the character
7f561c08de6b Initial load
duke
parents:
diff changeset
   221
     * data represented by this Text node, followed by the offset of the
7f561c08de6b Initial load
duke
parents:
diff changeset
   222
     * data from the start of the array, and then the length of the data.
7f561c08de6b Initial load
duke
parents:
diff changeset
   223
     *
7f561c08de6b Initial load
duke
parents:
diff changeset
   224
     * The pre-condition to calling this method is that
7f561c08de6b Initial load
duke
parents:
diff changeset
   225
     * canLoadAsArrayOffsetLength() returns true.
7f561c08de6b Initial load
duke
parents:
diff changeset
   226
     * @see #canLoadArrayOffsetLength()
7f561c08de6b Initial load
duke
parents:
diff changeset
   227
     */
7f561c08de6b Initial load
duke
parents:
diff changeset
   228
    public void loadAsArrayOffsetLength(ClassGenerator classGen,
7f561c08de6b Initial load
duke
parents:
diff changeset
   229
                                        MethodGenerator methodGen) {
7f561c08de6b Initial load
duke
parents:
diff changeset
   230
        final ConstantPoolGen cpg = classGen.getConstantPool();
7f561c08de6b Initial load
duke
parents:
diff changeset
   231
        final InstructionList il = methodGen.getInstructionList();
7f561c08de6b Initial load
duke
parents:
diff changeset
   232
        final XSLTC xsltc = classGen.getParser().getXSLTC();
7f561c08de6b Initial load
duke
parents:
diff changeset
   233
7f561c08de6b Initial load
duke
parents:
diff changeset
   234
        // The XSLTC object keeps track of character data
7f561c08de6b Initial load
duke
parents:
diff changeset
   235
        // that is to be stored in char arrays.
7f561c08de6b Initial load
duke
parents:
diff changeset
   236
        final int offset = xsltc.addCharacterData(_text);
7f561c08de6b Initial load
duke
parents:
diff changeset
   237
        final int length = _text.length();
7f561c08de6b Initial load
duke
parents:
diff changeset
   238
        String charDataFieldName =
7f561c08de6b Initial load
duke
parents:
diff changeset
   239
            STATIC_CHAR_DATA_FIELD + (xsltc.getCharacterDataCount()-1);
7f561c08de6b Initial load
duke
parents:
diff changeset
   240
7f561c08de6b Initial load
duke
parents:
diff changeset
   241
        il.append(new GETSTATIC(cpg.addFieldref(xsltc.getClassName(),
7f561c08de6b Initial load
duke
parents:
diff changeset
   242
                                       charDataFieldName,
7f561c08de6b Initial load
duke
parents:
diff changeset
   243
                                       STATIC_CHAR_DATA_FIELD_SIG)));
7f561c08de6b Initial load
duke
parents:
diff changeset
   244
        il.append(new PUSH(cpg, offset));
7f561c08de6b Initial load
duke
parents:
diff changeset
   245
        il.append(new PUSH(cpg, _text.length()));
7f561c08de6b Initial load
duke
parents:
diff changeset
   246
    }
7f561c08de6b Initial load
duke
parents:
diff changeset
   247
}