Changeset 227434 in webkit for trunk/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm
- Timestamp:
- Jan 23, 2018, 12:39:34 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm
r226940 r227434 1539 1539 loadb JSCell::m_type[t0], t2 1540 1540 subi FirstArrayType, t2 1541 bia t2, LastArrayType - FirstArrayType, .opGetByValSlow1541 biaeq t2, NumberOfTypedArrayTypesExcludingDataView, .opGetByValSlow 1542 1542 1543 1543 # Sweet, now we know that we have a typed array. Do some basic things now. … … 1545 1545 biaeq t1, JSArrayBufferView::m_length[t0], .opGetByValSlow 1546 1546 1547 # Now bisect through the various types. Note that we can treat Uint8ArrayType and 1548 # Uint8ClampedArrayType the same. 1549 bia t2, Uint8ClampedArrayType - FirstArrayType, .opGetByValAboveUint8ClampedArray 1550 1551 # We have one of Int8ArrayType .. Uint8ClampedArrayType. 1552 bia t2, Int16ArrayType - FirstArrayType, .opGetByValInt32ArrayOrUint8Array 1553 1554 # We have one of Int8ArrayType or Int16ArrayType 1555 bineq t2, Int8ArrayType - FirstArrayType, .opGetByValInt16Array 1556 1547 # Now bisect through the various types: 1548 # Int8ArrayType, 1549 # Uint8ArrayType, 1550 # Uint8ClampedArrayType, 1551 # Int16ArrayType, 1552 # Uint16ArrayType, 1553 # Int32ArrayType, 1554 # Uint32ArrayType, 1555 # Float32ArrayType, 1556 # Float64ArrayType, 1557 1558 bia t2, Uint16ArrayType - FirstArrayType, .opGetByValAboveUint16Array 1559 1560 # We have one of Int8ArrayType .. Uint16ArrayType. 1561 bia t2, Uint8ClampedArrayType - FirstArrayType, .opGetByValInt16ArrayOrUint16Array 1562 1563 # We have one of Int8ArrayType ... Uint8ClampedArrayType 1564 bineq t2, Int8ArrayType - FirstArrayType, .opGetByValUint8ArrayOrUint8ClampedArray 1565 1557 1566 # We have Int8ArrayType 1558 1567 loadbs [t3, t1], t0 1559 1568 finishIntGetByVal(t0, t1) 1560 1569 1561 .opGetByValInt16Array: 1570 .opGetByValUint8ArrayOrUint8ClampedArray: 1571 # We have either Uint8ArrayType or Uint8ClampedArrayType. They behave the same so that's cool. 1572 loadb [t3, t1], t0 1573 finishIntGetByVal(t0, t1) 1574 1575 .opGetByValInt16ArrayOrUint16Array: 1576 # We have either Int16ArrayType or Uint16ClampedArrayType. 1577 bieq t2, Uint16ArrayType - FirstArrayType, .opGetByValUint16Array 1578 1579 # We have Int16ArrayType. 1562 1580 loadhs [t3, t1, 2], t0 1563 1581 finishIntGetByVal(t0, t1) 1564 1582 1565 .opGetByValInt32ArrayOrUint8Array: 1566 # We have one of Int16Array, Uint8Array, or Uint8ClampedArray. 1567 bieq t2, Int32ArrayType - FirstArrayType, .opGetByValInt32Array 1568 1569 # We have either Uint8Array or Uint8ClampedArray. They behave the same so that's cool. 1570 loadb [t3, t1], t0 1571 finishIntGetByVal(t0, t1) 1572 1573 .opGetByValInt32Array: 1574 loadi [t3, t1, 4], t0 1575 finishIntGetByVal(t0, t1) 1576 1577 .opGetByValAboveUint8ClampedArray: 1578 # We have one of Uint16ArrayType .. Float64ArrayType. 1579 bia t2, Uint32ArrayType - FirstArrayType, .opGetByValAboveUint32Array 1580 1581 # We have either Uint16ArrayType or Uint32ArrayType. 1582 bieq t2, Uint32ArrayType - FirstArrayType, .opGetByValUint32Array 1583 1583 .opGetByValUint16Array: 1584 1584 # We have Uint16ArrayType. 1585 1585 loadh [t3, t1, 2], t0 1586 1586 finishIntGetByVal(t0, t1) 1587 1587 1588 .opGetByValAboveUint16Array: 1589 # We have one of Int32ArrayType .. Float64ArrayType. 1590 bia t2, Uint32ArrayType - FirstArrayType, .opGetByValFloat32ArrayOrFloat64Array 1591 1592 # We have either Int32ArrayType or Uint32ArrayType 1593 bineq t2, Int32ArrayType - FirstArrayType, .opGetByValUint32Array 1594 1595 # We have Int32ArrayType 1596 loadi [t3, t1, 4], t0 1597 finishIntGetByVal(t0, t1) 1598 1588 1599 .opGetByValUint32Array: 1600 # We have Uint32ArrayType. 1589 1601 # This is the hardest part because of large unsigned values. 1590 1602 loadi [t3, t1, 4], t0 … … 1592 1604 finishIntGetByVal(t0, t1) 1593 1605 1594 .opGetByVal AboveUint32Array:1606 .opGetByValFloat32ArrayOrFloat64Array: 1595 1607 # We have one of Float32ArrayType or Float64ArrayType. Sadly, we cannot handle Float32Array 1596 1608 # inline yet. That would require some offlineasm changes.
Note:
See TracChangeset
for help on using the changeset viewer.