[
https://issues.apache.org/jira/browse/DRILL-5116?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15816228#comment-15816228
]
ASF GitHub Bot commented on DRILL-5116:
---------------------------------------
Github user jinfengni commented on a diff in the pull request:
https://github.com/apache/drill/pull/716#discussion_r95459877
--- Diff:
exec/java-exec/src/main/java/org/apache/drill/exec/compile/CodeCompiler.java ---
@@ -41,12 +39,87 @@
*/
public class CodeCompiler {
+ private static final org.slf4j.Logger logger =
org.slf4j.LoggerFactory.getLogger(CodeCompiler.class);
+
+ /**
+ * Abstracts out the details of compiling code using the two available
+ * mechanisms. Allows this mechanism to be unit tested separately from
+ * the code cache.
+ */
+
+ public static class CodeGenCompiler {
+ private final ClassTransformer transformer;
+ private final ClassBuilder classBuilder;
+
+ public CodeGenCompiler(final DrillConfig config, final OptionManager
optionManager) {
+ transformer = new ClassTransformer(config, optionManager);
+ classBuilder = new ClassBuilder(config, optionManager);
+ }
+
+ /**
+ * Compile the code already generated by the code generator.
+ *
+ * @param cg the code generator for the class
+ * @return the compiled class
+ * @throws Exception if anything goes wrong
+ */
+
+ public Class<?> compile(final CodeGenerator<?> cg) throws Exception {
+ if (cg.isPlainOldJava()) {
--- End diff --
Since we now have to modes for runtime code generation across almost all
Drill operators (plain-old vs bytecode transformer), is there a way to check
which mode is used for each operator in a query? It would be nice to include
such information in log, to help analyze a potential issue (whether there is a
bug in the bytecode transformer, or plain-old style class).
> Enable generated code debugging in each Drill operator
> ------------------------------------------------------
>
> Key: DRILL-5116
> URL: https://issues.apache.org/jira/browse/DRILL-5116
> Project: Apache Drill
> Issue Type: Improvement
> Affects Versions: 1.9.0
> Reporter: Paul Rogers
> Assignee: Paul Rogers
> Priority: Minor
> Labels: ready-to-commit
>
> DRILL-5052 adds the ability to debug generated code. Some of the code
> generated by Drill's operators has minor problems when compiled directly
> using the new technique. These issues are ignore by the byte-code-merge
> technique uses in production. This ticket asks to try the DRILL-5052 feature
> in each operator, clean up any minor problems, and ensure each operator
> generates code suitable for debugging. Use the new
> {{CodeGenerator.plainOldJavaCapable()}} method to mark each generated class
> as ready for "plain-old Java" code gen.
> The advantages of this feature are two:
> 1. Ability to step through the generated code to increase understanding of
> existing operators and to ease development of improvements to existing
> operators and of any new operators we choose to create.
> 2. Open the door to experimenting with how to improve performance of the
> generated code.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)