- Generate and pass sequential frame indexes into the ovr_GetTrackingState call and the corresponding call to ovr_SubmitFrame
MozReview-Commit-ID: 5tJl5YJt7Eo
--HG--
extra : rebase_source : 5dbb35ea1451a9f378e28d81a8704b63b1b72b4d
Treat global variables the same as function arguments and return values: No
unsigned SIMD types allowed. This simplifies interoperation with WebAssembly.
Add a Type::isGloblVarType() which can be used to check for valid types.
Fold CheckGlobalVariableImportExpr into its single caller.
Remove Type::var(ValType) and Type::ret(ExprType). These backwards conversions
were only used for diagnostics, and we can use the existing ToCString() function
for that. Move this function form Wasm.cpp to WasmTypes.h so it can be used
everywhere.
MozReview-Commit-ID: FolGlCTVmgZ
Add Uint32x4 to NumLit and Type classes.
Reject unsigned SIMD types in function signatures to avoid confusion when
interoperating with WebAssembly.
MozReview-Commit-ID: 7FvQKKITVKR
Also move IsSimdTypeName() into builtin/SIMD.cpp and handle all SIMD type names
there too.
Use IsSimdValidOperationType(simdType, SimdOperation::Constructor) to check for
supported SIMD types in asm.js instead of depending on IsSimdTypeName() to only
return true on supported types.
MozReview-Commit-ID: FZrnPZc8zmJ
The wasm types don't have signed/unsigned SIMD integers. Add enumerators for
those unsigned simd operations that behave differently than their signed I32x4
counterparts.
Implement wasm code generation for unsigned SIMD types.
Split the convertSimd() function into two variants for conversions and bitcasts
respectively. Add a SimdSign argument to the conversion variants.
Add a SimdSign argument to the extractSimdElement() function. This is not
strictly needed for I32x4 since wasm uses I32 for both signed and unsigned ints.
It will be required for the I8x16 and I16x8 types, though, because the lane
value needs to be extended to an I32.
Split out the binarySimdComp function for binary comparisons, and thread
through a SimdSign argument.
Add a SimdSign to EmitSimdOp() and thread it through where needed.
MozReview-Commit-ID: B8FHOHzjbBX
The MSimd*::NewAsmJS() factory functions are not longer needed since the normal
MSimd*::New() functions also require the SIMD arguments to be unboxed since
bug 1244254.
Remove the trivial NewAsmJS functions here. The remaining SIMD NewAsmJS
functions will be removed in the next commit.
MozReview-Commit-ID: JtgRKZTmrzS
These two functions can also take a Type argument instead of ValType/ExprType.
This makes it possible to avoid some explicit SIMD type enumerations, and the
Type <= ValType subtyping test is no longer needed.
MozReview-Commit-ID: 1nkMDUdgLkE
When validating function calls and coercions, use a canonical Type instead of a
wasm::ExprType to express the desired return type.
This will make it possible to distinguish signed/unsigned SIMD types during
validation.
MozReview-Commit-ID: 4S0SuRRgCzm
The WebAssembly and the asm.js type systems are diverging. In particular,
WebAssembly will not distinguish signed/unsigned SIMD types, while asm.js must
since it is compatible with SIMD.js. The wasm::ValType enum also has an I64
which is not supported by asm.js
Reduce OdinMonkey's dependency on wasm::ValType by returning a canonical 'class
Type' instead from these functions:
- IsCoercionCall()
- CheckTypeAnnotation()
- CheckArgumentType()
Avoid wasm::ValType for asm.js locals. We want to allow signed/unsigned SIMD
locals.
Remove NumLit::type().
MozReview-Commit-ID: Eutj6QKqn02
This subset of the asm.js types corresponds to the Void type and all the
coercion targets. It corresponds to wasm::ExprType, except:
- asm.js does not support I64.
- asm.js distinguishes signed/unsigned SIMD types, wasm does not.
The function Type::canonicalize() maps a type into the canonical set.
Type::isCanonical() checks for membership.
This subset of Type::Which will be used to replace wasm::ValType and
wasm::ExprType in the asm.js type checking code. This makes it possible to
type-check unsigned SIMD types correctly.
Eliminate Type:checkedValueType(). Use Type::canonicalToValType() instead.
MozReview-Commit-ID: EBrCiPVYzh8
This function is only used by CheckIsVarType which is actually used for
checking function arguments.
Rename isVarType -> isArgType and CheckIsVarType -> CheckIsArgType to better
match the usage.
This frees up the concept of a "var type" for the following patch.
MozReview-Commit-ID: 4J63ammf3zS
This method is e10s-compatible. It is async, so it requires
rejiggering the test a little. This also requires fixing up a shim
version for xpcshell tests. Finally, this test is the only user of
SpecialPowers.createDOMFiles, so I removed it.