Skip to content

Commit 391075f

Browse files
committed
Makes java.util.logging.Logger optimize faster.
Patch reduces indirection on flag processing so they could get their final value sooner and static eval earlier in the optimization loop. Change-Id: I409e0211433375c0248d47458efbaab82c54f783
1 parent f1c61c0 commit 391075f

File tree

2 files changed

+48
-48
lines changed

2 files changed

+48
-48
lines changed

user/super/com/google/gwt/emul/java/util/logging/Level.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,8 @@ private static class LevelWarning extends Level {
8282
}
8383

8484
public static Level parse(String name) {
85-
Logger.assertLoggingValues();
86-
if (System.getProperty("jre.logging.logLevel").equals("OFF")) {
85+
// '==' instead of equals makes it compile out faster.
86+
if (System.getProperty("jre.logging.logLevel") == "OFF") {
8787
return null;
8888
}
8989

user/super/com/google/gwt/emul/java/util/logging/Logger.java

Lines changed: 46 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,29 @@
2727
public class Logger {
2828
public static final String GLOBAL_LOGGER_NAME = "global";
2929

30-
private static final String LOG_LEVEL = System.getProperty("jre.logging.logLevel");
31-
private static final boolean LOGGING_INFO = LOG_LEVEL.equals("INFO");
32-
private static final boolean LOGGING_WARNING = LOG_LEVEL.equals("WARNING");
33-
private static final boolean LOGGING_SEVERE = LOG_LEVEL.equals("SEVERE");
34-
private static final boolean LOGGING_OFF = LOG_LEVEL.equals("OFF");
30+
private static final boolean LOGGING_OFF;
31+
private static final boolean ALL_ENABLED;
32+
private static final boolean INFO_ENABLED;
33+
private static final boolean WARNING_ENABLED;
34+
private static final boolean SEVERE_ENABLED;
3535

3636
static {
37-
assertLoggingValues();
37+
// '==' instead of equals makes it compile out faster.
38+
39+
String level = System.getProperty("jre.logging.logLevel");
40+
if (level != "ALL"
41+
&& level != "INFO"
42+
&& level != "WARNING"
43+
&& level != "SEVERE"
44+
&& level != "OFF") {
45+
throw new AssertionError("Undefined value for jre.logging.logLevel: '" + level + "'");
46+
}
47+
48+
LOGGING_OFF = level == "OFF";
49+
ALL_ENABLED = level == "ALL";
50+
INFO_ENABLED = level == "ALL" || level == "INFO";
51+
WARNING_ENABLED = level == "ALL" || level == "INFO" || level == "WARNING";
52+
SEVERE_ENABLED = level == "ALL" || level == "INFO" || level == "WARNING" || level == "SEVERE";
3853
}
3954

4055
public static Logger getGlobal() {
@@ -44,28 +59,13 @@ public static Logger getGlobal() {
4459
public static Logger getLogger(String name) {
4560
// Use shortcut if logging is disabled to avoid parent logger creations in LogManager
4661
if (LOGGING_OFF) {
47-
return new Logger(name, null);
62+
return new Logger(null, null);
4863
}
4964
return LogManager.getLogManager().ensureLogger(name);
5065
}
5166

52-
static void assertLoggingValues() {
53-
if (LOG_LEVEL.equals("ALL")
54-
|| LOG_LEVEL.equals("INFO")
55-
|| LOG_LEVEL.equals("WARNING")
56-
|| LOG_LEVEL.equals("SEVERE")
57-
|| LOG_LEVEL.equals("OFF")) {
58-
return;
59-
}
60-
61-
throw new AssertionError(
62-
"Undefined value for jre.logging.logLevel: '"
63-
+ LOG_LEVEL
64-
+ "'. Allowed values are ALL, INFO, WARNING, SEVERE, OFF");
65-
}
66-
6767
private List<Handler> handlers;
68-
private Level level = null;
68+
private Level level;
6969
private String name;
7070
private Logger parent; // Should never be null except in the RootLogger
7171
private boolean useParentHandlers;
@@ -88,98 +88,98 @@ public void addHandler(Handler handler) {
8888
}
8989

9090
public void config(String msg) {
91-
if (LOGGING_OFF || LOGGING_SEVERE || LOGGING_WARNING || LOGGING_INFO) {
91+
if (!ALL_ENABLED) {
9292
return;
9393
}
9494
log(Level.CONFIG, msg);
9595
}
9696

9797
public void config(Supplier<String> msgSupplier) {
98-
if (LOGGING_OFF || LOGGING_SEVERE || LOGGING_WARNING || LOGGING_INFO) {
98+
if (!ALL_ENABLED) {
9999
return;
100100
}
101101
log(Level.CONFIG, msgSupplier);
102102
}
103103

104104
public void fine(String msg) {
105-
if (LOGGING_OFF || LOGGING_SEVERE || LOGGING_WARNING || LOGGING_INFO) {
105+
if (!ALL_ENABLED) {
106106
return;
107107
}
108108
log(Level.FINE, msg);
109109
}
110110

111111
public void fine(Supplier<String> msgSupplier) {
112-
if (LOGGING_OFF || LOGGING_SEVERE || LOGGING_WARNING || LOGGING_INFO) {
112+
if (!ALL_ENABLED) {
113113
return;
114114
}
115115
log(Level.FINE, msgSupplier);
116116
}
117117

118118
public void finer(String msg) {
119-
if (LOGGING_OFF || LOGGING_SEVERE || LOGGING_WARNING || LOGGING_INFO) {
119+
if (!ALL_ENABLED) {
120120
return;
121121
}
122122
log(Level.FINER, msg);
123123
}
124124

125125
public void finer(Supplier<String> msgSupplier) {
126-
if (LOGGING_OFF || LOGGING_SEVERE || LOGGING_WARNING || LOGGING_INFO) {
126+
if (!ALL_ENABLED) {
127127
return;
128128
}
129129
log(Level.FINER, msgSupplier);
130130
}
131131

132132
public void finest(String msg) {
133-
if (LOGGING_OFF || LOGGING_SEVERE || LOGGING_WARNING || LOGGING_INFO) {
133+
if (!ALL_ENABLED) {
134134
return;
135135
}
136136
log(Level.FINEST, msg);
137137
}
138138

139139
public void finest(Supplier<String> msgSupplier) {
140-
if (LOGGING_OFF || LOGGING_SEVERE || LOGGING_WARNING || LOGGING_INFO) {
140+
if (!ALL_ENABLED) {
141141
return;
142142
}
143143
log(Level.FINEST, msgSupplier);
144144
}
145145

146146
public void info(String msg) {
147-
if (LOGGING_OFF || LOGGING_SEVERE || LOGGING_WARNING) {
147+
if (!INFO_ENABLED) {
148148
return;
149149
}
150150
log(Level.INFO, msg);
151151
}
152152

153153
public void info(Supplier<String> msgSupplier) {
154-
if (LOGGING_OFF || LOGGING_SEVERE || LOGGING_WARNING) {
154+
if (!INFO_ENABLED) {
155155
return;
156156
}
157157
log(Level.INFO, msgSupplier);
158158
}
159159

160160
public void warning(String msg) {
161-
if (LOGGING_OFF || LOGGING_SEVERE) {
161+
if (!WARNING_ENABLED) {
162162
return;
163163
}
164164
log(Level.WARNING, msg);
165165
}
166166

167167
public void warning(Supplier<String> msgSupplier) {
168-
if (LOGGING_OFF || LOGGING_SEVERE) {
168+
if (!WARNING_ENABLED) {
169169
return;
170170
}
171171
log(Level.WARNING, msgSupplier);
172172
}
173173

174174
public void severe(String msg) {
175-
if (LOGGING_OFF) {
175+
if (!SEVERE_ENABLED) {
176176
return;
177177
}
178178
log(Level.SEVERE, msg);
179179
}
180180

181181
public void severe(Supplier<String> msgSupplier) {
182-
if (LOGGING_OFF) {
182+
if (!SEVERE_ENABLED) {
183183
return;
184184
}
185185
log(Level.SEVERE, msgSupplier);
@@ -210,16 +210,16 @@ public boolean getUseParentHandlers() {
210210
}
211211

212212
public boolean isLoggable(Level messageLevel) {
213-
if (LOGGING_OFF) {
214-
return false;
215-
} else if (LOGGING_SEVERE) {
216-
return messageLevel.intValue() >= Level.SEVERE.intValue();
217-
} else if (LOGGING_WARNING) {
218-
return messageLevel.intValue() >= Level.WARNING.intValue();
219-
} else if (LOGGING_INFO) {
213+
if (ALL_ENABLED) {
214+
return messageLevel.intValue() >= getEffectiveLevel().intValue();
215+
} else if (INFO_ENABLED) {
220216
return messageLevel.intValue() >= Level.INFO.intValue();
217+
} else if (WARNING_ENABLED) {
218+
return messageLevel.intValue() >= Level.WARNING.intValue();
219+
} else if (SEVERE_ENABLED) {
220+
return messageLevel.intValue() >= Level.SEVERE.intValue();
221221
} else {
222-
return messageLevel.intValue() >= getEffectiveLevel().intValue();
222+
return false;
223223
}
224224
}
225225

@@ -339,4 +339,4 @@ private void actuallyLog(LogRecord record) {
339339
// public void logrb(Level level, String sourceClass, String sourceMethod, String bundleName, String msg, Object[] params) {}
340340
// public void logrb(Level level, String sourceClass, String sourceMethod, String bundleName, String msg, Throwable thrown) {}
341341
// public void throwing(String sourceClass, String sourceMethod, Throwable thrown) {}
342-
}
342+
}

0 commit comments

Comments
 (0)