зеркало из https://github.com/mozilla/gecko-dev.git
Bug 952777 - part 3 - use bitfields for integer fields in JSJitInfo; r=efaust,bz
This commit is contained in:
Родитель
d530287ab2
Коммит
8c0119e34b
|
@ -6365,17 +6365,17 @@ class CGMemberJITInfo(CGThing):
|
|||
" %s,\n"
|
||||
" %s,\n"
|
||||
" JSJitInfo::%s,\n"
|
||||
" %s, /* returnType. Not relevant for setters. */\n"
|
||||
" %s, /* isInfallible. False in setters. */\n"
|
||||
" %s, /* isMovable. Not relevant for setters. */\n"
|
||||
" %s, /* isInSlot. Only relevant for getters. */\n"
|
||||
" %s, /* returnType. Not relevant for setters. */\n"
|
||||
" JSJitInfo::%s, /* aliasSet. Not relevant for setters. */\n"
|
||||
" %s, /* Reserved slot index, if we're stored in a slot, else 0. */\n"
|
||||
" JSJitInfo::%s, /* aliasSet. Not relevant for setters. */\n"
|
||||
" %s, /* argTypes. Only relevant for methods */\n"
|
||||
" nullptr /* parallelNative */\n"
|
||||
"};\n" % (argTypesDecl, infoName, opName, protoID, depth,
|
||||
opType, failstr, movablestr, slotStr, returnType,
|
||||
aliasSet, slotIndex, argTypes))
|
||||
opType, returnType, failstr, movablestr, slotStr,
|
||||
slotIndex, aliasSet, argTypes))
|
||||
|
||||
def define(self):
|
||||
if self.member.isAttr():
|
||||
|
|
|
@ -1511,13 +1511,16 @@ struct JSJitInfo {
|
|||
// change that, come up with a different way of implementing
|
||||
// isDOMJitInfo().
|
||||
OpType type;
|
||||
bool isInfallible; /* Is op fallible? False in setters. */
|
||||
bool isMovable; /* Is op movable? To be movable the op must not
|
||||
AliasEverything, but even that might not be
|
||||
enough (e.g. in cases when it can throw). */
|
||||
bool isInSlot; /* True if this is a getter that can get a member
|
||||
from a slot of the "this" object directly. */
|
||||
JSValueType returnType; /* The return type tag. Might be JSVAL_TYPE_UNKNOWN */
|
||||
uint16_t isInfallible : 1; /* Is op fallible? False in setters. */
|
||||
uint16_t isMovable : 1; /* Is op movable? To be movable the op must
|
||||
not AliasEverything, but even that might
|
||||
not be enough (e.g. in cases when it can
|
||||
throw). */
|
||||
uint16_t isInSlot : 1; /* True if this is a getter that can get a member
|
||||
from a slot of the "this" object directly. */
|
||||
uint16_t slotIndex : 13; /* If isInSlot is true, the index of the slot to
|
||||
get the value from. Otherwise 0. */
|
||||
|
||||
AliasSet aliasSet; /* The alias set for this op. This is a _minimal_
|
||||
alias set; in particular for a method it does not
|
||||
|
@ -1526,8 +1529,6 @@ struct JSJitInfo {
|
|||
of the actual argument types being passed in. */
|
||||
// XXXbz should we have a JSGetterJitInfo subclass or something?
|
||||
// XXXbz should we have a JSValueType for the type of the member?
|
||||
uint16_t slotIndex; /* If isInSlot is true, the index of the slot to get
|
||||
the value from. Otherwise 0. */
|
||||
const ArgType* const argTypes; /* For a method, a list of sets of types that
|
||||
the function expects. This can be used,
|
||||
for example, to figure out when argument
|
||||
|
@ -1551,7 +1552,7 @@ private:
|
|||
};
|
||||
|
||||
#define JS_JITINFO_NATIVE_PARALLEL(op) \
|
||||
{{nullptr},0,0,JSJitInfo::OpType_None,false,false,false,JSVAL_TYPE_MISSING,JSJitInfo::AliasEverything,0,nullptr,op}
|
||||
{{nullptr},0,0,JSJitInfo::OpType_None,JSVAL_TYPE_MISSING,false,false,false,0,JSJitInfo::AliasEverything,nullptr,op}
|
||||
|
||||
static JS_ALWAYS_INLINE const JSJitInfo *
|
||||
FUNCTION_VALUE_TO_JITINFO(const JS::Value& v)
|
||||
|
|
|
@ -4834,12 +4834,12 @@ static const JSJitInfo dom_x_getterinfo = {
|
|||
0, /* protoID */
|
||||
0, /* depth */
|
||||
JSJitInfo::Getter,
|
||||
JSVAL_TYPE_UNKNOWN, /* returnType */
|
||||
true, /* isInfallible. False in setters. */
|
||||
true, /* isMovable */
|
||||
false, /* isInSlot */
|
||||
JSVAL_TYPE_UNKNOWN, /* returnType */
|
||||
JSJitInfo::AliasNone, /* aliasSet */
|
||||
0, /* slotIndex */
|
||||
JSJitInfo::AliasNone, /* aliasSet */
|
||||
nullptr, /* argTypes */
|
||||
nullptr /* parallelNative */
|
||||
};
|
||||
|
@ -4849,12 +4849,12 @@ static const JSJitInfo dom_x_setterinfo = {
|
|||
0, /* protoID */
|
||||
0, /* depth */
|
||||
JSJitInfo::Setter,
|
||||
JSVAL_TYPE_UNKNOWN, /* returnType */
|
||||
false, /* isInfallible. False in setters. */
|
||||
false, /* isMovable. */
|
||||
false, /* isInSlot */
|
||||
JSVAL_TYPE_UNKNOWN, /* returnType */
|
||||
JSJitInfo::AliasEverything, /* aliasSet */
|
||||
0, /* slotIndex */
|
||||
JSJitInfo::AliasEverything, /* aliasSet */
|
||||
nullptr, /* argTypes */
|
||||
nullptr /* parallelNative */
|
||||
};
|
||||
|
@ -4864,12 +4864,12 @@ static const JSJitInfo doFoo_methodinfo = {
|
|||
0, /* protoID */
|
||||
0, /* depth */
|
||||
JSJitInfo::Method,
|
||||
JSVAL_TYPE_UNKNOWN, /* returnType */
|
||||
false, /* isInfallible. False in setters. */
|
||||
false, /* isMovable */
|
||||
false, /* isInSlot */
|
||||
JSVAL_TYPE_UNKNOWN, /* returnType */
|
||||
JSJitInfo::AliasEverything, /* aliasSet */
|
||||
0, /* slotIndex */
|
||||
JSJitInfo::AliasEverything, /* aliasSet */
|
||||
nullptr, /* argTypes */
|
||||
nullptr /* parallelNative */
|
||||
};
|
||||
|
|
Загрузка…
Ссылка в новой задаче