| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- //-------------------------------------------------------------------------------------------------------
- // Copyright (C) Microsoft. All rights reserved.
- // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
- //-------------------------------------------------------------------------------------------------------
- #include "Backend.h"
- int
- DefaultComparer<CaseNode *>::Compare(CaseNode* caseNode1, CaseNode* caseNode2)
- {
- int caseVal1 = caseNode1->GetUpperBoundIntConst();
- int caseVal2 = caseNode2->GetUpperBoundIntConst();
- uint32 caseOffset1 = caseNode1->GetOffset();
- uint32 caseOffset2 = caseNode2->GetOffset();
- if (caseVal1 == caseVal2)
- {
- return caseOffset1 - caseOffset2;
- }
- if (caseVal1 > caseVal2) return 1;
- return -1;
- }
- bool
- DefaultComparer<CaseNode *>::Equals(CaseNode * caseNode1, CaseNode* caseNode2)
- {
- if(caseNode1->IsUpperBoundIntConst() && caseNode2->IsUpperBoundIntConst())
- {
- int caseVal1 = caseNode1->GetUpperBoundIntConst();
- int caseVal2 = caseNode2->GetUpperBoundIntConst();
- return caseVal1 == caseVal2;
- }
- else if(caseNode1->IsUpperBoundStrConst() && caseNode2->IsUpperBoundStrConst())
- {
- JITJavascriptString * caseVal1 = caseNode1->GetUpperBoundStrConst();
- JITJavascriptString * caseVal2 = caseNode2->GetUpperBoundStrConst();
- return JITJavascriptString::Equals(caseVal1, caseVal2);
- }
- else
- {
- AssertMsg(false, "Should not reach here. CaseNodes should store only string or integer case values");
- return false;
- }
- }
- uint
- DefaultComparer<CaseNode *>::GetHashCode(CaseNode* caseNode)
- {
- return (uint)caseNode->GetUpperBoundIntConst();
- }
|