Github user kiszk commented on the issue: https://github.com/apache/spark/pull/19518 Next, I analyzed usage of constant pool entries and java bytecode ops using `janinoc`. The summary is as follows: ``` array[4] : 6 + 0 * n entries, 6-8 java bytecode ops / read access outerInstance: 3 + 3 * n entries, 5 java bytecode ops / read access innerInsntace: 9 + 3 * n entries, 6 java bytecode ops / read access ``` ``` public class CP { int[] a = new int[1000000]; int globalVar0; int globalVar1; private Inner inner = new Inner(); private class Inner { int nestedVar0; int nestedVar1; } void access() { a[4] = 0; a[5] = 0; globalVar0 = 0; globalVar1 = 0; inner.nestedVar0 = 0; inner.nestedVar1 = 0; } static public void main(String[] argv) { CP cp = new CP(); cp.access(); } } ``` Java bytecode ``` void access(); descriptor: ()V Code: stack=3, locals=1, args_size=1 0: aload_0 1: getfield #12 // Field a:[I 4: iconst_4 5: iconst_0 6: iastore 7: aload_0 8: getfield #12 // Field a:[I 11: iconst_5 12: iconst_0 13: iastore 14: aload_0 15: iconst_0 16: putfield #16 // Field globalVar0:I 19: aload_0 20: iconst_0 21: putfield #19 // Field globalVar1:I 24: aload_0 25: getfield #23 // Field inner:LCP$Inner; 28: iconst_0 29: putfield #28 // Field CP$Inner.nestedVar0:I 32: aload_0 33: getfield #23 // Field inner:LCP$Inner; 36: iconst_0 37: putfield #31 // Field CP$Inner.nestedVar1:I 40: return ``` Constant pool ``` #1 = Utf8 CP #2 = Class #1 // CP #9 = Utf8 a #10 = Utf8 [I #11 = NameAndType #9:#10 // a:[I #12 = Fieldref #2.#11 // CP.a:[I #13 = Utf8 globalVar0 #14 = Utf8 I #15 = NameAndType #13:#14 // globalVar0:I #16 = Fieldref #2.#15 // CP.globalVar0:I #17 = Utf8 globalVar1 #18 = NameAndType #17:#14 // globalVar1:I #19 = Fieldref #2.#18 // CP.globalVar1:I #20 = Utf8 inner #21 = Utf8 LCP$Inner; #22 = NameAndType #20:#21 // inner:LCP$Inner; #23 = Fieldref #2.#22 // CP.inner:LCP$Inner; #24 = Utf8 CP$Inner #25 = Class #24 // CP$Inner #26 = Utf8 nestedVar0 #27 = NameAndType #26:#14 // nestedVar0:I #28 = Fieldref #25.#27 // CP$Inner.nestedVar0:I #29 = Utf8 nestedVar1 #30 = NameAndType #29:#14 // nestedVar1:I #31 = Fieldref #25.#30 // CP$Inner.nestedVar1:I #32 = Utf8 LineNumberTable #33 = Utf8 Code #34 = Utf8 main #35 = Utf8 ([Ljava/lang/String;)V #36 = Utf8 <init> #37 = NameAndType #36:#8 // "<init>":()V #38 = Methodref #2.#37 // CP."<init>":()V #39 = NameAndType #7:#8 // access:()V #40 = Methodref #2.#39 // CP.access:()V #41 = Methodref #4.#37 // java/lang/Object."<init>":()V #42 = Integer 1000000 #43 = Utf8 (LCP;)V #44 = NameAndType #36:#43 // "<init>":(LCP;)V #45 = Methodref #25.#44 // CP$Inner."<init>":(LCP;)V #46 = Utf8 Inner #47 = Utf8 InnerClasses ```
--- --------------------------------------------------------------------- To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org For additional commands, e-mail: reviews-h...@spark.apache.org