Select baseline compiler when content opts into gc feature; otherwise use normal selection

RESOLVED FIXED in Firefox 64

Status

()

enhancement
P2
normal
RESOLVED FIXED
10 months ago
10 months ago

People

(Reporter: lth, Assigned: lth)

Tracking

unspecified
mozilla64
Points:
---
Dependency tree / graph

Firefox Tracking Flags

(firefox64 fixed)

Details

Attachments

(2 attachments, 2 obsolete attachments)

Assignee

Description

10 months ago
We want experimental wasm content to "just work" so we can't keep the flag we have now, but until we support Ion (which we won't for the internal mvp) we will therefore need some kind of detection of content that ensures Ion is not used on modules with ref types, and we need to make sure that modules that have ref types mix well with modules that don't.

Basically, I think there are two requirements:

* detect ref content and shunt compilation to baseline always, and never tier
  up for such content
* support gc stack maps in baseline so that we don't have to worry about
  what's on the stack and we won't need the brittle disable-gc hacks that
  we currently have

The latter point is bug 1456824, I think, so this bug is about the former point.

There are probably several ways of detecting ref content temporarily.  The most reliable and quickest way is probably the custom section idea from bug 1487327.  

Alternatively, if WASM_GC is enabled during compilation then:

* we can examine the type section to look for structs and refs in type defs
  and function signatures
* we can examine the globals section to look for refs
* we need to scan the code section to look for ref instructions of various
  kinds that might be there without anything appearing in the type/globals
  sections, eg, ref.null, ref.eq, ref.is_null, and locals.  We only need to
  perform this scan if we would normally select Ion for the first tier,
  otherwise we can scan during baseline compilation.  The scan could just
  be an extra verification pass that sets a flag.
Assignee

Updated

10 months ago
Depends on: 1488162
Assignee

Comment 1

10 months ago
The custom section opt-in method has landed, so we have a sound way of detecting a module that can use ref types etc.

One complication in removing these flags is that without the flag, we will mix ion-compiled and baseline-compiled wasm in the same runtime.  We'll force baseline compilation for all content that has opted in to ref types, but we will normally use ion for other code (both code loaded before and after any module that opts in).  Since ion does not support ref types beyond supporting empty stack maps, we should be a little paranoid about any wasm->wasm calls.

In principle it should be impossible for ion-compiled code to call baseline-compiled code if the latter function takes or receives anyref - the verifier should make it impossible; the ion code has not opted in to ref types.

However there are also dynamic type checks on call_indirect, and functions accepting and returning anyref are exportable from a function either directly or, notably, via a table.  So ion-compiled code must at least deal with the possibility that the dynamic signature of the function it calls could have an anyref in it even if ion has not opted in to ref types.

Really this goes for the other direction too; baseline could attempt to pass an anyref on an indirect call that goes to an ion function; that call must not be allowed.
Assignee

Updated

10 months ago
Assignee: nobody → lhansen
Status: NEW → ASSIGNED
Summary: Get rid of the --wasm-gc flag / about:config option for the MVP → Select baseline compiler when content opts into gc feature; otherwise use normal selection
Assignee

Updated

10 months ago
Blocks: 1488205
Assignee

Comment 2

10 months ago
See commit msg for most info.  This patch feels slightly messy because we can't remove --wasm-gc yet; we end up with several flags tracking the original value of that and tracking a derived value based on the opt-in section.  Things will be  cleaner once --wasm-gc is gone.
Attachment #9006129 - Flags: review?(bbouvier)
Assignee

Updated

10 months ago
No longer depends on: 1456824, 1488162
Assignee

Comment 3

10 months ago
One thing I've actually not tested here is the mixing of ion-compiled and baseline-compiled code I described in comment 1.  I'll investigate + write some test cases, but it'll be good to get some eyes on the patch in any case, so I'll leave the r? up.
Flags: needinfo?(bbouvier)
Assignee

Comment 4

10 months ago
And a test case.  As noted in comments, I've verified (via printfs) that one module is compiled with baseline and one with ion when --wasm-gc is used; this goes some way to showing that (a) the previous patch does what it's supposed to and (b) indirect-call type checks against anyref work even if the caller or callee comes from an environment where anyref is not available.
Attachment #9006164 - Flags: review?(bbouvier)
Comment on attachment 9006129 [details] [diff] [review]
bug1487329-select-compiler-by-content.patch

Review of attachment 9006129 [details] [diff] [review]:
-----------------------------------------------------------------

The intent makes sense, the implementation is a bit shadowing the intent. Let's discuss. (I reserve judgement before clearing r? flag or r+)

::: js/src/wasm/AsmJS.cpp
@@ +1470,4 @@
>      ArrayViewVector       arrayViews_;
>  
>      // State used to build the AsmJSModule in finish():
> +    CompilerEnvironment   cenv_;

nit: please name this compilerEnv_

::: js/src/wasm/WasmCompile.cpp
@@ +388,4 @@
>      return true;
>  }
>  
> +CompilerEnvironment::CompilerEnvironment(const CompileArgs& args)

(it's a bit weird that the declaration is in WasmValidate.h while the definition is here in WasmCompile.cpp)

::: js/src/wasm/WasmValidate.h
@@ +57,5 @@
> +    // What to do on freeze()
> +    enum State {
> +        Warm,                   // Compute everything from args_
> +        Chilled,                // Compute only gcTypes_
> +        Frozen                  // Assert

Uh, this isn't very eloquent. One cannot understand which means what by only reading the State enum values; even you had to add these comments to explicit them.

I think the construction of new state from previous state could be expressed more explicitly. It seems things could be simpler if we had a few different structures, each encapsulating the precise state at a given time, each of them being constructed from the previous one. Say, for instance,

DeferredCompilerEnvironment(const CompileArgs&);
InitialCompilerEnvironment(const DeferredCompilerEnvironment&, maybe the GC enum);
(Settled)CompilerEnvironment(const DeferredCompilerEnvironment&, maybe the GC enum);

Then, the two freeze() methods could be renamed "init()" and "settle()". Or, as these names are just suggestions, they could just follow the naming of the structures they pertain to.

Does that make sense, and could it be done? It seems having a tagged union hidden in CompilerEnvironment would even be enough.

Note that between the Frozen and Chilled steps, we don't need to maintain CompileArgs, I think. Also, you could even spare the enum altogether by using Maybe<>s that get emplaced and emptied at different times, and infer the current state by looking at which Maybes are initialized.

@@ +127,5 @@
>      //
> +    // For now, the value is used to control whether we emit code to suppress GC
> +    // while wasm activations are on the stack.
> +    const HasGcTypes           gcTypesConfigured;
> +    CompilerEnvironment* const cenv;

nit: please rename cenv (in attribute/function declaration/definition/argument names) to compilerEnv
(In reply to Lars T Hansen [:lth] from comment #3)
> One thing I've actually not tested here is the mixing of ion-compiled and
> baseline-compiled code I described in comment 1.  I'll investigate + write
> some test cases, but it'll be good to get some eyes on the patch in any
> case, so I'll leave the r? up.

Clearing this needinfo, since you made a test since then.
Flags: needinfo?(bbouvier)
Assignee

Comment 7

10 months ago
(In reply to Benjamin Bouvier [:bbouvier] from comment #5)
> Comment on attachment 9006129 [details] [diff] [review]
> bug1487329-select-compiler-by-content.patch
> 
> Review of attachment 9006129 [details] [diff] [review]:
> -----------------------------------------------------------------
> 
> ::: js/src/wasm/WasmCompile.cpp
> @@ +388,4 @@
> >      return true;
> >  }
> >  
> > +CompilerEnvironment::CompilerEnvironment(const CompileArgs& args)
> 
> (it's a bit weird that the declaration is in WasmValidate.h while the
> definition is here in WasmCompile.cpp)

Yes, but it's C++; what can you do?  :-/

The type definition can't go into WasmCompile.h because that can't be included from WasmValidate.h, but WasmValidate.h needs the definition.  I could further expose it by lifting it to WasmTypes.h but that doesn't really seem any better.

On the other hand, the implementation should definitely not go in WasmValidate.cpp, since it's about compiler-internal matters.

> ::: js/src/wasm/WasmValidate.h
> @@ +57,5 @@
> > +    // What to do on freeze()
> > +    enum State {
> > +        Warm,                   // Compute everything from args_
> > +        Chilled,                // Compute only gcTypes_
> > +        Frozen                  // Assert
> 
> Uh, this isn't very eloquent. One cannot understand which means what by only
> reading the State enum values; even you had to add these comments to
> explicit them.

I didn't have to, because I knew what they meant, but I did anyway :)

> I think the construction of new state from previous state could be expressed
> more explicitly. It seems things could be simpler if we had a few different
> structures, each encapsulating the precise state at a given time, each of
> them being constructed from the previous one. Say, for instance,
> 
> DeferredCompilerEnvironment(const CompileArgs&);
> InitialCompilerEnvironment(const DeferredCompilerEnvironment&, maybe the GC
> enum);
> (Settled)CompilerEnvironment(const DeferredCompilerEnvironment&, maybe the
> GC enum);

Note that this does not work by itself, since in several cases the cenv starts out in the state now called Chilled, with pre-selected values for several fields but the GC state unknown.

> Does that make sense, and could it be done? It seems having a tagged union
> hidden in CompilerEnvironment would even be enough.

I expect it could be done, but I don't really want to do that.  It seems to me that it adds quite a bit of protocol that doesn't simplify anything.  I agree that the state names are not well chosen, and I will find something better, but the structure of the type actually suits the current purpose well, and when the --wasm-gc switch goes away it will be further simplified.

> Note that between the Frozen and Chilled steps, we don't need to maintain
> CompileArgs, I think.

I'm not sure how that matters?  If the state is Chilled then the args_ member is always NULL; there's no way to go from Warm to Chilled.  The only possible transitions are Warm -> Frozen and Chilled -> Frozen.

> Also, you could even spare the enum altogether by
> using Maybe<>s that get emplaced and emptied at different times, and infer
> the current state by looking at which Maybes are initialized.

Yeah, I thought about that, but it doesn't simplify anything.

I'll cancel review and try to clean up the state machine a little so that it's more obvious what's going on.
Assignee

Updated

10 months ago
Attachment #9006129 - Flags: review?(bbouvier)
Assignee

Comment 8

10 months ago
I think that apart from the introduction of a union inside CompilerEnvironment to clarify liveness of fields, this is all renaming: cenv -> compilerEnv as you requested; then the freeze/frozen nomenclature has become computeParameters / isComputed; and the names of the states have been changed to make it clear what they are for and how the state transitions behave.

I have not tried to move the type definitions, I'm reasonably sure it's best where it is right now.
Attachment #9006129 - Attachment is obsolete: true
Attachment #9006227 - Flags: review?(bbouvier)
Comment on attachment 9006227 [details] [diff] [review]
bug1487329-select-compiler-by-content-v2.patch

Review of attachment 9006227 [details] [diff] [review]:
-----------------------------------------------------------------

::: js/src/wasm/WasmCompile.cpp
@@ +98,3 @@
>      sharedMemoryEnabled = cx->realm()->creationOptions().getSharedMemoryAndAtomicsEnabled();
>      gcTypesConfigured = gcEnabled ? HasGcTypes::True : HasGcTypes::False;
> +    testTiering = (cx->options().testWasmAwaitTier2() || JitOptions.wasmDelayTier2);

nit: unnecessary parens
Attachment #9006227 - Flags: review?(bbouvier) → review+
Comment on attachment 9006164 [details] [diff] [review]
bug1487329-test-ion-with-wasm-gc.patch

Review of attachment 9006164 [details] [diff] [review]:
-----------------------------------------------------------------

::: js/src/jit-test/tests/wasm/gc/ion-and-baseline.js
@@ +55,5 @@
> +      (type $gtype (func (result i32)))
> +
> +      (elem (i32.const 2) $h $i)
> +
> +      ;; Should fail because of the type mismatch

s/type/signature/ (or func type)

@@ +59,5 @@
> +      ;; Should fail because of the type mismatch
> +      (func (export "test_f")
> +       (call_indirect $ftype (i32.const 37) (i32.const 0)))
> +
> +      ;; Should fail because the return value is not acceptable in this module

It's actually a signature mismatch, right?
Attachment #9006164 - Flags: review?(bbouvier) → review+

Comment 11

10 months ago
Pushed by lhansen@mozilla.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/7e8d4a168960
Select wasm baseline compiler if content opts into gc types. r=bbouvier
https://hg.mozilla.org/integration/mozilla-inbound/rev/0c373148a649
test that ion-compiled code does not blow up when --wasm-gc is enabled. r=bbouvier

Comment 12

10 months ago
Backed out 2 changesets (bug 1487329) for build bustages in builds/worker/workspace/build/src/js/src/wasm/WasmValidate.h. CLOSED TREE

Log:
https://treeherder.mozilla.org/logviewer.html#?job_id=197559700&repo=mozilla-inbound&lineNumber=11947

INFO -  make[4]: Entering directory '/builds/worker/workspace/build/src/obj-firefox/js/src'
[task 2018-09-05T09:03:41.803Z] 09:03:41     INFO -  /builds/worker/workspace/build/src/sccache2/sccache /builds/worker/workspace/build/src/clang/bin/clang++ -o Unified_cpp_js_src2.o -c -flto=thin -I/builds/worker/workspace/build/src/obj-firefox/dist/system_wrappers -include /builds/worker/workspace/build/src/config/gcc_hidden.h -DDEBUG=1 -DENABLE_BINARYDATA -DENABLE_WASM_BULKMEM_OPS -DENABLE_WASM_SATURATING_TRUNC_OPS -DENABLE_WASM_THREAD_OPS -DENABLE_WASM_GC -DWASM_PRIVATE_REFTYPES -DWASM_HUGE_MEMORY -DJS_CACHEIR_SPEW -DENABLE_SHARED_ARRAY_BUFFER -DEXPORT_JS_API -DJS_HAS_CTYPES '-DDLL_PREFIX="lib"' '-DDLL_SUFFIX=".so"' -DFFI_BUILDING -DMOZ_HAS_MOZGLUE -I/builds/worker/workspace/build/src/js/src -I/builds/worker/workspace/build/src/obj-firefox/js/src -I/builds/worker/workspace/build/src/obj-firefox/js/src/ctypes/libffi/include -I/builds/worker/workspace/build/src/js/src/ctypes/libffi/src/x86 -I/builds/worker/workspace/build/src/obj-firefox/dist/include -I/builds/worker/workspace/build/src/obj-firefox/dist/include/nspr -fPIC -DMOZILLA_CLIENT -include /builds/worker/workspace/build/src/obj-firefox/js/src/js-confdefs.h -Qunused-arguments -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -Qunused-arguments -Wall -Wempty-body -Wignored-qualifiers -Woverloaded-virtual -Wpointer-arith -Wshadow-field-in-constructor-modified -Wsign-compare -Wtype-limits -Wunreachable-code -Wunreachable-code-return -Wwrite-strings -Wno-invalid-offsetof -Wclass-varargs -Wfloat-overflow-conversion -Wfloat-zero-conversion -Wloop-analysis -Wc++1z-compat -Wc++2a-compat -Wcomma -Wimplicit-fallthrough -Werror=non-literal-null-conversion -Wstring-conversion -Wtautological-overlap-compare -Wno-inline-new-delete -Wno-error=deprecated-declarations -Wno-error=array-bounds -Wformat -Wformat-security -Wno-gnu-zero-variadic-macro-arguments -Wno-noexcept-type -Wno-unknown-warning-option -Wno-return-type-c-linkage -D_GLIBCXX_USE_CXX11_ABI=0 -fno-sized-deallocation -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fno-rtti -ffunction-sections -fdata-sections -fno-exceptions -fno-math-errno -pthread -pipe -g -Xclang -load -Xclang /builds/worker/workspace/build/src/obj-firefox/build/clang-plugin/libclang-plugin.so -Xclang -add-plugin -Xclang moz-check -O1 -fno-omit-frame-pointer -Werror -Wno-shadow -Werror=format -fno-strict-aliasing  -MD -MP -MF .deps/Unified_cpp_js_src2.o.pp   /builds/worker/workspace/build/src/obj-firefox/js/src/Unified_cpp_js_src2.cpp
[task 2018-09-05T09:03:41.811Z] 09:03:41     INFO -  In file included from /builds/worker/workspace/build/src/obj-firefox/js/src/Unified_cpp_js_src2.cpp:29:
[task 2018-09-05T09:03:41.811Z] 09:03:41     INFO -  In file included from /builds/worker/workspace/build/src/js/src/builtin/TestingFunctions.cpp:76:
[task 2018-09-05T09:03:41.811Z] 09:03:41     INFO -  In file included from /builds/worker/workspace/build/src/js/src/wasm/WasmModule.h:29:
[task 2018-09-05T09:03:41.811Z] 09:03:41     INFO -  /builds/worker/workspace/build/src/js/src/wasm/WasmValidate.h:86:5: error: bad implicit conversion constructor for 'CompilerEnvironment'
[task 2018-09-05T09:03:41.811Z] 09:03:41     INFO -      CompilerEnvironment(const CompileArgs& args);
[task 2018-09-05T09:03:41.811Z] 09:03:41     INFO -      ^
[task 2018-09-05T09:03:41.811Z] 09:03:41     INFO -  /builds/worker/workspace/build/src/js/src/wasm/WasmValidate.h:86:5: note: consider adding the explicit keyword to the constructor
[task 2018-09-05T09:03:41.811Z] 09:03:41     INFO -      CompilerEnvironment(const CompileArgs& args);
[task 2018-09-05T09:03:41.811Z] 09:03:41     INFO -      ^
[task 2018-09-05T09:03:41.811Z] 09:03:41     INFO -      explicit
[task 2018-09-05T09:03:41.811Z] 09:03:41     INFO -  1 error generated.
[task 2018-09-05T09:03:41.812Z] 09:03:41     INFO -  /builds/worker/workspace/build/src/config/rules.mk:1110: recipe for target 'Unified_cpp_js_src2.o' failed
[task 2018-09-05T09:03:41.812Z] 09:03:41     INFO -  make[4]: *** [Unified_cpp_js_src2.o] Error 1
[task 2018-09-05T09:03:41.812Z] 09:03:41     INFO -  make[4]: Leaving directory '/builds/worker/workspace/build/src/obj-firefox/js/src'
[task 2018-09-05T09:03:41.812Z] 09:03:41     INFO -  make[4]: *** Waiting for unfinished jobs....
[task 2018-09-05T09:03:41.812Z] 09:03:41     INFO -  make[4]: Entering directory '/builds/worker/workspace/build/src/obj-firefox/media/libvpx'
[task 2018-09-05T09:03:41.812Z] 09:03:41     INFO -  make[4]: Leaving directory '/builds/worker/workspace/build/src/obj-firefox/media/libvpx'
[task 2018-09-05T09:03:41.827Z] 09:03:41     INFO -  make[4]: Entering directory '/builds/worker/workspace/build/src/obj-firefox/security/certverifier/tests/gtest'
[task 2018-09-05T09:03:41.827Z] 09:03:41     INFO -  /builds/worker/workspace/build/src/sccache2/sccache /builds/worker/workspace/build/src/clang/bin/clang++ -o MultiLogCTVerifierTest.o -c -flto=thin -I/builds/worker/workspace/build/src/obj-firefox/dist/stl_wrappers -I/builds/worker/workspace/build/src/obj-firefox/dist/system_wrappers -include /builds/worker/workspace/build/src/config/gcc_hidden.h -DDEBUG=1 -DSTATIC_EXPORTABLE_JS_API -DMOZILLA_INTERNAL_API -DIMPL_LIBXUL -I/builds/worker/workspace/build/src/security/certverifier/tests/gtest -I/builds/worker/workspace/build/src/obj-firefox/security/certverifier/tests/gtest -I/builds/worker/workspace/build/src/security/certverifier -I/builds/worker/workspace/build/src/security/manager/ssl -I/builds/worker/workspace/build/src/security/pkix/include -I/builds/worker/workspace/build/src/security/pkix/lib -I/builds/worker/workspace/build/src/obj-firefox/dist/include -I/builds/worker/workspace/build/src/obj-firefox/dist/include/nspr -I/builds/worker/workspace/build/src/obj-firefox/dist/include/nss -fPIC -DMOZILLA_CLIENT -include /builds/worker/workspace/build/src/obj-firefox/mozilla-config.h -Qunused-arguments -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -Qunused-arguments -Wall -Wempty-body -Wignored-qualifiers -Woverloaded-virtual -Wpointer-arith -Wshadow-field-in-constructor-modified -Wsign-compare -Wtype-limits -Wunreachable-code -Wunreachable-code-return -Wwrite-strings -Wno-invalid-offsetof -Wclass-varargs -Wfloat-overflow-conversion -Wfloat-zero-conversion -Wloop-analysis -Wc++1z-compat -Wc++2a-compat -Wcomma -Wimplicit-fallthrough -Werror=non-literal-null-conversion -Wstring-conversion -Wtautological-overlap-compare -Wno-inline-new-delete -Wno-error=deprecated-declarations -Wno-error=array-bounds -Wformat -Wformat-security -Wno-gnu-zero-variadic-macro-arguments -Wno-unknown-warning-option -Wno-return-type-c-linkage -D_GLIBCXX_USE_CXX11_ABI=0 -fno-sized-deallocation -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fno-exceptions -fno-strict-aliasing -fno-rtti -ffunction-sections -fdata-sections -fno-exceptions -fno-math-errno -pthread -pipe -g -Xclang -load -Xclang /builds/worker/workspace/build/src/obj-firefox/build/clang-plugin/libclang-plugin.so -Xclang -add-plugin -Xclang moz-check -O1 -fno-omit-frame-pointer -Werror  -MD -MP -MF .deps/MultiLogCTVerifierTest.o.pp   /builds/worker/workspace/build/src/security/certverifier/tests/gtest/MultiLogCTVerifierTest.cpp
[task 2018-09-05T09:03:41.827Z] 09:03:41     INFO -  make[4]: Leaving directory '/builds/worker/workspace/build/src/obj-firefox/security/certverifier/tests/gtest'
[task 2018-09-05T09:03:41.831Z] 09:03:41     INFO -  make[4]: Entering directory '/builds/worker/workspace/build/src/obj-firefox/security/certverifier/tests/gtest'
[task 2018-09-05T09:03:41.831Z] 09:03:41     INFO -  make[4]: Leaving directory '/builds/worker/workspace/build/src/obj-firefox/security/certverifier/tests/gtest'
[task 2018-09-05T09:03:41.851Z] 09:03:41     INFO -  make[4]: Entering directory '/builds/worker/workspace/build/src/obj-firefox/security/certverifier/tests/gtest'
[task 2018-09-05T09:03:41.852Z] 09:03:41     INFO -  make[4]: Leaving directory '/builds/worker/workspace/build/src/obj-firefox/security/certverifier/tests/gtest'
[task 2018-09-05T09:03:41.889Z] 09:03:41     INFO -  make[4]: Entering directory '/builds/worker/workspace/build/src/obj-firefox/media/libvpx'
[task 2018-09-05T09:03:41.889Z] 09:03:41     INFO -  /builds/worker/workspace/build/src/sccache2/sccache /builds/worker/workspace/build/src/clang/bin/clang -std=gnu99 -o loopfilter.o -c -flto=thin -I/builds/worker/workspace/build/src/obj-firefox/dist/system_wrappers -include /builds/worker/workspace/build/src/config/gcc_hidden.h -DDEBUG=1 -DHAVE_CONFIG_H=vpx_config.h -DSTATIC_EXPORTABLE_JS_API -DMOZ_HAS_MOZGLUE -DMOZILLA_INTERNAL_API -DIMPL_LIBXUL -I/builds/worker/workspace/build/src/media/libvpx -I/builds/worker/workspace/build/src/obj-firefox/media/libvpx -I/builds/worker/workspace/build/src/media/libvpx/config/linux/x64 -I/builds/worker/workspace/build/src/media/libvpx/config -I/builds/worker/workspace/build/src/media/libvpx/libvpx -I/builds/worker/workspace/build/src/obj-firefox/dist/include -I/builds/worker/workspace/build/src/obj-firefox/dist/include/nspr -I/builds/worker/workspace/build/src/obj-firefox/dist/include/nss -fPIC -include /builds/worker/workspace/build/src/obj-firefox/mozilla-config.h -DMOZILLA_CLIENT -Qunused-arguments -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fno-strict-aliasing -ffunction-sections -fdata-sections -fno-math-errno -pthread -pipe -g -Xclang -load -Xclang /builds/worker/workspace/build/src/obj-firefox/build/clang-plugin/libclang-plugin.so -Xclang -add-plugin -Xclang moz-check -O1 -fno-omit-frame-pointer -Qunused-arguments -Wall -Wempty-body -Wignored-qualifiers -Wpointer-arith -Wshadow-field-in-constructor-modified -Wsign-compare -Wtype-limits -Wunreachable-code -Wunreachable-code-return -Wclass-varargs -Wfloat-overflow-conversion -Wfloat-zero-conversion -Wloop-analysis -Werror=non-literal-null-conversion -Wstring-conversion -Wtautological-overlap-compare -Wno-error=deprecated-declarations -Wno-error=array-bounds -Wformat -Wformat-security -Wno-gnu-zero-variadic-macro-arguments -Wno-sign-compare -Wno-unused-function -Wno-unreachable-code -Wno-unneeded-internal-declaration  -MD -MP -MF .deps/loopfilter.o.pp   /builds/worker/workspace/build/src/media/libvpx/libvpx/vpx_dsp/loopfilter.c
[task 2018-09-05T09:03:41.889Z] 09:03:41     INFO -  make[4]: Leaving directory '/builds/worker/workspace/build/src/obj-firefox/media/libvpx'
[task 2018-09-05T09:03:41.909Z] 09:03:41     INFO -  make[4]: Entering directory '/builds/worker/workspace/build/src/obj-firefox/media/libvpx'
[task 2018-09-05T09:03:41.909Z] 09:03:41     INFO -  make[4]: Leaving directory '/builds/worker/workspace/build/src/obj-firefox/media/libvpx'
[task 2018-09-05T09:03:41.925Z] 09:03:41     INFO -  make[4]: Entering directory '/builds/worker/workspace/build/src/obj-firefox/config/external/icu/i18n'

Push with failures:
https://treeherder.mozilla.org/#/jobs?repo=mozilla-inbound&revision=0c373148a649d6e0c0e97a5f94e5d873d345f505

Backout:
https://hg.mozilla.org/integration/mozilla-inbound/rev/15812ad59a9019fcf40af44bff598007c7e1bb0e
Flags: needinfo?(lhansen)

Updated

10 months ago
Attachment #9006480 - Attachment is obsolete: true

Comment 14

10 months ago
Pushed by lhansen@mozilla.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/7c4e4e064d71
Select wasm baseline compiler if content opts into gc types. r=bbouvier
https://hg.mozilla.org/integration/mozilla-inbound/rev/c8b36a77fa7c
test that ion-compiled code does not blow up when --wasm-gc is enabled. r=bbouvier

Comment 16

10 months ago
bugherder
https://hg.mozilla.org/mozilla-central/rev/7c4e4e064d71
https://hg.mozilla.org/mozilla-central/rev/c8b36a77fa7c
Status: ASSIGNED → RESOLVED
Closed: 10 months ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla64
You need to log in before you can comment on or make changes to this bug.