Changeset 39961 in webkit for trunk/JavaScriptCore/parser/Nodes.h


Ignore:
Timestamp:
Jan 15, 2009, 10:52:13 PM (16 years ago)
Author:
[email protected]
Message:

2009-01-15 Gavin Barraclough <[email protected]>

Reviewed by Oliver Hunt.

Add support in ResultType to track that the results of bitops
are always of type int32_t.

  • parser/Nodes.cpp: (JSC::ReadModifyResolveNode::emitBytecode): (JSC::ReadModifyDotNode::emitBytecode): (JSC::ReadModifyBracketNode::emitBytecode):
  • parser/Nodes.h: (JSC::ExpressionNode::): (JSC::BooleanNode::): (JSC::NumberNode::): (JSC::StringNode::): (JSC::PrePostResolveNode::): (JSC::TypeOfResolveNode::): (JSC::TypeOfValueNode::): (JSC::UnaryPlusNode::): (JSC::NegateNode::): (JSC::BitwiseNotNode::): (JSC::LogicalNotNode::): (JSC::MultNode::): (JSC::DivNode::): (JSC::ModNode::): (JSC::SubNode::): (JSC::LeftShiftNode::): (JSC::RightShiftNode::): (JSC::UnsignedRightShiftNode::): (JSC::LessNode::): (JSC::GreaterNode::): (JSC::LessEqNode::): (JSC::GreaterEqNode::): (JSC::InstanceOfNode::): (JSC::EqualNode::): (JSC::NotEqualNode::): (JSC::StrictEqualNode::): (JSC::NotStrictEqualNode::): (JSC::BitAndNode::): (JSC::BitOrNode::): (JSC::BitXOrNode::): (JSC::LogicalOpNode::):
  • parser/ResultType.h: (JSC::ResultType::isInt32): (JSC::ResultType::isNotNumber): (JSC::ResultType::booleanType): (JSC::ResultType::numberType): (JSC::ResultType::numberTypeCanReuse): (JSC::ResultType::numberTypeCanReuseIsInt32): (JSC::ResultType::stringOrNumberTypeCanReuse): (JSC::ResultType::stringType): (JSC::ResultType::unknownType): (JSC::ResultType::forAdd): (JSC::ResultType::forBitOp): (JSC::OperandTypes::OperandTypes):
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/parser/Nodes.h

    r39951 r39961  
    157157    class ExpressionNode : public Node {
    158158    public:
    159         ExpressionNode(JSGlobalData* globalData, ResultType resultDesc = ResultType::unknown()) JSC_FAST_CALL
     159        ExpressionNode(JSGlobalData* globalData, ResultType resultDesc = ResultType::unknownType()) JSC_FAST_CALL
    160160            : Node(globalData)
    161161            , m_resultDesc(resultDesc)
     
    217217    public:
    218218        BooleanNode(JSGlobalData* globalData, bool value) JSC_FAST_CALL
    219             : ExpressionNode(globalData, ResultType::boolean())
     219            : ExpressionNode(globalData, ResultType::booleanType())
    220220            , m_value(value)
    221221        {
     
    233233    public:
    234234        NumberNode(JSGlobalData* globalData, double v) JSC_FAST_CALL
    235             : ExpressionNode(globalData, ResultType::constNumber())
     235            : ExpressionNode(globalData, ResultType::numberType())
    236236            , m_double(v)
    237237        {
     
    252252    public:
    253253        StringNode(JSGlobalData* globalData, const Identifier& v) JSC_FAST_CALL
    254             : ExpressionNode(globalData, ResultType::string())
     254            : ExpressionNode(globalData, ResultType::stringType())
    255255            , m_value(v)
    256256        {
     
    774774    public:
    775775        PrePostResolveNode(JSGlobalData* globalData, const Identifier& ident, unsigned divot, unsigned startOffset, unsigned endOffset) JSC_FAST_CALL
    776             : ExpressionNode(globalData, ResultType::constNumber()) // could be reusable for pre?
     776            : ExpressionNode(globalData, ResultType::numberType()) // could be reusable for pre?
    777777            , ThrowableExpressionData(divot, startOffset, endOffset)
    778778            , m_ident(ident)
     
    954954    public:
    955955        TypeOfResolveNode(JSGlobalData* globalData, const Identifier& ident) JSC_FAST_CALL
    956             : ExpressionNode(globalData, ResultType::string())
     956            : ExpressionNode(globalData, ResultType::stringType())
    957957            , m_ident(ident)
    958958        {
     
    970970    public:
    971971        TypeOfValueNode(JSGlobalData* globalData, ExpressionNode* expr) JSC_FAST_CALL
    972             : ExpressionNode(globalData, ResultType::string())
     972            : ExpressionNode(globalData, ResultType::stringType())
    973973            , m_expr(expr)
    974974        {
     
    10891089    public:
    10901090        UnaryPlusNode(JSGlobalData* globalData, ExpressionNode* expr) JSC_FAST_CALL
    1091             : UnaryOpNode(globalData, ResultType::constNumber(), expr)
     1091            : UnaryOpNode(globalData, ResultType::numberType(), expr)
    10921092        {
    10931093        }
     
    11011101    public:
    11021102        NegateNode(JSGlobalData* globalData, ExpressionNode* expr) JSC_FAST_CALL
    1103             : UnaryOpNode(globalData, ResultType::reusableNumber(), expr)
     1103            : UnaryOpNode(globalData, ResultType::numberTypeCanReuse(), expr)
    11041104        {
    11051105        }
     
    11111111    public:
    11121112        BitwiseNotNode(JSGlobalData* globalData, ExpressionNode* expr) JSC_FAST_CALL
    1113             : UnaryOpNode(globalData, ResultType::reusableNumber(), expr)
     1113            : UnaryOpNode(globalData, ResultType::forBitOp(), expr)
    11141114        {
    11151115        }
     
    11211121    public:
    11221122        LogicalNotNode(JSGlobalData* globalData, ExpressionNode* expr) JSC_FAST_CALL
    1123             : UnaryOpNode(globalData, ResultType::boolean(), expr)
     1123            : UnaryOpNode(globalData, ResultType::booleanType(), expr)
    11241124        {
    11251125        }
     
    11761176    public:
    11771177        MultNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments) JSC_FAST_CALL
    1178             : BinaryOpNode(globalData, ResultType::reusableNumber(), expr1, expr2, rightHasAssignments)
     1178            : BinaryOpNode(globalData, ResultType::numberTypeCanReuse(), expr1, expr2, rightHasAssignments)
    11791179        {
    11801180        }
     
    11861186    public:
    11871187        DivNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments) JSC_FAST_CALL
    1188             : BinaryOpNode(globalData, ResultType::reusableNumber(), expr1, expr2, rightHasAssignments)
     1188            : BinaryOpNode(globalData, ResultType::numberTypeCanReuse(), expr1, expr2, rightHasAssignments)
    11891189        {
    11901190        }
     
    11961196    public:
    11971197        ModNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments) JSC_FAST_CALL
    1198             : BinaryOpNode(globalData, ResultType::reusableNumber(), expr1, expr2, rightHasAssignments)
     1198            : BinaryOpNode(globalData, ResultType::numberTypeCanReuse(), expr1, expr2, rightHasAssignments)
    11991199        {
    12001200        }
     
    12161216    public:
    12171217        SubNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments) JSC_FAST_CALL
    1218             : BinaryOpNode(globalData, ResultType::reusableNumber(), expr1, expr2, rightHasAssignments)
     1218            : BinaryOpNode(globalData, ResultType::numberTypeCanReuse(), expr1, expr2, rightHasAssignments)
    12191219        {
    12201220        }
     
    12261226    public:
    12271227        LeftShiftNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments) JSC_FAST_CALL
    1228             : BinaryOpNode(globalData, ResultType::reusableNumber(), expr1, expr2, rightHasAssignments)
     1228            : BinaryOpNode(globalData, ResultType::forBitOp(), expr1, expr2, rightHasAssignments)
    12291229        {
    12301230        }
     
    12361236    public:
    12371237        RightShiftNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments) JSC_FAST_CALL
    1238             : BinaryOpNode(globalData, ResultType::reusableNumber(), expr1, expr2, rightHasAssignments)
     1238            : BinaryOpNode(globalData, ResultType::forBitOp(), expr1, expr2, rightHasAssignments)
    12391239        {
    12401240        }
     
    12461246    public:
    12471247        UnsignedRightShiftNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments) JSC_FAST_CALL
    1248             : BinaryOpNode(globalData, ResultType::reusableNumber(), expr1, expr2, rightHasAssignments)
     1248            : BinaryOpNode(globalData, ResultType::numberTypeCanReuse(), expr1, expr2, rightHasAssignments)
    12491249        {
    12501250        }
     
    12561256    public:
    12571257        LessNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments) JSC_FAST_CALL
    1258             : BinaryOpNode(globalData, ResultType::boolean(), expr1, expr2, rightHasAssignments)
     1258            : BinaryOpNode(globalData, ResultType::booleanType(), expr1, expr2, rightHasAssignments)
    12591259        {
    12601260        }
     
    12661266    public:
    12671267        GreaterNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments) JSC_FAST_CALL
    1268             : ReverseBinaryOpNode(globalData, ResultType::boolean(), expr1, expr2, rightHasAssignments)
     1268            : ReverseBinaryOpNode(globalData, ResultType::booleanType(), expr1, expr2, rightHasAssignments)
    12691269        {
    12701270        }
     
    12761276    public:
    12771277        LessEqNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments) JSC_FAST_CALL
    1278             : BinaryOpNode(globalData, ResultType::boolean(), expr1, expr2, rightHasAssignments)
     1278            : BinaryOpNode(globalData, ResultType::booleanType(), expr1, expr2, rightHasAssignments)
    12791279        {
    12801280        }
     
    12861286    public:
    12871287        GreaterEqNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments) JSC_FAST_CALL
    1288             : ReverseBinaryOpNode(globalData, ResultType::boolean(), expr1, expr2, rightHasAssignments)
     1288            : ReverseBinaryOpNode(globalData, ResultType::booleanType(), expr1, expr2, rightHasAssignments)
    12891289        {
    12901290        }
     
    13091309    public:
    13101310        InstanceOfNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments) JSC_FAST_CALL
    1311             : ThrowableBinaryOpNode(globalData, ResultType::boolean(), expr1, expr2, rightHasAssignments)
     1311            : ThrowableBinaryOpNode(globalData, ResultType::booleanType(), expr1, expr2, rightHasAssignments)
    13121312        {
    13131313        }
     
    13311331    public:
    13321332        EqualNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments) JSC_FAST_CALL
    1333             : BinaryOpNode(globalData, ResultType::boolean(), expr1, expr2, rightHasAssignments)
     1333            : BinaryOpNode(globalData, ResultType::booleanType(), expr1, expr2, rightHasAssignments)
    13341334        {
    13351335        }
     
    13421342    public:
    13431343        NotEqualNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments) JSC_FAST_CALL
    1344             : BinaryOpNode(globalData, ResultType::boolean(), expr1, expr2, rightHasAssignments)
     1344            : BinaryOpNode(globalData, ResultType::booleanType(), expr1, expr2, rightHasAssignments)
    13451345        {
    13461346        }
     
    13521352    public:
    13531353        StrictEqualNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments) JSC_FAST_CALL
    1354             : BinaryOpNode(globalData, ResultType::boolean(), expr1, expr2, rightHasAssignments)
     1354            : BinaryOpNode(globalData, ResultType::booleanType(), expr1, expr2, rightHasAssignments)
    13551355        {
    13561356        }
     
    13631363    public:
    13641364        NotStrictEqualNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments) JSC_FAST_CALL
    1365             : BinaryOpNode(globalData, ResultType::boolean(), expr1, expr2, rightHasAssignments)
     1365            : BinaryOpNode(globalData, ResultType::booleanType(), expr1, expr2, rightHasAssignments)
    13661366        {
    13671367        }
     
    13731373    public:
    13741374        BitAndNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments) JSC_FAST_CALL
    1375             : BinaryOpNode(globalData, ResultType::reusableNumber(), expr1, expr2, rightHasAssignments)
     1375            : BinaryOpNode(globalData, ResultType::forBitOp(), expr1, expr2, rightHasAssignments)
    13761376        {
    13771377        }
     
    13831383    public:
    13841384        BitOrNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments) JSC_FAST_CALL
    1385             : BinaryOpNode(globalData, ResultType::reusableNumber(), expr1, expr2, rightHasAssignments)
     1385            : BinaryOpNode(globalData, ResultType::forBitOp(), expr1, expr2, rightHasAssignments)
    13861386        {
    13871387        }
     
    13931393    public:
    13941394        BitXOrNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments) JSC_FAST_CALL
    1395             : BinaryOpNode(globalData, ResultType::reusableNumber(), expr1, expr2, rightHasAssignments)
     1395            : BinaryOpNode(globalData, ResultType::forBitOp(), expr1, expr2, rightHasAssignments)
    13961396        {
    13971397        }
     
    14061406    public:
    14071407        LogicalOpNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, LogicalOperator oper) JSC_FAST_CALL
    1408             : ExpressionNode(globalData, ResultType::boolean())
     1408            : ExpressionNode(globalData, ResultType::booleanType())
    14091409            , m_expr1(expr1)
    14101410            , m_expr2(expr2)
Note: See TracChangeset for help on using the changeset viewer.