Bug 1238679 - Put JSJitInfo::depth in anonymous union. r=nbp

Add a JSJitInfo::nativeOp field which will be used to identify SIMD operations.
This commit is contained in:
Jakob Stoklund Olesen 2016-01-20 12:50:06 -08:00
parent 0da0c6a300
commit 21c90276e2
4 changed files with 12 additions and 7 deletions

View File

@ -8772,7 +8772,7 @@ class CGMemberJITInfo(CGThing):
{
{ ${opName} },
{ prototypes::id::${name} },
PrototypeTraits<prototypes::id::${name}>::Depth,
{ PrototypeTraits<prototypes::id::${name}>::Depth },
JSJitInfo::${opType},
JSJitInfo::${aliasSet}, /* aliasSet. Not relevant for setters. */
${returnType}, /* returnType. Not relevant for setters. */
@ -9152,7 +9152,7 @@ class CGStaticMethodJitinfo(CGGeneric):
"\n"
"static const JSJitInfo %s_methodinfo = {\n"
" { (JSJitGetterOp)%s },\n"
" { prototypes::id::_ID_Count }, 0, JSJitInfo::StaticMethod,\n"
" { prototypes::id::_ID_Count }, { 0 }, JSJitInfo::StaticMethod,\n"
" JSJitInfo::AliasEverything, JSVAL_TYPE_MISSING, false, false,\n"
" false, false, 0\n"
"};\n" %

View File

@ -3696,7 +3696,7 @@ IonBuilder::inlineSimdStore(CallInfo& callInfo, JSNative native, SimdTypeDescr::
}
#define ADD_NATIVE(native) const JSJitInfo JitInfo_##native { \
{ nullptr }, { uint16_t(InlinableNative::native) }, 0, JSJitInfo::InlinableNative };
{ nullptr }, { uint16_t(InlinableNative::native) }, { 0 }, JSJitInfo::InlinableNative };
INLINABLE_NATIVE_LIST(ADD_NATIVE)
#undef ADD_NATIVE

View File

@ -2339,7 +2339,12 @@ struct JSJitInfo {
js::jit::InlinableNative inlinableNative;
};
uint16_t depth;
union {
uint16_t depth;
// Additional opcode for some InlinableNative functions.
uint16_t nativeOp;
};
// These fields are carefully packed to take up 4 bytes. If you need more
// bits for whatever reason, please see if you can steal bits from existing

View File

@ -5652,7 +5652,7 @@ dom_doFoo(JSContext* cx, HandleObject obj, void* self, const JSJitMethodCallArgs
static const JSJitInfo dom_x_getterinfo = {
{ (JSJitGetterOp)dom_get_x },
{ 0 }, /* protoID */
0, /* depth */
{ 0 }, /* depth */
JSJitInfo::AliasNone, /* aliasSet */
JSJitInfo::Getter,
JSVAL_TYPE_UNKNOWN, /* returnType */
@ -5668,7 +5668,7 @@ static const JSJitInfo dom_x_getterinfo = {
static const JSJitInfo dom_x_setterinfo = {
{ (JSJitGetterOp)dom_set_x },
{ 0 }, /* protoID */
0, /* depth */
{ 0 }, /* depth */
JSJitInfo::Setter,
JSJitInfo::AliasEverything, /* aliasSet */
JSVAL_TYPE_UNKNOWN, /* returnType */
@ -5684,7 +5684,7 @@ static const JSJitInfo dom_x_setterinfo = {
static const JSJitInfo doFoo_methodinfo = {
{ (JSJitGetterOp)dom_doFoo },
{ 0 }, /* protoID */
0, /* depth */
{ 0 }, /* depth */
JSJitInfo::Method,
JSJitInfo::AliasEverything, /* aliasSet */
JSVAL_TYPE_UNKNOWN, /* returnType */