RFR: 8325495: C2: implement optimization for series of Add of unique value [v6]

Kangcheng Xu kxu at openjdk.org
Mon Sep 30 06:22:17 UTC 2024


> This pull request resolves [JDK-8325495](https://bugs.openjdk.org/browse/JDK-8325495) by converting series of additions of the same operand into multiplications. I.e., `a + a + ... + a + a + a => n*a`.
> 
> As an added benefit, it also converts `C * a + a` into `(C+1) * a` and `a << C + a` into `(2^C + 1) * a` (with respect to constant `C`). This is actually a side effect of IGVN being iterative: at converting the `i`-th addition, the previous `i-1` additions would have already been optimized to multiplication (and thus, further into bit shifts and additions/subtractions if possible).  
> 
> Some notable examples of this transformation include:
> - `a + a + a` => `a*3` => `(a<<1) + a`
> - `a + a + a + a` => `a*4` => `a<<2`
> - `a*3 + a` => `a*4` => `a<<2`
> - `(a << 1) + a + a` => `a*2 + a + a` => `a*3 + a` => `a*4 => a<<2`
> 
> See included IR unit tests for more.

Kangcheng Xu has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 33 commits:

 - resolve conflicts
 - resolve conflicts
 - Arithmetic canonicalization v3 (#3)
   
   * 8340144: C1: remove unused Compilation::_max_spills
   
   Reviewed-by: thartmann, shade
   
   * 8340176: Replace usage of -noclassgc with -Xnoclassgc in test/jdk/java/lang/management/MemoryMXBean/LowMemoryTest2.java
   
   Reviewed-by: kevinw, lmesnik
   
   * 8339793: Fix incorrect APX feature enabling with -XX:-UseAPX
   
   Reviewed-by: kvn, thartmann, sviswanathan
   
   * 8340184: Bug in CompressedKlassPointers::is_in_encodable_range
   
   Reviewed-by: coleenp, rkennke, jsjolen
   
   * 8332442: C2: refactor Mod cases in Compile::final_graph_reshaping_main_switch()
   
   Reviewed-by: roland, chagedorn, jkarthikeyan
   
   * 8340119: Remove oopDesc::size_might_change()
   
   Reviewed-by: stefank, iwalulya
   
   * 8340009: Improve the output from assert_different_registers
   
   Reviewed-by: aboldtch, dholmes, shade, mli
   
   * 8340273: Remove CounterHalfLifeTime
   
   Reviewed-by: chagedorn, dholmes
   
   * 8338566: Lazy creation of exception instances is not thread safe
   
   Reviewed-by: shade, kvn, dlong
   
   * 8339648: ZGC: Division by zero in rule_major_allocation_rate
   
   Reviewed-by: aboldtch, lucy, tschatzl
   
   * 8329816: Add SLEEF version 3.6.1
   
   Reviewed-by: erikj, mli, luhenry
   
   * 8315273: (fs) Path.toRealPath(LinkOption.NOFOLLOW_LINKS) fails when "../../" follows a link (win)
   
   Reviewed-by: djelinski
   
   * 8339574: Behavior of File.is{Directory,File,Hidden} is not documented with respect to symlinks
   
   Reviewed-by: djelinski, alanb
   
   * 8340200: Misspelled constant `AttributesProcessingOption.DROP_UNSTABLE_ATRIBUTES`
   
   Reviewed-by: liach
   
   * 8339934: Simplify Math.scalb(double) method
   
   Reviewed-by: darcy
   
   * 8339790: Support Intel APX setzucc instruction
   
   Reviewed-by: sviswanathan, jkarthikeyan, kvn
   
   * 8340323: Test jdk/classfile/OptionsTest.java fails after JDK-8340200
   
   Reviewed-by: alanb
   
   * 8338686: App classpath mismatch if a jar from the Class-Path attribute is on the classpath
   
   Reviewed-by: dholmes, iklam
   
   * 8337563: NMT: rename MEMFLAGS to MemTag
   
   Reviewed-by: dholmes, coleenp, jsjolen
   
   * 8340210: Add positionTestUI() to PassFailJFrame.Builder
   
   Co-authored-by: Alexey Ivanov <aivanov at openjdk.org>
   Reviewed-by: aivanov, azvegint
   
   * 8340132: Remove internal CpException for reading malformed utf8
   
   Reviewed-by: asotona
   
   * 8340213: jcmd VM.events ignores max argument
   
   Reviewed-by: szaldana, cjplummer, amenkov, mli
   
   * 8340015: Open source several AWT focus tests - series 7
   
   Reviewed-by: honkar
   
   * 8340280: Avoid calling MT.invokerType() when creating LambdaForms
   
   Reviewed-by: liach, jvernee
   
   * 8333258: C2: high memory usage in PhaseCFG::insert_anti_dependences()
   
   Reviewed-by: kvn, epeter
   
   * 8340230: Tests crash: assert(is_in_encoding_range || k->is_interface() || k->is_abstract()) failed: sanity
   
   Reviewed-by: thartmann, kvn
   
   * 8319873: Add windows implementation for jcmd System.map and System.dump_map
   
   Co-authored-by: Simon Tooke <stooke at openjdk.org>
   Reviewed-by: stuefe, kevinw, szaldana
   
   * 8339845: Update color.org and wapforum.org links to use HTTPS instead of HTTP
   
   Reviewed-by: prr, honkar, aivanov
   
   * 8340113: Remove JULONG as a Diagnostic Command argument type (jcmd JFR.view)
   
   Reviewed-by: lmesnik, egahlin
   
   * 8340272: C2 SuperWord: JMH benchmark for Reduction vectorization
   
   Reviewed-by: kvn, jkarthikeyan
   
   * 8337302: Undefined type variable results in null
   
   Reviewed-by: liach
   
   * 8339738: RISC-V: Vectorize crc32 intrinsic
   
   Reviewed-by: fyang, luhenry
   
   * 8340368: windows-x64-slowdebug build fails after JDK-8319873
   
   Reviewed-by: jpai, kevinw, aboldtch, eosterlund
   
   * 8339992: RISC-V: some minor improvements of base64_vector_decode_round
   
   Reviewed-by: fyang, luhenry
   
   * 8340233: Missed ThreadWXEnable in jfrNativeLibraryLoadEvent.cpp
   
   Reviewed-by: mgronlun
   
   * 8340391: Windows jcmd System.map and System.dump_map tests failing
   
   Reviewed-by: cjplummer
   
   * 8339962: Open source AWT TextField tests - Set1
   
   Reviewed-by: jdv, dnguyen, prr
   
   * 8340078: Open source several 2D tests
   
   Reviewed-by: honkar
   
   * 8340360: Update -mx to -Xmx in UnninstallUIMemoryLeaks test
   
   Reviewed-by: serb, prr
   
   * 8339980: [s390x] ProblemList jdk/java/util/zip/CloseInflaterDeflaterTest.java
   
   Reviewed-by: lucy
   
   * 8339416: [s390x] Provide implementation for resolve_global_jobject
   
   Reviewed-by: mdoerr, lucy
   
   * 8286851: Deprecate for removal several of the undocumented java launcher options
   
   Reviewed-by: dholmes
   
   * 8340276: Test java/lang/management/ThreadMXBean/Locks.java failed with NullPointerException
   
   Reviewed-by: cjplummer, lmesnik
   
   * 8338759: Add extra diagnostic to java/net/InetAddress/ptr/Lookup.java
   
   Reviewed-by: dfuchs, shade
   
   * 8337674: ZGC: Consistent style for naming private static constants
   
   Reviewed-by: stefank, aboldtch, mli
   
   * 8340007: Refactor KeyEvent/FunctionKeyTest.java
   
   Reviewed-by: azvegint
   
   * 8340306: Add border around instructions in PassFailJFrame
   
   Reviewed-by: honkar, prr
   
   * 8339787: Add some additional diagnostic output to java/net/ipv6tests/UdpTest.java
   
   Reviewed-by: dfuchs
   
   * 8338995: New Object to ObjectMonitor mapping: PPC64 implementation
   
   Reviewed-by: rrich, lucy
   
   * 8331391: Enhance the keytool code by invoking the buildTrustedCerts method for essential options
   
   Reviewed-by: coffeys, mullan
   
   * 8298614: Support CDS heap dumping for SerialGC and ParallelGC
   
   Reviewed-by: dholmes, lmesnik, iklam
   
   * 8338693: assert(Atomic::add(&ik->_shared_class_load_count, 1) == 1) failed: shared class loaded more than once
   
   Reviewed-by: iklam, dholmes
   
   * 8340329: (fs) Message of NotLinkException thrown by FIles.readSymbolicLink does not include file name (win)
   
   Reviewed-by: alanb
   
   * 8339735: Remove references to Applet in core-libs/security APIs
   
   Reviewed-by: coffeys, naoto, iris, rriggs, lancea, mullan
   
   * 8340271: Open source several AWT Robot tests
   
   Reviewed-by: abhiscxk, honkar
   
   * 8340308: PassFailJFrame: Make rows default to number of lines in instructions
   
   Reviewed-by: honkar, azvegint
   
   * 8340399: Update comment in SourceVersion for language evolution history
   
   Reviewed-by: iris
   
   * 8340166: [REDO] CDS: Trim down minimum GC region alignment
   
   Reviewed-by: ccheung, iklam
   
   * 8340400: Shenandoah: Whitebox breakpoint GC requests may cause assertions
   
   Reviewed-by: shade
   
   * 8339902: Open source couple TextField related tests
   
   Reviewed-by: honkar
   
   * 8340353: Remove CompressedOops::ptrs_base
   
   Reviewed-by: stefank, coleenp, shade, mli
   
   * 8340480: Bad copyright notices in changes from JDK-8339902
   
   Reviewed-by: kcr, bpb, kizune
   
   * 8339192: Native annotation parsing code of deprecated annotations causes crash
   
   Reviewed-by: jrose, mgronlun
   
   * 8339895: Open source several AWT focus tests - series 3
   
   Reviewed-by: prr
   
   * 8340436: Remove unused CompressedOops::AnyNarrowOopMode
   
   Reviewed-by: haosun, dholmes
   
   * 8339984: Open source AWT MenuItem related tests
   
   Reviewed-by: aivanov
   
   * 8339906: Open source several AWT focus tests - series 4
   
   Reviewed-by: abhiscxk, prr
   
   * 8340418: GHA: MacOS AArch64 bundles can be removed prematurely
   
   Reviewed-by: erikj
   
   * 8340439: AArch64: Extra entry declaration for assember test
   
   Reviewed-by: haosun, lmesnik, mli
   
   * 8340456: Reduce overhead of proxying Object methods in ProxyGenerator
   
   Reviewed-by: liach
   
   * 8340438: RISC-V: minor improvement in base64
   
   Reviewed-by: fyang
   
   * 8340008: KeyEvent/KeyTyped/Numpad1KeyTyped.java has 15 seconds timeout
   
   Reviewed-by: azvegint, prr
   
   * 8339972: Make a few fields in SortingFocusTraversalPolicy static
   
   Reviewed-by: azvegint, aivanov
   
   * 8340540: Problemlist DcmdMBeanPermissionsTest.java and SystemDumpMapTest.java
   
   Reviewed-by: kevinw
   
   * 8338658: New Object to ObjectMonitor mapping: s390x implementation
   
   Reviewed-by: lucy, mdoerr
   
   * 8340269: [s390x] TestLargeStub.java failure after 8338123
   
   Reviewed-by: mdoerr, lucy
   
   * 8340537: Typo in javadoc of java.util.jar.JarFile
   
   Reviewed-by: mullan, lancea, iris
   
   * 8339198: Remove tag field from AbstractPoolEntry
   
   Reviewed-by: asotona, redestad
   
   * 8340232: Optimize DataInputStream::readUTF
   
   Reviewed-by: liach, bpb
   
   * 8338471: Assert deleted methods not returned by CallInfo
   
   Reviewed-by: shade, jwaters, dholmes
   
   * 8340092: [Linux] containers/systemd/SystemdMemoryAwarenessTest.java failing on some systems
   
   Reviewed-by: mbaesken
   
   * 8339781: Better use of Javadoc tags in javax.lang.model
   
   Reviewed-by: jjg
   
   * 8339217: Optimize ClassFile API loadConstant
   
   Reviewed-by: liach, redestad, asotona
   
   * 8340544: Optimize setLocalsFromArg
   
   Reviewed-by: redestad, liach
   
   * 8340524: Remove NarrowPtrStruct
   
   Reviewed-by: shade, jwaters
   
   * 8340387: Update OS detection code to recognize Windows Server 2025
   
   Reviewed-by: mdoerr, jwaters, dholmes
   
   * 8340171: CDS: Enhance bitmap truncation
   
   Reviewed-by: matsaave, iklam
   
   * 8340392: Handle OopStorage in location decoder
   
   Reviewed-by: kbarrett, dholmes
   
   * 8340573: Remove unused G1ParScanThreadState::_partial_objarray_chunk_size
   
   Reviewed-by: tschatzl
   
   * 8340084: Open source AWT Frame related tests
   
   Reviewed-by: psadhukhan, honkar
   
   * 8339852: Fix typos in java.compiler documentation
   
   Reviewed-by: liach, darcy
   
   * 8325949: Create an internal utility method for creating VarHandle instances
   
   Reviewed-by: rriggs
   
   * 8339161: ZGC: Remove unused remembered sets
   
   Reviewed-by: aboldtch, stefank
   
   * 8335334: Stress mode to randomly execute unstable if traps
   
   Reviewed-by: chagedorn, kvn
   
   * 8340393: Open source closed choice tests #2
   
   Reviewed-by: psadhukhan
   
   * 8340183: Shenandoah: Incorrect match for clone barrier in is_gc_barrier_node
   
   Reviewed-by: roland, rkennke
   
   * 8336025: Improve ZipOutputSream validation of MAX CEN Header field limits
   
   Reviewed-by: alanb
   
   * 8319332: Security properties files inclusion
   
   Co-authored-by: Francisco Ferrari Bihurriet <fferrari at openjdk.org>
   Co-authored-by: Martin Balao <mbalao at openjdk.org>
   Reviewed-by: weijun, mullan, kdriver
   
   * 8340461: Amend description for logArea
   
   Reviewed-by: azvegint, prr
   
   * 8340411: open source several 2D imaging tests
   
   Reviewed-by: azvegint
   
   * 8340365: Position the first window of a window list
   
   Reviewed-by: azvegint, prr
   
   * WIP: v3
   
   * 8338918: Remove non translated file name from WinResources resource bundle
   
   Reviewed-by: jlu, almatvee
   
   * 8340707: ProblemList applications/ctw/modules/java_base.java due to JDK-8340683
   
   Reviewed-by: darcy
   
   * 8340114: Remove outdated SelectVersion() function from the launcher and update the code comments explaining the code flow
   
   Reviewed-by: dholmes, alanb
   
   * 8339995: Open source several AWT focus tests - series 6
   
   Reviewed-by: prr
   
   * 8340596: Remove dead code from RequiresSetenv function in java.base/unix/native/libjli/java_md.c
   
   Reviewed-by: dholmes
   
   * 8340367: Opensource few AWT image tests
   
   Reviewed-by: prr
   
   * 8340146: ZGC: TestAllocateHeapAt.java should not run with UseLargePages
   
   Reviewed-by: tschatzl, stefank
   
   * 8323688: C2: Fix UB of jlong overflow in PhaseIdealLoop::is_counted_loop()
   
   Reviewed-by: thartmann, kvn
   
   * 8340590: RISC-V: C2: Small improvement to vector gather load and scatter store
   
   Reviewed-by: fyang, dzhang
   
   * 8340623: Remove outdated PROCESSOR_ARCHITECTURE_IA64 from Windows coding
   
   Reviewed-by: alanb, dholmes
   
   * 8335167: Test runtime/Thread/TestAlwaysPreTouchStacks.java failed with Expected a higher ratio between stack committed and reserved
   
   Reviewed-by: stuefe, dholmes, gziemski
   
   * 8340585: [JVMCI] compiler/unsafe/UnsafeGetStableArrayElement.java fails with -XX:-UseCompressedClassPointers
   
   Reviewed-by: dnsimon
   
   * 8340398: [JVMCI] Unintuitive behavior of UseJVMCICompiler option
   
   Reviewed-by: dnsimon
   
   * 8340680: Fix typos in javax.lang.model.SourceVersion
   
   Reviewed-by: darcy, iris
   
   * 8339299: C1 will miss type profile when inline final method
   
   Reviewed-by: lmesnik, vlivanov
   
   * 8340657: [PPC64] SA determines wrong unextendedSP
   
   Reviewed-by: ysuenaga, mbaesken
   
   * 8340383: VM issues warning failure to find kernel32.dll on Windows nanoserver
   
   Reviewed-by: dholmes, jwaters
   
   * 8340408: Shenandoah: Remove redundant task stats printing code in ShenandoahTaskQueue
   
   Reviewed-by: shade, wkemper
   
   * 8338546: Speed up ConstantPoolBuilder::classEntry(ClassDesc)
   
   Reviewed-by: asotona, redestad
   
   * 8338405: JFR: Use FILE type for dcmds
   
   Reviewed-by: egahlin, lmesnik
   
   * 8340793: Fix client builds after JDK-8337987
   
   Reviewed-by: shade, fyang
   
   * 8338694: x86_64 intrinsic for tanh using libm
   
   Reviewed-by: kvn, jbhateja, sgibbons, sviswanathan
   
   * 8340143: Open source several Java2D rendering loop tests.
   
   Reviewed-by: psadhukhan
   
   * 8340433: Open source closed choice tests #3
   
   Reviewed-by: honkar, prr
   
   * 8340670: Policy.UNSUPPORTED_EMPTY_COLLECTION.isReadOnly does not return true
   
   Reviewed-by: mullan
   
   * 8340804: doc/building.md update Xcode instructions to note that full install is required
   
   Reviewed-by: erikj, jwaters
   
   * 8338525: Leading and trailing code blocks by indentation
   
   Reviewed-by: hannesw, prappo
   
   * 8340717: Remove unused function declarations from java.c/java.h of the launcher
   
   Reviewed-by: alanb, dholmes, shade, jwaters
   
   * 8340643: RISC-V: Small refactoring for sub/subw macro-assembler routines
   
   Reviewed-by: fyang, luhenry
   
   * 8340708: Optimize StackMapGenerator::processMethod
   
   Reviewed-by: liach
   
   * 8340587: Optimize StackMapGenerator$Frame::checkAssignableTo
   
   Reviewed-by: liach
   
   * 8340710: Optimize DirectClassBuilder::build
   
   Reviewed-by: liach
   
   * 8339935: Open source several AWT focus tests - series 5
   
   Reviewed-by: prr
   
   * 8339771: RISC-V: Reduce icache flushes
   
   Reviewed-by: fyang, mli, luhenry
   
   * 8340808: RISC-V: Client build fails after JDK-8339738
   
   Reviewed-by: fyang
   
   * 8340843: [PPC64/s390x] Error: ShouldNotReachHere() in TemplateInterpreterGenerator::generate_math_entry after 8338694
   
   Reviewed-by: mbaesken, amitkumar
   
   * 8339541: CSS rule is not specific enough
   
   Reviewed-by: jjg
   
   * 8340885: Desugar ZipCoder.Comparison
   
   Reviewed-by: lancea, eirbjo
   
   * 8340568: Incorrect escaping of single quotes when pretty-printing character literals
   
   Reviewed-by: mcimadamore
   
   * 8338583: NMT: Malloc overhead is calculated incorrectly
   
   Reviewed-by: azafari, yan, gziemski
   
   * WIP: use UseNewCode
   
   * 8340815: Add SECURITY.md file
   
   Reviewed-by: mr, jwaters, erikj
   
   * 8340946: Add vmTestbase/gc/memory/Nio/Nio.java and java/nio/Buffer/LimitDirectMemory.java to problem list
   
   Reviewed-by: liach, dcubed, alanb
   
   * 8340684: Reading from an input stream backed by a closed ZipFile has no test coverage
   
   Reviewed-by: lancea
   
   * 8340228: Open source couple more miscellaneous AWT tests
   
   Reviewed-by: prr
   
   * 8340956: ProblemList 4 java/nio/channels/DatagramChannel tests on macosx-all
   
   Reviewed-by: liach, alanb, darcy, dfuchs
   
   * 8340838: Clean up MutableCallSite to use explicit release fence instead of AtomicInteger
   
   Reviewed-by: jrose, redestad, shade
   
   * 8340831: Simplify simple validation for class definition in MethodHandles.Lookup
   
   Reviewed-by: redestad
   
   * 8340864: Remove unused lines related to vmClasses
   
   Reviewed-by: shade, kvn
   
   * WIP: fixed lshift base term matching
   
   * WIP: removed UseNewCode
   
   * 8339271: giflib attribution correction
   
   Reviewed-by: dnguyen, prr
   
   * 8340812: LambdaForm customization via MethodHandle::updateForm is not thread safe
   
   Reviewed-by: liach, shade, jvernee
   
   * 8339260: Move rarely used constants out of ClassFile
   
   Reviewed-by: asotona
   
   * 8340923: The class LogSelection copies uninitialized memory
   
   Reviewed-by: mbaesken, jwaters, stefank
   
   * 8340899: Remove wildcard bound in PositionWindows.positionTestWindows
   
   Reviewed-by: azvegint, prr
   
   * 8340466: Add description for PassFailJFrame constructors
   
   Reviewed-by: prr, honkar
   
   * 8339542: compiler/codecache/CheckSegmentedCodeCache.java fails
   
   Reviewed-by: mdoerr, shade
   
   * 8340687: Open source closed frame tests #1
   
   Reviewed-by: aivanov
   
   * 8339560: Unaddressed comments during code review of JDK-8337664
   
   Reviewed-by: mullan
   
   * 8336942: Improve test coverage for class loading elements with annotations of different retentions
   
   Reviewed-by: vromero
   
   * 8336468: Reflection and MethodHandles should use more precise initializer checks
   
   Reviewed-by: liach, coleenp
   
   * 8336895: BufferedReader doesn't read full \r\n line ending when it doesn't fit in buffer
   
   Reviewed-by: jpai, alanb
   
   * 8339460: CDS error when module is located in a directory with space in the name
   
   Reviewed-by: ccheung, iklam
   
   * 8340981: Update citations to "Hacker's Delight"
   
   Reviewed-by: bpb, iris, liach, jwaters
   
   * 8340983: Use index and definition tags in Object and Double
   
   Reviewed-by: bpb, liach
   
   * 8333403: Write a test to check various components events are triggered properly
   
   Reviewed-by: aivanov
   
   * revert changing AddI/LNodeIdealizationTests
   
   * 8339261: Logs truncated in test javax/net/ssl/DTLS/DTLSRehandshakeTest.java
   
   Reviewed-by: rhalade, hchao
   
   * fixed power-of-2 multiplication detection
   
   * fixed power-of-2 multiplication detection
   
   * refactor lshift multiplier calculation. updated comments
   
   ---------
   
   Co-authored-by: Denghui Dong <ddong at openjdk.org>
   Co-authored-by: Jaikiran Pai <jpai at openjdk.org>
   Co-authored-by: Jatin Bhateja <jbhateja at openjdk.org>
   Co-authored-by: Thomas Stuefe <stuefe at openjdk.org>
   Co-authored-by: Thomas Schatzl <tschatzl at openjdk.org>
   Co-authored-by: Stefan Karlsson <stefank at openjdk.org>
   Co-authored-by: Daniel Lundén <dlunden at openjdk.org>
   Co-authored-by: Tobias Hartmann <thartmann at openjdk.org>
   Co-authored-by: Matthias Baesken <mbaesken at openjdk.org>
   Co-authored-by: Magnus Ihse Bursie <ihse at openjdk.org>
   Co-authored-by: Brian Burkhalter <bpb at openjdk.org>
   Co-authored-by: David M. Lloyd <david.lloyd at redhat.com>
   Co-authored-by: Raffaello Giulietti <rgiulietti at openjdk.org>
   Co-authored-by: Chen Liang <liach at openjdk.org>
   Co-authored-by: Calvin Cheung <ccheung at openjdk.org>
   Co-authored-by: Gerard Ziemski <gziemski at openjdk.org>
   Co-authored-by: Harshitha Onkar <honkar at openjdk.org>
   Co-authored-by: Alexey Ivanov <aivanov at openjdk.org>
   Co-authored-by: Leonid Mesnik <lmesnik at openjdk.org>
   Co-authored-by: Prasanta Sadhukhan <psadhukhan at openjdk.org>
   Co-authored-by: Claes Redestad <redestad at openjdk.org>
   Co-authored-by: Roland Westrelin <roland at openjdk.org>
   Co-authored-by: Martin Doerr <mdoerr at openjdk.org>
   Co-authored-by: Simon Tooke <stooke at openjdk.org>
   Co-authored-by: Nizar Benalla <nbenalla at openjdk.org>
   Co-authored-by: Kevin Walls <kevinw at openjdk.org>
   Co-authored-by: Emanuel Peter <epeter at openjdk.org>
   Co-authored-by: Rafael Winterhalter <winterhalter at openjdk.org>
   Co-authored-by: Hamlin Li <mli at openjdk.org>
   Co-authored-by: Phil Race <prr at openjdk.org>
   Co-authored-by: Amit Kumar <amitkumar at openjdk.org>
   Co-authored-by: Serhiy Sachkov <serhiy.sachkov at oracle.com>
   Co-authored-by: Joel Sikström <joel.sikstrom at oracle.com>
   Co-authored-by: Prasadrao Koppula <pkoppula at openjdk.org>
   Co-authored-by: Matias Saavedra Silva <matsaave at openjdk.org>
   Co-authored-by: Justin Lu <jlu at openjdk.org>
   Co-authored-by: Joe Darcy <darcy at openjdk.org>
   Co-authored-by: Aleksey Shipilev <shade at openjdk.org>
   Co-authored-by: William Kemper <wkemper at openjdk.org>
   Co-authored-by: Alexander Zuev <kizune at openjdk.org>
   Co-authored-by: Kim Barrett <kbarrett at openjdk.org>
   Co-authored-by: David Holmes <dholmes at openjdk.org>
   Co-authored-by: Abhishek Kumar <abhiscxk at openjdk.org>
   Co-authored-by: SendaoYan <syan at openjdk.org>
   Co-authored-by: Andrey Turbanov <aturbanov at openjdk.org>
   Co-authored-by: Shaojin Wen <swen at openjdk.org>
   Co-authored-by: Coleen Phillimore <coleenp at openjdk.org>
   Co-authored-by: Severin Gehwolf <sgehwolf at openjdk.org>
   Co-authored-by: Pavel Rappo <prappo at openjdk.org>
   Co-authored-by: Per Minborg <pminborg at openjdk.org>
   Co-authored-by: Alexander Zvegintsev <azvegint at openjdk.org>
   Co-authored-by: Lance Andersen <lancea at openjdk.org>
   Co-authored-by: Francisco Ferrari Bihurriet <fferrari at openjdk.org>
   Co-authored-by: Martin Balao <mbalao at openjdk.org>
   Co-authored-by: Alexey Semenyuk <asemenyuk at openjdk.org>
   Co-authored-by: Axel Boldt-Christmas <aboldtch at openjdk.org>
   Co-authored-by: Christian Hagedorn <chagedorn at openjdk.org>
   Co-authored-by: Gui Cao <gcao at openjdk.org>
   Co-authored-by: Afshin Zafari <azafari at openjdk.org>
   Co-authored-by: Yudi Zheng <yzheng at openjdk.org>
   Co-authored-by: Tomas Zezula <tzezula at openjdk.org>
   Co-authored-by: Kuai Wei <kuaiwei.kw at alibaba-inc.com>
   Co-authored-by: George Adams <gdams at openjdk.org>
   Co-authored-by: Zhengyu Gu <zgu at openjdk.org>
   Co-authored-by: Sonia Zaldana Calles <szaldana at openjdk.org>
   Co-authored-by: Andrew Dinn <adinn at openjdk.org>
   Co-authored-by: vamsi-parasa <srinivas.vamsi.parasa at intel.com>
   Co-authored-by: Artur Barashev <artur.barashev at oracle.com>
   Co-authored-by: Jonathan Gibbons <jjg at openjdk.org>
   Co-authored-by: Robbin Ehn <rehn at openjdk.org>
   Co-authored-by: Hannes Wallnöfer <hannesw at openjdk.org>
   Co-authored-by: Liam Miller-Cushon <cushon at openjdk.org>
   Co-authored-by: Leonov Kirill <91743110+kirleo2 at users.noreply.github.com>
   Co-authored-by: Eirik Bjørsnøs <eirbjo at openjdk.org>
   Co-authored-by: Daniel D. Daugherty <dcubed at openjdk.org>
   Co-authored-by: Ioi Lam <iklam at openjdk.org>
   Co-authored-by: Alisen Chung <achung at openjdk.org>
   Co-authored-by: Johan Sjölen <jsjolen at openjdk.org>
   Co-authored-by: Lutz Schmidt <lucy at openjdk.org>
   Co-authored-by: Fernando Guallini <fguallini at openjdk.org>
   Co-authored-by: Maxim Kartashev <mkartashev at openjdk.org>
   Co-authored-by: Ravi Gupta <rgupta at openjdk.org>
 - WIP: v3
 - add comments about intentional type narrowing
 - Merge pull request #2 from tabjy/arithmetic-canonicalization-v2
   
   Arithmetic canonicalization v2
 - remove unused variables
 - remove debug printfs
 - fix detecting optimized power-of-2 multiplication
 - revert usage of integercon(): truncation during jlong to jint is intended
 - ... and 23 more: https://git.openjdk.org/jdk/compare/ae4d2f15...0de4feea

-------------

Changes: https://git.openjdk.org/jdk/pull/20754/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=20754&range=05
  Stats: 450 lines in 3 files changed: 450 ins; 0 del; 0 mod
  Patch: https://git.openjdk.org/jdk/pull/20754.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/20754/head:pull/20754

PR: https://git.openjdk.org/jdk/pull/20754


More information about the hotspot-compiler-dev mailing list