final class freemarker.core.RegexpHelper
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: freemarker.core.RegexpHelper
super_class: java.lang.Object
{
private static final freemarker.log.Logger LOG;
descriptor: Lfreemarker/log/Logger;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static volatile boolean flagWarningsEnabled;
descriptor: Z
flags: (0x004a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE
private static final int MAX_FLAG_WARNINGS_LOGGED;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 25
private static final java.lang.Object flagWarningsCntSync;
descriptor: Ljava/lang/Object;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static int flagWarningsCnt;
descriptor: I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
private static final freemarker.cache.MruCacheStorage patternCache;
descriptor: Lfreemarker/cache/MruCacheStorage;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
static final long RE_FLAG_CASE_INSENSITIVE;
descriptor: J
flags: (0x0018) ACC_STATIC, ACC_FINAL
static final long RE_FLAG_MULTILINE;
descriptor: J
flags: (0x0018) ACC_STATIC, ACC_FINAL
static final long ;
descriptor: J
flags: (0x0018) ACC_STATIC, ACC_FINAL
static final long RE_FLAG_DOTALL;
descriptor: J
flags: (0x0018) ACC_STATIC, ACC_FINAL
static final long RE_FLAG_REGEXP;
descriptor: J
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: 4294967296
static final long RE_FLAG_FIRST_ONLY;
descriptor: J
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: 8589934592
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=0, args_size=0
0: ldc "freemarker.runtime"
invokestatic freemarker.log.Logger.getLogger:(Ljava/lang/String;)Lfreemarker/log/Logger;
putstatic freemarker.core.RegexpHelper.LOG:Lfreemarker/log/Logger;
1: getstatic freemarker.core.RegexpHelper.LOG:Lfreemarker/log/Logger;
invokevirtual freemarker.log.Logger.isWarnEnabled:()Z
putstatic freemarker.core.RegexpHelper.flagWarningsEnabled:Z
2: new java.lang.Object
dup
invokespecial java.lang.Object.<init>:()V
putstatic freemarker.core.RegexpHelper.flagWarningsCntSync:Ljava/lang/Object;
3: new freemarker.cache.MruCacheStorage
dup
bipush 50
sipush 150
invokespecial freemarker.cache.MruCacheStorage.<init>:(II)V
putstatic freemarker.core.RegexpHelper.patternCache:Lfreemarker/cache/MruCacheStorage;
4: iconst_2
invokestatic freemarker.core.RegexpHelper.intFlagToLong:(I)J
putstatic freemarker.core.RegexpHelper.RE_FLAG_CASE_INSENSITIVE:J
5: bipush 8
invokestatic freemarker.core.RegexpHelper.intFlagToLong:(I)J
putstatic freemarker.core.RegexpHelper.RE_FLAG_MULTILINE:J
6: iconst_4
invokestatic freemarker.core.RegexpHelper.intFlagToLong:(I)J
putstatic freemarker.core.RegexpHelper.RE_FLAG_COMMENTS:J
7: bipush 32
invokestatic freemarker.core.RegexpHelper.intFlagToLong:(I)J
putstatic freemarker.core.RegexpHelper.RE_FLAG_DOTALL:J
8: return
LocalVariableTable:
Start End Slot Name Signature
private static long intFlagToLong(int);
descriptor: (I)J
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=1, args_size=1
start local 0 0: iload 0
i2l
ldc 65535
land
lreturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 flag I
MethodParameters:
Name Flags
flag
private void <init>();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.<init>:()V
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lfreemarker/core/RegexpHelper;
static java.util.regex.Pattern getPattern(java.lang.String, int);
descriptor: (Ljava/lang/String;I)Ljava/util/regex/Pattern;
flags: (0x0008) ACC_STATIC
Code:
stack=9, locals=5, args_size=2
start local 0 start local 1 0: new freemarker.core.RegexpHelper$PatternCacheKey
dup
aload 0
iload 1
invokespecial freemarker.core.RegexpHelper$PatternCacheKey.<init>:(Ljava/lang/String;I)V
astore 2
start local 2 1: getstatic freemarker.core.RegexpHelper.patternCache:Lfreemarker/cache/MruCacheStorage;
dup
astore 4
monitorenter
2: getstatic freemarker.core.RegexpHelper.patternCache:Lfreemarker/cache/MruCacheStorage;
aload 2
invokevirtual freemarker.cache.MruCacheStorage.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.util.regex.Pattern
astore 3
start local 3 3: aload 4
monitorexit
4: goto 7
end local 3 StackMap locals: java.lang.String int freemarker.core.RegexpHelper$PatternCacheKey top freemarker.cache.MruCacheStorage
StackMap stack: java.lang.Throwable
5: aload 4
monitorexit
6: athrow
start local 3 7: StackMap locals: java.lang.String int freemarker.core.RegexpHelper$PatternCacheKey java.util.regex.Pattern
StackMap stack:
aload 3
ifnull 9
8: aload 3
areturn
9: StackMap locals:
StackMap stack:
aload 0
iload 1
invokestatic java.util.regex.Pattern.compile:(Ljava/lang/String;I)Ljava/util/regex/Pattern;
astore 3
10: goto 15
StackMap locals:
StackMap stack: java.util.regex.PatternSyntaxException
11: astore 4
start local 4 12: new freemarker.core._TemplateModelException
dup
aload 4
iconst_2
anewarray java.lang.Object
dup
iconst_0
13: ldc "Malformed regular expression: "
aastore
dup
iconst_1
new freemarker.core._DelayedGetMessage
dup
aload 4
invokespecial freemarker.core._DelayedGetMessage.<init>:(Ljava/lang/Throwable;)V
14: aastore
invokespecial freemarker.core._TemplateModelException.<init>:(Ljava/lang/Throwable;[Ljava/lang/Object;)V
athrow
end local 4 15: StackMap locals:
StackMap stack:
getstatic freemarker.core.RegexpHelper.patternCache:Lfreemarker/cache/MruCacheStorage;
dup
astore 4
monitorenter
16: getstatic freemarker.core.RegexpHelper.patternCache:Lfreemarker/cache/MruCacheStorage;
aload 2
aload 3
invokevirtual freemarker.cache.MruCacheStorage.put:(Ljava/lang/Object;Ljava/lang/Object;)V
17: aload 4
monitorexit
18: goto 21
StackMap locals: java.lang.String int freemarker.core.RegexpHelper$PatternCacheKey java.util.regex.Pattern freemarker.cache.MruCacheStorage
StackMap stack: java.lang.Throwable
19: aload 4
monitorexit
20: athrow
21: StackMap locals:
StackMap stack:
aload 3
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 22 0 patternString Ljava/lang/String;
0 22 1 flags I
1 22 2 patternKey Lfreemarker/core/RegexpHelper$PatternCacheKey;
3 5 3 result Ljava/util/regex/Pattern;
7 22 3 result Ljava/util/regex/Pattern;
12 15 4 e Ljava/util/regex/PatternSyntaxException;
Exception table:
from to target type
2 4 5 any
5 6 5 any
9 10 11 Class java.util.regex.PatternSyntaxException
16 18 19 any
19 20 19 any
Exceptions:
throws freemarker.template.TemplateModelException
MethodParameters:
Name Flags
patternString
flags
static long parseFlagString(java.lang.String);
descriptor: (Ljava/lang/String;)J
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=5, args_size=1
start local 0 0: lconst_0
lstore 1
start local 1 1: iconst_0
istore 3
start local 3 2: goto 23
3: StackMap locals: long int
StackMap stack:
aload 0
iload 3
invokevirtual java.lang.String.charAt:(I)C
istore 4
start local 4 4: iload 4
lookupswitch { // 6
99: 9
102: 15
105: 5
109: 7
114: 13
115: 11
default: 17
}
5: StackMap locals: int
StackMap stack:
lload 1
getstatic freemarker.core.RegexpHelper.RE_FLAG_CASE_INSENSITIVE:J
lor
lstore 1
6: goto 22
7: StackMap locals:
StackMap stack:
lload 1
getstatic freemarker.core.RegexpHelper.RE_FLAG_MULTILINE:J
lor
lstore 1
8: goto 22
9: StackMap locals:
StackMap stack:
lload 1
getstatic freemarker.core.RegexpHelper.RE_FLAG_COMMENTS:J
lor
lstore 1
10: goto 22
11: StackMap locals:
StackMap stack:
lload 1
getstatic freemarker.core.RegexpHelper.RE_FLAG_DOTALL:J
lor
lstore 1
12: goto 22
13: StackMap locals:
StackMap stack:
lload 1
ldc 4294967296
lor
lstore 1
14: goto 22
15: StackMap locals:
StackMap stack:
lload 1
ldc 8589934592
lor
lstore 1
16: goto 22
17: StackMap locals:
StackMap stack:
getstatic freemarker.core.RegexpHelper.flagWarningsEnabled:Z
ifeq 22
18: new java.lang.StringBuilder
dup
ldc "Unrecognized regular expression flag: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
19: iload 4
invokestatic java.lang.String.valueOf:(C)Ljava/lang/String;
invokestatic freemarker.template.utility.StringUtil.jQuote:(Ljava/lang/String;)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc "."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
20: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
21: invokestatic freemarker.core.RegexpHelper.logFlagWarning:(Ljava/lang/String;)V
end local 4 22: StackMap locals:
StackMap stack:
iinc 3 1
StackMap locals:
StackMap stack:
23: iload 3
aload 0
invokevirtual java.lang.String.length:()I
if_icmplt 3
end local 3 24: lload 1
lreturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 25 0 flagString Ljava/lang/String;
1 25 1 flags J
2 24 3 i I
4 22 4 c C
MethodParameters:
Name Flags
flagString
static void logFlagWarning(java.lang.String);
descriptor: (Ljava/lang/String;)V
flags: (0x0008) ACC_STATIC
Code:
stack=3, locals=3, args_size=1
start local 0 0: getstatic freemarker.core.RegexpHelper.flagWarningsEnabled:Z
ifne 1
return
1: StackMap locals:
StackMap stack:
getstatic freemarker.core.RegexpHelper.flagWarningsCntSync:Ljava/lang/Object;
dup
astore 2
monitorenter
2: getstatic freemarker.core.RegexpHelper.flagWarningsCnt:I
istore 1
start local 1 3: iload 1
bipush 25
if_icmpge 6
4: getstatic freemarker.core.RegexpHelper.flagWarningsCnt:I
iconst_1
iadd
putstatic freemarker.core.RegexpHelper.flagWarningsCnt:I
5: goto 9
6: StackMap locals: int java.lang.Object
StackMap stack:
iconst_0
putstatic freemarker.core.RegexpHelper.flagWarningsEnabled:Z
7: aload 2
monitorexit
8: return
9: StackMap locals:
StackMap stack:
aload 2
monitorexit
10: goto 13
end local 1 StackMap locals: java.lang.String top java.lang.Object
StackMap stack: java.lang.Throwable
11: aload 2
monitorexit
12: athrow
start local 1 13: StackMap locals: java.lang.String int
StackMap stack:
new java.lang.StringBuilder
dup
aload 0
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc " This will be an error in some later FreeMarker version!"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 0
14: iload 1
iconst_1
iadd
bipush 25
if_icmpne 16
15: new java.lang.StringBuilder
dup
aload 0
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc " [Will not log more regular expression flag problems until restart!]"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 0
16: StackMap locals:
StackMap stack:
getstatic freemarker.core.RegexpHelper.LOG:Lfreemarker/log/Logger;
aload 0
invokevirtual freemarker.log.Logger.warn:(Ljava/lang/String;)V
17: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 18 0 message Ljava/lang/String;
3 11 1 cnt I
13 18 1 cnt I
Exception table:
from to target type
2 8 11 any
9 10 11 any
11 12 11 any
MethodParameters:
Name Flags
message
static void checkNonRegexpFlags(java.lang.String, long);
descriptor: (Ljava/lang/String;J)V
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=3, args_size=2
start local 0 start local 1 0: aload 0
lload 1
iconst_0
invokestatic freemarker.core.RegexpHelper.checkOnlyHasNonRegexpFlags:(Ljava/lang/String;JZ)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 biName Ljava/lang/String;
0 2 1 flags J
Exceptions:
throws freemarker.core._TemplateModelException
MethodParameters:
Name Flags
biName
flags
static void checkOnlyHasNonRegexpFlags(java.lang.String, long, boolean);
descriptor: (Ljava/lang/String;JZ)V
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=6, args_size=3
start local 0 start local 1 start local 3 0: iload 3
ifne 1
getstatic freemarker.core.RegexpHelper.flagWarningsEnabled:Z
ifne 1
return
1: StackMap locals:
StackMap stack:
lload 1
getstatic freemarker.core.RegexpHelper.RE_FLAG_MULTILINE:J
land
lconst_0
lcmp
ifeq 4
2: ldc "m"
astore 4
start local 4 3: goto 11
end local 4 StackMap locals:
StackMap stack:
4: lload 1
getstatic freemarker.core.RegexpHelper.RE_FLAG_DOTALL:J
land
lconst_0
lcmp
ifeq 7
5: ldc "s"
astore 4
start local 4 6: goto 11
end local 4 StackMap locals:
StackMap stack:
7: lload 1
getstatic freemarker.core.RegexpHelper.RE_FLAG_COMMENTS:J
land
lconst_0
lcmp
ifeq 10
8: ldc "c"
astore 4
start local 4 9: goto 11
end local 4 10: StackMap locals:
StackMap stack:
return
start local 4 11: StackMap locals: java.lang.String
StackMap stack:
iconst_5
anewarray java.lang.Object
dup
iconst_0
ldc "?"
aastore
dup
iconst_1
aload 0
aastore
dup
iconst_2
ldc " doesn't support the \""
aastore
dup
iconst_3
aload 4
aastore
dup
iconst_4
ldc "\" flag without the \"r\" flag."
aastore
astore 5
start local 5 12: iload 3
ifeq 14
13: new freemarker.core._TemplateModelException
dup
aload 5
invokespecial freemarker.core._TemplateModelException.<init>:([Ljava/lang/Object;)V
athrow
14: StackMap locals: java.lang.Object[]
StackMap stack:
new freemarker.core._ErrorDescriptionBuilder
dup
aload 5
invokespecial freemarker.core._ErrorDescriptionBuilder.<init>:([Ljava/lang/Object;)V
invokevirtual freemarker.core._ErrorDescriptionBuilder.toString:()Ljava/lang/String;
invokestatic freemarker.core.RegexpHelper.logFlagWarning:(Ljava/lang/String;)V
15: return
end local 5 end local 4 end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 biName Ljava/lang/String;
0 16 1 flags J
0 16 3 strict Z
3 4 4 flag Ljava/lang/String;
6 7 4 flag Ljava/lang/String;
9 10 4 flag Ljava/lang/String;
11 16 4 flag Ljava/lang/String;
12 16 5 msg [Ljava/lang/Object;
Exceptions:
throws freemarker.core._TemplateModelException
MethodParameters:
Name Flags
biName
flags
strict
}
SourceFile: "RegexpHelper.java"
NestMembers:
freemarker.core.RegexpHelper$PatternCacheKey
InnerClasses:
private PatternCacheKey = freemarker.core.RegexpHelper$PatternCacheKey of freemarker.core.RegexpHelper