Changeset 215565 in webkit for trunk/Source/JavaScriptCore/ftl/FTLOutput.cpp
- Timestamp:
- Apr 20, 2017, 10:55:44 AM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/ftl/FTLOutput.cpp
r211670 r215565 1 1 /* 2 * Copyright (C) 2013-201 6Apple Inc. All rights reserved.2 * Copyright (C) 2013-2017 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 30 30 31 31 #include "B3ArgumentRegValue.h" 32 #include "B3AtomicValue.h" 32 33 #include "B3BasicBlockInlines.h" 33 34 #include "B3CCallValue.h" … … 441 442 } 442 443 443 voidOutput::store(LValue value, TypedPointer pointer)444 LValue Output::store(LValue value, TypedPointer pointer) 444 445 { 445 446 LValue store = m_block->appendNew<MemoryValue>(m_proc, Store, origin(), value, pointer.value()); 446 447 m_heaps->decorateMemory(pointer.heap(), store); 448 return store; 447 449 } 448 450 … … 455 457 } 456 458 457 voidOutput::store32As8(LValue value, TypedPointer pointer)459 LValue Output::store32As8(LValue value, TypedPointer pointer) 458 460 { 459 461 LValue store = m_block->appendNew<MemoryValue>(m_proc, Store8, origin(), value, pointer.value()); 460 462 m_heaps->decorateMemory(pointer.heap(), store); 461 } 462 463 void Output::store32As16(LValue value, TypedPointer pointer) 463 return store; 464 } 465 466 LValue Output::store32As16(LValue value, TypedPointer pointer) 464 467 { 465 468 LValue store = m_block->appendNew<MemoryValue>(m_proc, Store16, origin(), value, pointer.value()); 466 469 m_heaps->decorateMemory(pointer.heap(), store); 470 return store; 467 471 } 468 472 … … 664 668 } 665 669 670 LValue Output::atomicXchgAdd(LValue operand, TypedPointer pointer, Width width) 671 { 672 LValue result = m_block->appendNew<AtomicValue>(m_proc, AtomicXchgAdd, origin(), width, operand, pointer.value(), 0, HeapRange(), HeapRange()); 673 m_heaps->decorateMemory(pointer.heap(), result); 674 return result; 675 } 676 677 LValue Output::atomicXchgAnd(LValue operand, TypedPointer pointer, Width width) 678 { 679 LValue result = m_block->appendNew<AtomicValue>(m_proc, AtomicXchgAnd, origin(), width, operand, pointer.value(), 0, HeapRange(), HeapRange()); 680 m_heaps->decorateMemory(pointer.heap(), result); 681 return result; 682 } 683 684 LValue Output::atomicXchgOr(LValue operand, TypedPointer pointer, Width width) 685 { 686 LValue result = m_block->appendNew<AtomicValue>(m_proc, AtomicXchgOr, origin(), width, operand, pointer.value(), 0, HeapRange(), HeapRange()); 687 m_heaps->decorateMemory(pointer.heap(), result); 688 return result; 689 } 690 691 LValue Output::atomicXchgSub(LValue operand, TypedPointer pointer, Width width) 692 { 693 LValue result = m_block->appendNew<AtomicValue>(m_proc, AtomicXchgSub, origin(), width, operand, pointer.value(), 0, HeapRange(), HeapRange()); 694 m_heaps->decorateMemory(pointer.heap(), result); 695 return result; 696 } 697 698 LValue Output::atomicXchgXor(LValue operand, TypedPointer pointer, Width width) 699 { 700 LValue result = m_block->appendNew<AtomicValue>(m_proc, AtomicXchgXor, origin(), width, operand, pointer.value(), 0, HeapRange(), HeapRange()); 701 m_heaps->decorateMemory(pointer.heap(), result); 702 return result; 703 } 704 705 LValue Output::atomicXchg(LValue operand, TypedPointer pointer, Width width) 706 { 707 LValue result = m_block->appendNew<AtomicValue>(m_proc, AtomicXchg, origin(), width, operand, pointer.value(), 0, HeapRange(), HeapRange()); 708 m_heaps->decorateMemory(pointer.heap(), result); 709 return result; 710 } 711 712 LValue Output::atomicStrongCAS(LValue expected, LValue newValue, TypedPointer pointer, Width width) 713 { 714 LValue result = m_block->appendNew<AtomicValue>(m_proc, AtomicStrongCAS, origin(), width, expected, newValue, pointer.value(), 0, HeapRange(), HeapRange()); 715 m_heaps->decorateMemory(pointer.heap(), result); 716 return result; 717 } 718 666 719 void Output::jump(LBasicBlock destination) 667 720 { … … 777 830 } 778 831 779 voidOutput::store(LValue value, TypedPointer pointer, StoreType type)832 LValue Output::store(LValue value, TypedPointer pointer, StoreType type) 780 833 { 781 834 switch (type) { 782 835 case Store32As8: 783 store32As8(value, pointer); 784 return; 836 return store32As8(value, pointer); 785 837 case Store32As16: 786 store32As16(value, pointer); 787 return; 838 return store32As16(value, pointer); 788 839 case Store32: 789 store32(value, pointer); 790 return; 840 return store32(value, pointer); 791 841 case Store64: 792 store64(value, pointer); 793 return; 842 return store64(value, pointer); 794 843 case StorePtr: 795 storePtr(value, pointer); 796 return; 844 return storePtr(value, pointer); 797 845 case StoreFloat: 798 storeFloat(value, pointer); 799 return; 846 return storeFloat(value, pointer); 800 847 case StoreDouble: 801 storeDouble(value, pointer); 802 return; 848 return storeDouble(value, pointer); 803 849 } 804 850 RELEASE_ASSERT_NOT_REACHED(); 851 return nullptr; 805 852 } 806 853
Note:
See TracChangeset
for help on using the changeset viewer.