diff options
| author | Richard Musiol <mail@richard-musiol.de> | 2021-10-16 17:17:21 +0200 |
|---|---|---|
| committer | Richard Musiol <neelance@gmail.com> | 2021-10-18 21:21:54 +0000 |
| commit | 6c0daa733192031eab23d09ed6515c4cd959aa92 (patch) | |
| tree | 4080e872deadc7928262baaa798c2f15f7f38e48 /src/syscall | |
| parent | 267abbe3ba9dda96a8694e8aad8892e3ba2be60e (diff) | |
| download | go-6c0daa733192031eab23d09ed6515c4cd959aa92.tar.xz | |
syscall/js: remove Wrapper interface
This change removes the js.Wrapper interface for performance reasons.
See proposal #44006 for details.
This is a breaking change, but syscall/js is exempt from Go's
compatibility promise.
Fixes #44006
Change-Id: I968cd14b1e61cc72ea9f84240b6bd29e8b8ae673
Reviewed-on: https://go-review.googlesource.com/c/go/+/356430
Trust: Richard Musiol <neelance@gmail.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
Reviewed-by: Emmanuel Odeke <emmanuel@orijtech.com>
Diffstat (limited to 'src/syscall')
| -rw-r--r-- | src/syscall/js/func.go | 2 | ||||
| -rw-r--r-- | src/syscall/js/js.go | 17 |
2 files changed, 3 insertions, 16 deletions
diff --git a/src/syscall/js/func.go b/src/syscall/js/func.go index ab23e5fbfc..dde1e68100 100644 --- a/src/syscall/js/func.go +++ b/src/syscall/js/func.go @@ -15,8 +15,6 @@ var ( nextFuncID uint32 = 1 ) -var _ Wrapper = Func{} // Func must implement Wrapper - // Func is a wrapped Go function to be called by JavaScript. type Func struct { Value // the JavaScript function that invokes the Go function diff --git a/src/syscall/js/js.go b/src/syscall/js/js.go index d805d69166..0da0ddfa0f 100644 --- a/src/syscall/js/js.go +++ b/src/syscall/js/js.go @@ -28,12 +28,6 @@ type ref uint64 // nanHead are the upper 32 bits of a ref which are set if the value is not encoded as an IEEE 754 number (see above). const nanHead = 0x7FF80000 -// Wrapper is implemented by types that are backed by a JavaScript value. -type Wrapper interface { - // JSValue returns a JavaScript value associated with an object. - JSValue() Value -} - // Value represents a JavaScript value. The zero value is the JavaScript value "undefined". // Values can be checked for equality with the Equal method. type Value struct { @@ -51,11 +45,6 @@ const ( typeFlagFunction ) -// JSValue implements Wrapper interface. -func (v Value) JSValue() Value { - return v -} - func makeValue(r ref) Value { var gcPtr *ref typeFlag := (r >> 32) & 7 @@ -162,10 +151,10 @@ func Global() Value { // Panics if x is not one of the expected types. func ValueOf(x interface{}) Value { switch x := x.(type) { - case Value: // should precede Wrapper to avoid a loop + case Value: return x - case Wrapper: - return x.JSValue() + case Func: + return x.Value case nil: return valueNull case bool: |
