Skip to content

Commit

Permalink
[WASM] Mark $clinit as once and add unique mangling to identify in bi…
Browse files Browse the repository at this point in the history
…naryen.

I will follow up with additional once functions later on.

PiperOrigin-RevId: 590424473
  • Loading branch information
gkdn authored and copybara-github committed Dec 13, 2023
1 parent 24d99ee commit 6e13d3c
Show file tree
Hide file tree
Showing 170 changed files with 2,507 additions and 2,497 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,15 @@ public String getPrefix() {
public boolean isSyntheticInstanceOfSupportMember() {
return this == SYNTHETIC_INSTANCE_OF_SUPPORT_METHOD;
}

public boolean isOnceMethod() {
switch (this) {
case SYNTHETIC_CLASS_INITIALIZER:
return true;
default:
return false;
}
}
}

public static final String CONSTRUCTOR_METHOD_NAME = "<init>";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -257,6 +257,7 @@ String getMethodImplementationName(MethodDescriptor methodDescriptor) {
return "$"
// TODO(b/315893220): Improve method names to avoid repetition of the enclosing type.
+ methodDescriptor.getMangledName()
+ (methodDescriptor.getOrigin().isOnceMethod() ? "_<once>_" : "")
+ "@"
+ methodDescriptor.getEnclosingTypeDescriptor().getQualifiedSourceName();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@
;;; Code for abstractinnerclass.InnerClasses.A [methods]

;;; void A.$clinit()
(func $$clinit__void@abstractinnerclass.InnerClasses.A
(func $$clinit__void_<once>_@abstractinnerclass.InnerClasses.A
;;@ abstractinnerclass/InnerClasses.java:19:12
(block
;;@ abstractinnerclass/InnerClasses.java:19:12
Expand Down Expand Up @@ -183,7 +183,7 @@
(local $$instance (ref null $abstractinnerclass.InnerClasses))
(block
;;@ abstractinnerclass/InnerClasses.java:18:13
(call $$clinit__void@abstractinnerclass.InnerClasses )
(call $$clinit__void_<once>_@abstractinnerclass.InnerClasses )
;;@ abstractinnerclass/InnerClasses.java:18:13
(local.set $$instance (struct.new $abstractinnerclass.InnerClasses (ref.as_non_null (global.get $abstractinnerclass.InnerClasses.vtable)) (ref.as_non_null (global.get $itable.empty)) (i32.const 0)))
;;@ abstractinnerclass/InnerClasses.java:18:13
Expand All @@ -204,7 +204,7 @@
)

;;; void InnerClasses.$clinit()
(func $$clinit__void@abstractinnerclass.InnerClasses
(func $$clinit__void_<once>_@abstractinnerclass.InnerClasses
;;@ abstractinnerclass/InnerClasses.java:18:13
(block
;;@ abstractinnerclass/InnerClasses.java:18:13
Expand All @@ -217,7 +217,7 @@
;;@ abstractinnerclass/InnerClasses.java:18:13
(global.set [email protected] (i32.const 1))
;;@ abstractinnerclass/InnerClasses.java:18:13
(call $$clinit__void@java.lang.Object )
(call $$clinit__void_<once>_@java.lang.Object )
)
)

Expand Down Expand Up @@ -287,7 +287,7 @@
(elem declare func $m_bar__void_$pp_abstractinnerclass@abstractinnerclass.InnerClasses.B)

;;; void B.$clinit()
(func $$clinit__void@abstractinnerclass.InnerClasses.B
(func $$clinit__void_<once>_@abstractinnerclass.InnerClasses.B
;;@ abstractinnerclass/InnerClasses.java:23:24
(block
;;@ abstractinnerclass/InnerClasses.java:23:24
Expand All @@ -300,7 +300,7 @@
;;@ abstractinnerclass/InnerClasses.java:23:24
(global.set [email protected] (i32.const 1))
;;@ abstractinnerclass/InnerClasses.java:23:24
(call $$clinit__void@java.lang.Object )
(call $$clinit__void_<once>_@java.lang.Object )
)
)

Expand Down Expand Up @@ -360,7 +360,7 @@
(elem declare func $m_bar__void_$pp_abstractinnerclass@abstractinnerclass.InnerClasses.C)

;;; void C.$clinit()
(func $$clinit__void@abstractinnerclass.InnerClasses.C
(func $$clinit__void_<once>_@abstractinnerclass.InnerClasses.C
;;@ abstractinnerclass/InnerClasses.java:29:17
(block
;;@ abstractinnerclass/InnerClasses.java:29:17
Expand All @@ -373,7 +373,7 @@
;;@ abstractinnerclass/InnerClasses.java:29:17
(global.set [email protected] (i32.const 1))
;;@ abstractinnerclass/InnerClasses.java:29:17
(call $$clinit__void@java.lang.Object )
(call $$clinit__void_<once>_@java.lang.Object )
)
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@
;;; Code for abstractinterfaceimpl.MyInterface [methods]

;;; void MyInterface.$clinit()
(func $$clinit__void@abstractinterfaceimpl.MyInterface
(func $$clinit__void_<once>_@abstractinterfaceimpl.MyInterface
;;@ abstractinterfaceimpl/AbstractInterfaceImpl.java:18:10
(block
;;@ abstractinterfaceimpl/AbstractInterfaceImpl.java:18:10
Expand Down Expand Up @@ -109,7 +109,7 @@
)

;;; void AbstractInterfaceImpl.$clinit()
(func $$clinit__void@abstractinterfaceimpl.AbstractInterfaceImpl
(func $$clinit__void_<once>_@abstractinterfaceimpl.AbstractInterfaceImpl
;;@ abstractinterfaceimpl/AbstractInterfaceImpl.java:22:22
(block
;;@ abstractinterfaceimpl/AbstractInterfaceImpl.java:22:22
Expand All @@ -122,7 +122,7 @@
;;@ abstractinterfaceimpl/AbstractInterfaceImpl.java:22:22
(global.set [email protected] (i32.const 1))
;;@ abstractinterfaceimpl/AbstractInterfaceImpl.java:22:22
(call $$clinit__void@java.lang.Object )
(call $$clinit__void_<once>_@java.lang.Object )
)
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -231,7 +231,7 @@
(elem declare func $m_bar__void@abstractmethodoverridedefault.AbstractMethodOverrideDefault.I)

;;; void I.$clinit()
(func $$clinit__void@abstractmethodoverridedefault.AbstractMethodOverrideDefault.I
(func $$clinit__void_<once>_@abstractmethodoverridedefault.AbstractMethodOverrideDefault.I
;;@ abstractmethodoverridedefault/AbstractMethodOverrideDefault.java:19:12
(block
;;@ abstractmethodoverridedefault/AbstractMethodOverrideDefault.java:19:12
Expand Down Expand Up @@ -284,7 +284,7 @@
(elem declare func $m_foo__void@abstractmethodoverridedefault.AbstractMethodOverrideDefault.J)

;;; void J.$clinit()
(func $$clinit__void@abstractmethodoverridedefault.AbstractMethodOverrideDefault.J
(func $$clinit__void_<once>_@abstractmethodoverridedefault.AbstractMethodOverrideDefault.J
;;@ abstractmethodoverridedefault/AbstractMethodOverrideDefault.java:25:12
(block
;;@ abstractmethodoverridedefault/AbstractMethodOverrideDefault.java:25:12
Expand Down Expand Up @@ -334,7 +334,7 @@
(local $$instance (ref null $abstractmethodoverridedefault.AbstractMethodOverrideDefault))
(block
;;@ abstractmethodoverridedefault/AbstractMethodOverrideDefault.java:18:13
(call $$clinit__void@abstractmethodoverridedefault.AbstractMethodOverrideDefault )
(call $$clinit__void_<once>_@abstractmethodoverridedefault.AbstractMethodOverrideDefault )
;;@ abstractmethodoverridedefault/AbstractMethodOverrideDefault.java:18:13
(local.set $$instance (struct.new $abstractmethodoverridedefault.AbstractMethodOverrideDefault (ref.as_non_null (global.get $abstractmethodoverridedefault.AbstractMethodOverrideDefault.vtable)) (ref.as_non_null (global.get $itable.empty)) (i32.const 0)))
;;@ abstractmethodoverridedefault/AbstractMethodOverrideDefault.java:18:13
Expand All @@ -355,7 +355,7 @@
)

;;; void AbstractMethodOverrideDefault.$clinit()
(func $$clinit__void@abstractmethodoverridedefault.AbstractMethodOverrideDefault
(func $$clinit__void_<once>_@abstractmethodoverridedefault.AbstractMethodOverrideDefault
;;@ abstractmethodoverridedefault/AbstractMethodOverrideDefault.java:18:13
(block
;;@ abstractmethodoverridedefault/AbstractMethodOverrideDefault.java:18:13
Expand All @@ -368,7 +368,7 @@
;;@ abstractmethodoverridedefault/AbstractMethodOverrideDefault.java:18:13
(global.set $$class-initialized@abstractmethodoverridedefault.AbstractMethodOverrideDefault (i32.const 1))
;;@ abstractmethodoverridedefault/AbstractMethodOverrideDefault.java:18:13
(call $$clinit__void@java.lang.Object )
(call $$clinit__void_<once>_@java.lang.Object )
)
)

Expand Down Expand Up @@ -438,7 +438,7 @@
(elem declare func $m_bar__void@abstractmethodoverridedefault.AbstractMethodOverrideDefault.A)

;;; void A.$clinit()
(func $$clinit__void@abstractmethodoverridedefault.AbstractMethodOverrideDefault.A
(func $$clinit__void_<once>_@abstractmethodoverridedefault.AbstractMethodOverrideDefault.A
;;@ abstractmethodoverridedefault/AbstractMethodOverrideDefault.java:31:24
(block
;;@ abstractmethodoverridedefault/AbstractMethodOverrideDefault.java:31:24
Expand All @@ -451,9 +451,9 @@
;;@ abstractmethodoverridedefault/AbstractMethodOverrideDefault.java:31:24
(global.set $$class-initialized@abstractmethodoverridedefault.AbstractMethodOverrideDefault.A (i32.const 1))
;;@ abstractmethodoverridedefault/AbstractMethodOverrideDefault.java:31:24
(call $$clinit__void@java.lang.Object )
(call $$clinit__void_<once>_@java.lang.Object )
;;@ abstractmethodoverridedefault/AbstractMethodOverrideDefault.java:31:24
(call $$clinit__void@abstractmethodoverridedefault.AbstractMethodOverrideDefault.I )
(call $$clinit__void_<once>_@abstractmethodoverridedefault.AbstractMethodOverrideDefault.I )
)
)

Expand Down Expand Up @@ -517,7 +517,7 @@
(elem declare func $m_bar__void@abstractmethodoverridedefault.AbstractMethodOverrideDefault.B)

;;; void B.$clinit()
(func $$clinit__void@abstractmethodoverridedefault.AbstractMethodOverrideDefault.B
(func $$clinit__void_<once>_@abstractmethodoverridedefault.AbstractMethodOverrideDefault.B
;;@ abstractmethodoverridedefault/AbstractMethodOverrideDefault.java:36:24
(block
;;@ abstractmethodoverridedefault/AbstractMethodOverrideDefault.java:36:24
Expand All @@ -530,9 +530,9 @@
;;@ abstractmethodoverridedefault/AbstractMethodOverrideDefault.java:36:24
(global.set $$class-initialized@abstractmethodoverridedefault.AbstractMethodOverrideDefault.B (i32.const 1))
;;@ abstractmethodoverridedefault/AbstractMethodOverrideDefault.java:36:24
(call $$clinit__void@abstractmethodoverridedefault.AbstractMethodOverrideDefault.A )
(call $$clinit__void_<once>_@abstractmethodoverridedefault.AbstractMethodOverrideDefault.A )
;;@ abstractmethodoverridedefault/AbstractMethodOverrideDefault.java:36:24
(call $$clinit__void@abstractmethodoverridedefault.AbstractMethodOverrideDefault.J )
(call $$clinit__void_<once>_@abstractmethodoverridedefault.AbstractMethodOverrideDefault.J )
)
)

Expand Down Expand Up @@ -571,7 +571,7 @@
(local $$instance (ref null $abstractmethodoverridedefault.AbstractMethodOverrideDefault.C))
(block
;;@ abstractmethodoverridedefault/AbstractMethodOverrideDefault.java:46:15
(call $$clinit__void@abstractmethodoverridedefault.AbstractMethodOverrideDefault.C )
(call $$clinit__void_<once>_@abstractmethodoverridedefault.AbstractMethodOverrideDefault.C )
;;@ abstractmethodoverridedefault/AbstractMethodOverrideDefault.java:46:15
(local.set $$instance (struct.new $abstractmethodoverridedefault.AbstractMethodOverrideDefault.C (ref.as_non_null (global.get $abstractmethodoverridedefault.AbstractMethodOverrideDefault.C.vtable)) (ref.as_non_null (global.get $abstractmethodoverridedefault.AbstractMethodOverrideDefault.C.itable)) (i32.const 0)))
;;@ abstractmethodoverridedefault/AbstractMethodOverrideDefault.java:46:15
Expand Down Expand Up @@ -618,7 +618,7 @@
(elem declare func $m_bar__void@abstractmethodoverridedefault.AbstractMethodOverrideDefault.C)

;;; void C.$clinit()
(func $$clinit__void@abstractmethodoverridedefault.AbstractMethodOverrideDefault.C
(func $$clinit__void_<once>_@abstractmethodoverridedefault.AbstractMethodOverrideDefault.C
;;@ abstractmethodoverridedefault/AbstractMethodOverrideDefault.java:46:15
(block
;;@ abstractmethodoverridedefault/AbstractMethodOverrideDefault.java:46:15
Expand All @@ -631,7 +631,7 @@
;;@ abstractmethodoverridedefault/AbstractMethodOverrideDefault.java:46:15
(global.set $$class-initialized@abstractmethodoverridedefault.AbstractMethodOverrideDefault.C (i32.const 1))
;;@ abstractmethodoverridedefault/AbstractMethodOverrideDefault.java:46:15
(call $$clinit__void@abstractmethodoverridedefault.AbstractMethodOverrideDefault.A )
(call $$clinit__void_<once>_@abstractmethodoverridedefault.AbstractMethodOverrideDefault.A )
)
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,7 @@
;;; Code for accidentaloverride.SuperInterface [methods]

;;; void SuperInterface.$clinit()
(func $$clinit__void@accidentaloverride.SuperInterface
(func $$clinit__void_<once>_@accidentaloverride.SuperInterface
;;@ accidentaloverride/AccidentalOverride.java:23:10
(block
;;@ accidentaloverride/AccidentalOverride.java:23:10
Expand Down Expand Up @@ -250,7 +250,7 @@
(local $$instance (ref null $accidentaloverride.Parent))
(block
;;@ accidentaloverride/AccidentalOverride.java:18:6
(call $$clinit__void@accidentaloverride.Parent )
(call $$clinit__void_<once>_@accidentaloverride.Parent )
;;@ accidentaloverride/AccidentalOverride.java:18:6
(local.set $$instance (struct.new $accidentaloverride.Parent (ref.as_non_null (global.get $accidentaloverride.Parent.vtable)) (ref.as_non_null (global.get $itable.empty)) (i32.const 0)))
;;@ accidentaloverride/AccidentalOverride.java:18:6
Expand Down Expand Up @@ -284,7 +284,7 @@
(elem declare func [email protected])

;;; void Parent.$clinit()
(func $$clinit__void@accidentaloverride.Parent
(func $$clinit__void_<once>_@accidentaloverride.Parent
;;@ accidentaloverride/AccidentalOverride.java:18:6
(block
;;@ accidentaloverride/AccidentalOverride.java:18:6
Expand All @@ -297,7 +297,7 @@
;;@ accidentaloverride/AccidentalOverride.java:18:6
(global.set [email protected] (i32.const 1))
;;@ accidentaloverride/AccidentalOverride.java:18:6
(call $$clinit__void@java.lang.Object )
(call $$clinit__void_<once>_@java.lang.Object )
)
)

Expand Down Expand Up @@ -349,7 +349,7 @@
(local $$instance (ref null $accidentaloverride.AnotherAccidentalOverride))
(block
;;@ accidentaloverride/AccidentalOverride.java:31:6
(call $$clinit__void@accidentaloverride.AnotherAccidentalOverride )
(call $$clinit__void_<once>_@accidentaloverride.AnotherAccidentalOverride )
;;@ accidentaloverride/AccidentalOverride.java:31:6
(local.set $$instance (struct.new $accidentaloverride.AnotherAccidentalOverride (ref.as_non_null (global.get $accidentaloverride.AnotherAccidentalOverride.vtable)) (ref.as_non_null (global.get $accidentaloverride.AnotherAccidentalOverride.itable)) (i32.const 0)))
;;@ accidentaloverride/AccidentalOverride.java:31:6
Expand Down Expand Up @@ -400,7 +400,7 @@
(elem declare func $m_foo__java_lang_AssertionError__void@accidentaloverride.AnotherAccidentalOverride)

;;; void AnotherAccidentalOverride.$clinit()
(func $$clinit__void@accidentaloverride.AnotherAccidentalOverride
(func $$clinit__void_<once>_@accidentaloverride.AnotherAccidentalOverride
;;@ accidentaloverride/AccidentalOverride.java:31:6
(block
;;@ accidentaloverride/AccidentalOverride.java:31:6
Expand All @@ -413,7 +413,7 @@
;;@ accidentaloverride/AccidentalOverride.java:31:6
(global.set [email protected] (i32.const 1))
;;@ accidentaloverride/AccidentalOverride.java:31:6
(call $$clinit__void@accidentaloverride.Parent )
(call $$clinit__void_<once>_@accidentaloverride.Parent )
)
)

Expand Down Expand Up @@ -465,7 +465,7 @@
(local $$instance (ref null $accidentaloverride.AccidentalOverride))
(block
;;@ accidentaloverride/AccidentalOverride.java:41:13
(call $$clinit__void@accidentaloverride.AccidentalOverride )
(call $$clinit__void_<once>_@accidentaloverride.AccidentalOverride )
;;@ accidentaloverride/AccidentalOverride.java:41:13
(local.set $$instance (struct.new $accidentaloverride.AccidentalOverride (ref.as_non_null (global.get $accidentaloverride.AccidentalOverride.vtable)) (ref.as_non_null (global.get $accidentaloverride.AccidentalOverride.itable)) (i32.const 0)))
;;@ accidentaloverride/AccidentalOverride.java:41:13
Expand Down Expand Up @@ -501,7 +501,7 @@
(elem declare func $m_foo__java_lang_Object__void@accidentaloverride.AccidentalOverride)

;;; void AccidentalOverride.$clinit()
(func $$clinit__void@accidentaloverride.AccidentalOverride
(func $$clinit__void_<once>_@accidentaloverride.AccidentalOverride
;;@ accidentaloverride/AccidentalOverride.java:41:13
(block
;;@ accidentaloverride/AccidentalOverride.java:41:13
Expand All @@ -514,7 +514,7 @@
;;@ accidentaloverride/AccidentalOverride.java:41:13
(global.set [email protected] (i32.const 1))
;;@ accidentaloverride/AccidentalOverride.java:41:13
(call $$clinit__void@accidentaloverride.Parent )
(call $$clinit__void_<once>_@accidentaloverride.Parent )
)
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@
;;; Code for annotation.Main.Foo [methods]

;;; void Foo.$clinit()
(func $$clinit__void@annotation.Main.Foo
(func $$clinit__void_<once>_@annotation.Main.Foo
;;@ annotation/Main.java:19:13
(block
;;@ annotation/Main.java:19:13
Expand Down Expand Up @@ -157,7 +157,7 @@
;;; Code for annotation.Main.Zoo [methods]

;;; void Zoo.$clinit()
(func $$clinit__void@annotation.Main.Zoo
(func $$clinit__void_<once>_@annotation.Main.Zoo
;;@ annotation/Main.java:28:13
(block
;;@ annotation/Main.java:28:13
Expand Down Expand Up @@ -207,7 +207,7 @@
(local $$instance (ref null $annotation.Main))
(block
;;@ annotation/Main.java:18:13
(call $$clinit__void@annotation.Main )
(call $$clinit__void_<once>_@annotation.Main )
;;@ annotation/Main.java:18:13
(local.set $$instance (struct.new $annotation.Main (ref.as_non_null (global.get $annotation.Main.vtable)) (ref.as_non_null (global.get $itable.empty)) (i32.const 0)))
;;@ annotation/Main.java:18:13
Expand All @@ -228,7 +228,7 @@
)

;;; void Main.$clinit()
(func $$clinit__void@annotation.Main
(func $$clinit__void_<once>_@annotation.Main
;;@ annotation/Main.java:18:13
(block
;;@ annotation/Main.java:18:13
Expand All @@ -241,7 +241,7 @@
;;@ annotation/Main.java:18:13
(global.set [email protected] (i32.const 1))
;;@ annotation/Main.java:18:13
(call $$clinit__void@java.lang.Object )
(call $$clinit__void_<once>_@java.lang.Object )
)
)

Expand Down Expand Up @@ -294,7 +294,7 @@
(local $$instance (ref null $annotation.Main.Bar))
(block
;;@ annotation/Main.java:30:8
(call $$clinit__void@annotation.Main.Bar )
(call $$clinit__void_<once>_@annotation.Main.Bar )
;;@ annotation/Main.java:30:8
(local.set $$instance (struct.new $annotation.Main.Bar (ref.as_non_null (global.get $annotation.Main.Bar.vtable)) (ref.as_non_null (global.get $itable.empty)) (i32.const 0) (ref.null $annotation.Main)))
;;@ annotation/Main.java:30:8
Expand Down Expand Up @@ -338,7 +338,7 @@
(elem declare func [email protected])

;;; void Bar.$clinit()
(func $$clinit__void@annotation.Main.Bar
(func $$clinit__void_<once>_@annotation.Main.Bar
;;@ annotation/Main.java:30:8
(block
;;@ annotation/Main.java:30:8
Expand All @@ -351,7 +351,7 @@
;;@ annotation/Main.java:30:8
(global.set [email protected] (i32.const 1))
;;@ annotation/Main.java:30:8
(call $$clinit__void@java.lang.Object )
(call $$clinit__void_<once>_@java.lang.Object )
)
)

Expand Down
Loading

0 comments on commit 6e13d3c

Please sign in to comment.