Changeset 55834 in webkit for trunk/JavaScriptCore/assembler/MacroAssemblerARMv7.h
- Timestamp:
- Mar 10, 2010, 11:53:52 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/assembler/MacroAssemblerARMv7.h
r55633 r55834 1 1 /* 2 2 * Copyright (C) 2009 Apple Inc. All rights reserved. 3 * Copyright (C) 2010 University of Szeged 3 4 * 4 5 * Redistribution and use in source and binary forms, with or without … … 367 368 } 368 369 370 void load8(ArmAddress address, RegisterID dest) 371 { 372 if (address.type == ArmAddress::HasIndex) 373 m_assembler.ldrb(dest, address.base, address.u.index, address.u.scale); 374 else if (address.u.offset >= 0) { 375 ARMThumbImmediate armImm = ARMThumbImmediate::makeUInt12(address.u.offset); 376 ASSERT(armImm.isValid()); 377 m_assembler.ldrb(dest, address.base, armImm); 378 } else { 379 ASSERT(address.u.offset >= -255); 380 m_assembler.ldrb(dest, address.base, address.u.offset, true, false); 381 } 382 } 383 369 384 void store32(RegisterID src, ArmAddress address) 370 385 { … … 401 416 move(ImmPtr(address), addressTempRegister); 402 417 m_assembler.ldr(dest, addressTempRegister, ARMThumbImmediate::makeUInt16(0)); 418 } 419 420 void load8(ImplicitAddress address, RegisterID dest) 421 { 422 load8(setupArmAddress(address), dest); 403 423 } 404 424 … … 792 812 } 793 813 814 Jump branch8(Condition cond, RegisterID left, Imm32 right) 815 { 816 compare32(left, right); 817 return Jump(makeBranch(cond)); 818 } 819 820 Jump branch8(Condition cond, Address left, Imm32 right) 821 { 822 // use addressTempRegister incase the branch8 we call uses dataTempRegister. :-/ 823 load8(left, addressTempRegister); 824 return branch8(cond, addressTempRegister, right); 825 } 826 794 827 Jump branchTest32(Condition cond, RegisterID reg, RegisterID mask) 795 828 { … … 820 853 load32(address, addressTempRegister); 821 854 return branchTest32(cond, addressTempRegister, mask); 855 } 856 857 Jump branchTest8(Condition cond, RegisterID reg, Imm32 mask = Imm32(-1)) 858 { 859 ASSERT((cond == Zero) || (cond == NonZero)); 860 test32(reg, mask); 861 return Jump(makeBranch(cond)); 862 } 863 864 Jump branchTest8(Condition cond, Address address, Imm32 mask = Imm32(-1)) 865 { 866 ASSERT((cond == Zero) || (cond == NonZero)); 867 // use addressTempRegister incase the branchTest8 we call uses dataTempRegister. :-/ 868 load8(address, addressTempRegister); 869 return branchTest8(cond, addressTempRegister, mask); 822 870 } 823 871 … … 972 1020 } 973 1021 1022 void setTest8(Condition cond, Address address, Imm32 mask, RegisterID dest) 1023 { 1024 load8(address, dataTempRegister); 1025 test32(dataTempRegister, mask); 1026 m_assembler.it(armV7Condition(cond), false); 1027 m_assembler.mov(dest, ARMThumbImmediate::makeUInt16(1)); 1028 m_assembler.mov(dest, ARMThumbImmediate::makeUInt16(0)); 1029 } 974 1030 975 1031 DataLabel32 moveWithPatch(Imm32 imm, RegisterID dst)
Note:
See TracChangeset
for help on using the changeset viewer.