Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(33)

Side by Side Diff: src/arm/macro-assembler-arm.h

Issue 6594071: ARM: Support inlined version of %_FastAsciiArrayJoin on ARM (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: '' Created 9 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/arm/full-codegen-arm.cc ('k') | src/arm/macro-assembler-arm.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2010 the V8 project authors. All rights reserved. 1 // Copyright 2010 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 479 matching lines...) Expand 10 before | Expand all | Expand 10 after
490 void AllocateHeapNumberWithValue(Register result, 490 void AllocateHeapNumberWithValue(Register result,
491 DwVfpRegister value, 491 DwVfpRegister value,
492 Register scratch1, 492 Register scratch1,
493 Register scratch2, 493 Register scratch2,
494 Register heap_number_map, 494 Register heap_number_map,
495 Label* gc_required); 495 Label* gc_required);
496 496
497 // Copies a fixed number of fields of heap objects from src to dst. 497 // Copies a fixed number of fields of heap objects from src to dst.
498 void CopyFields(Register dst, Register src, RegList temps, int field_count); 498 void CopyFields(Register dst, Register src, RegList temps, int field_count);
499 499
500 // Copies a number of bytes from src to dst. All registers are clobbered. On
501 // exit src and dst will point to the place just after where the last byte was
502 // read or written and length will be zero.
503 void CopyBytes(Register src,
504 Register dst,
505 Register length,
506 Register scratch);
507
500 // --------------------------------------------------------------------------- 508 // ---------------------------------------------------------------------------
501 // Support functions. 509 // Support functions.
502 510
503 // Try to get function prototype of a function and puts the value in 511 // Try to get function prototype of a function and puts the value in
504 // the result register. Checks that the function really is a 512 // the result register. Checks that the function really is a
505 // function and jumps to the miss label if the fast checks fail. The 513 // function and jumps to the miss label if the fast checks fail. The
506 // function register will be untouched; the other registers may be 514 // function register will be untouched; the other registers may be
507 // clobbered. 515 // clobbered.
508 void TryGetFunctionPrototype(Register function, 516 void TryGetFunctionPrototype(Register function,
509 Register result, 517 Register result,
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after
770 // Try to convert int32 to smi. If the value is to large, preserve 778 // Try to convert int32 to smi. If the value is to large, preserve
771 // the original value and jump to not_a_smi. Destroys scratch and 779 // the original value and jump to not_a_smi. Destroys scratch and
772 // sets flags. 780 // sets flags.
773 void TrySmiTag(Register reg, Label* not_a_smi, Register scratch) { 781 void TrySmiTag(Register reg, Label* not_a_smi, Register scratch) {
774 mov(scratch, reg); 782 mov(scratch, reg);
775 SmiTag(scratch, SetCC); 783 SmiTag(scratch, SetCC);
776 b(vs, not_a_smi); 784 b(vs, not_a_smi);
777 mov(reg, scratch); 785 mov(reg, scratch);
778 } 786 }
779 787
780 void SmiUntag(Register reg) { 788 void SmiUntag(Register reg, SBit s = LeaveCC) {
781 mov(reg, Operand(reg, ASR, kSmiTagSize)); 789 mov(reg, Operand(reg, ASR, kSmiTagSize), s);
782 } 790 }
783 void SmiUntag(Register dst, Register src) { 791 void SmiUntag(Register dst, Register src, SBit s = LeaveCC) {
784 mov(dst, Operand(src, ASR, kSmiTagSize)); 792 mov(dst, Operand(src, ASR, kSmiTagSize), s);
785 } 793 }
786 794
787 // Jump the register contains a smi. 795 // Jump the register contains a smi.
788 inline void JumpIfSmi(Register value, Label* smi_label) { 796 inline void JumpIfSmi(Register value, Label* smi_label) {
789 tst(value, Operand(kSmiTagMask)); 797 tst(value, Operand(kSmiTagMask));
790 b(eq, smi_label); 798 b(eq, smi_label);
791 } 799 }
792 // Jump if either of the registers contain a non-smi. 800 // Jump if either of the registers contain a non-smi.
793 inline void JumpIfNotSmi(Register value, Label* not_smi_label) { 801 inline void JumpIfNotSmi(Register value, Label* not_smi_label) {
794 tst(value, Operand(kSmiTagMask)); 802 tst(value, Operand(kSmiTagMask));
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
965 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) 973 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__)
966 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> 974 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm->
967 #else 975 #else
968 #define ACCESS_MASM(masm) masm-> 976 #define ACCESS_MASM(masm) masm->
969 #endif 977 #endif
970 978
971 979
972 } } // namespace v8::internal 980 } } // namespace v8::internal
973 981
974 #endif // V8_ARM_MACRO_ASSEMBLER_ARM_H_ 982 #endif // V8_ARM_MACRO_ASSEMBLER_ARM_H_
OLDNEW
« no previous file with comments | « src/arm/full-codegen-arm.cc ('k') | src/arm/macro-assembler-arm.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698