aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skylarkdebug
diff options
context:
space:
mode:
authorGravatar Taras Tsugrii <ttsugrii@fb.com>2018-07-30 10:48:31 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-07-30 10:49:57 -0700
commit7dbc5e03f1ced0e3a67e42e0f182579865d26af7 (patch)
treec181d7456e951a103cccf57b301f49ee7de489ff /src/main/java/com/google/devtools/build/lib/skylarkdebug
parentf59022b9b19c0086adc9795fd8659f8bc988f747 (diff)
[Skylark] Use POJOs instead of dynamic proxies.
Java uses dynamically generated proxy classes to access annotation properties and their methods are ~7X slower than plain getters. According to async-profiler 50%+ of `convertArgumentList` method time is spent in dynamic proxy methods, so optimizing their performance makes sense. This also makes the model less anemic, since POJOs can actually provide business methods. Closes #5666. PiperOrigin-RevId: 206608812
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skylarkdebug')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skylarkdebug/server/DebuggerSerialization.java3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkdebug/server/DebuggerSerialization.java b/src/main/java/com/google/devtools/build/lib/skylarkdebug/server/DebuggerSerialization.java
index 75d7e00c8f..ba3743de85 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkdebug/server/DebuggerSerialization.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkdebug/server/DebuggerSerialization.java
@@ -24,6 +24,7 @@ import com.google.devtools.build.lib.syntax.ClassObject;
import com.google.devtools.build.lib.syntax.EvalException;
import com.google.devtools.build.lib.syntax.EvalUtils;
import com.google.devtools.build.lib.syntax.FuncallExpression;
+import com.google.devtools.build.lib.syntax.MethodDescriptor;
import com.google.devtools.build.lib.syntax.Printer;
import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
import java.lang.reflect.Array;
@@ -146,7 +147,7 @@ final class DebuggerSerialization {
}
ImmutableList.Builder<Value> children = ImmutableList.builder();
for (String fieldName : fieldNames) {
- FuncallExpression.MethodDescriptor method =
+ MethodDescriptor method =
FuncallExpression.getStructField(skylarkValue.getClass(), fieldName);
try {
children.add(