Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8306625

Missing instructions on IR-based test framework ALLOC Regex

XMLWordPrintable

      On AArch64 with -XX:-UseTLAB, C2 can generate a sequence of instructions that isn't recognized by the current ALLOC/ALLOC_OF/ALLOC_ARRAY/ALLOC_ARRAY_OF Regex in the IR-based test framework as an object allocation. Some examples of such sequences:

      ```
      090 mov R1, precise compiler/c2/irTests/scalarReplacement/AllocationMergesTests$Point: 0x000000013f1a5bf8:Constant:exact * # ptr
      09c add R29, R0, #16 # ptr
      0a0 spill R0 -> [sp, #16] # spill size = 64
      0a4 call,static 0x0000000117492640 // ==> wrapper for: _new_instance_Java
      --------------------------------
      --------------------------------
      094 + mov R1, precise compiler/c2/irTests/scalarReplacement/AllocationMergesTests$Point: 0x000000014929ec50:Constant:exact * # ptr
      0a0 mulw R29, R10, R10
      0a4 call,static 0x000000011722f2c0 // ==> wrapper for: _new_instance_Java
      --------------------------------
      --------------------------------
      078 mov R1, precise compiler/c2/irTests/scalarReplacement/AllocationMergesTests$Point: 0x00000001404a7ac0:Constant:exact * # ptr
      084 spill R10 -> [sp, #8] # spill size = 32
      088 + addw R29, R3, R4
      08c spill R3 -> [sp, #0] # spill size = 32
      090 + spill R4 -> [sp, #4] # spill size = 32
      090 call,static 0x0000000115bea3c0 // ==> wrapper for: _new_instance_Java

      ```

      The Regex doesn't recognize the allocation because of the add, addw, mulw instructions. This is the current Regex: `(.*precise .*\\R((.*(?i:mov|xorl|nop|spill).*|\\s*)\\R)*.*(?i:call,static).*wrapper for: _new_instance_Java)`

            cslucas Cesar Soares
            cslucas Cesar Soares
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated: