Loading dom/bindings/Codegen.py +4 −4 Original line number Diff line number Diff line Loading @@ -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(): Loading js/src/jsfriendapi.h +10 −9 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading @@ -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) Loading js/src/shell/js.cpp +6 −6 Original line number Diff line number Diff line Loading @@ -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 */ }; Loading @@ -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 */ }; Loading @@ -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 */ }; Loading Loading
dom/bindings/Codegen.py +4 −4 Original line number Diff line number Diff line Loading @@ -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(): Loading
js/src/jsfriendapi.h +10 −9 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading @@ -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) Loading
js/src/shell/js.cpp +6 −6 Original line number Diff line number Diff line Loading @@ -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 */ }; Loading @@ -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 */ }; Loading @@ -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 */ }; Loading