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

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

Issue 216933003: ARM64: Optimize AllocateHeapNumber to use STP. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 8 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/arm64/full-codegen-arm64.cc ('k') | src/arm64/macro-assembler-arm64.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 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 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 784 matching lines...) Expand 10 before | Expand all | Expand 10 after
795 // 795 //
796 // This method asserts that StackPointer() is not csp, since the call does 796 // This method asserts that StackPointer() is not csp, since the call does
797 // not make sense in that context. 797 // not make sense in that context.
798 inline void BumpSystemStackPointer(const Operand& space); 798 inline void BumpSystemStackPointer(const Operand& space);
799 799
800 // Helpers ------------------------------------------------------------------ 800 // Helpers ------------------------------------------------------------------
801 // Root register. 801 // Root register.
802 inline void InitializeRootRegister(); 802 inline void InitializeRootRegister();
803 803
804 // Load an object from the root table. 804 // Load an object from the root table.
805 void LoadRoot(Register destination, 805 void LoadRoot(CPURegister destination,
806 Heap::RootListIndex index); 806 Heap::RootListIndex index);
807 // Store an object to the root table. 807 // Store an object to the root table.
808 void StoreRoot(Register source, 808 void StoreRoot(Register source,
809 Heap::RootListIndex index); 809 Heap::RootListIndex index);
810 810
811 // Load both TrueValue and FalseValue roots. 811 // Load both TrueValue and FalseValue roots.
812 void LoadTrueFalseRoots(Register true_root, Register false_root); 812 void LoadTrueFalseRoots(Register true_root, Register false_root);
813 813
814 void LoadHeapObject(Register dst, Handle<HeapObject> object); 814 void LoadHeapObject(Register dst, Handle<HeapObject> object);
815 815
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
876 Register value2, 876 Register value2,
877 Label* not_smi_label); 877 Label* not_smi_label);
878 inline void JumpIfBothNotSmi(Register value1, 878 inline void JumpIfBothNotSmi(Register value1,
879 Register value2, 879 Register value2,
880 Label* not_smi_label); 880 Label* not_smi_label);
881 881
882 // Abort execution if argument is a smi, enabled via --debug-code. 882 // Abort execution if argument is a smi, enabled via --debug-code.
883 void AssertNotSmi(Register object, BailoutReason reason = kOperandIsASmi); 883 void AssertNotSmi(Register object, BailoutReason reason = kOperandIsASmi);
884 void AssertSmi(Register object, BailoutReason reason = kOperandIsNotASmi); 884 void AssertSmi(Register object, BailoutReason reason = kOperandIsNotASmi);
885 885
886 inline void ObjectTag(Register tagged_obj, Register obj);
887 inline void ObjectUntag(Register untagged_obj, Register obj);
888
886 // Abort execution if argument is not a name, enabled via --debug-code. 889 // Abort execution if argument is not a name, enabled via --debug-code.
887 void AssertName(Register object); 890 void AssertName(Register object);
888 891
889 // Abort execution if argument is not undefined or an AllocationSite, enabled 892 // Abort execution if argument is not undefined or an AllocationSite, enabled
890 // via --debug-code. 893 // via --debug-code.
891 void AssertUndefinedOrAllocationSite(Register object, Register scratch); 894 void AssertUndefinedOrAllocationSite(Register object, Register scratch);
892 895
893 // Abort execution if argument is not a string, enabled via --debug-code. 896 // Abort execution if argument is not a string, enabled via --debug-code.
894 void AssertString(Register object); 897 void AssertString(Register object);
895 898
(...skipping 451 matching lines...) Expand 10 before | Expand all | Expand 10 after
1347 1350
1348 // Allocates a heap number or jumps to the gc_required label if the young 1351 // Allocates a heap number or jumps to the gc_required label if the young
1349 // space is full and a scavenge is needed. 1352 // space is full and a scavenge is needed.
1350 // All registers are clobbered. 1353 // All registers are clobbered.
1351 // If no heap_number_map register is provided, the function will take care of 1354 // If no heap_number_map register is provided, the function will take care of
1352 // loading it. 1355 // loading it.
1353 void AllocateHeapNumber(Register result, 1356 void AllocateHeapNumber(Register result,
1354 Label* gc_required, 1357 Label* gc_required,
1355 Register scratch1, 1358 Register scratch1,
1356 Register scratch2, 1359 Register scratch2,
1357 Register heap_number_map = NoReg); 1360 CPURegister value = NoFPReg,
1358 void AllocateHeapNumberWithValue(Register result, 1361 CPURegister heap_number_map = NoReg);
1359 DoubleRegister value,
1360 Label* gc_required,
1361 Register scratch1,
1362 Register scratch2,
1363 Register heap_number_map = NoReg);
1364 1362
1365 // --------------------------------------------------------------------------- 1363 // ---------------------------------------------------------------------------
1366 // Support functions. 1364 // Support functions.
1367 1365
1368 // Try to get function prototype of a function and puts the value in the 1366 // Try to get function prototype of a function and puts the value in the
1369 // result register. Checks that the function really is a function and jumps 1367 // result register. Checks that the function really is a function and jumps
1370 // to the miss label if the fast checks fail. The function register will be 1368 // to the miss label if the fast checks fail. The function register will be
1371 // untouched; the other registers may be clobbered. 1369 // untouched; the other registers may be clobbered.
1372 enum BoundFunctionAction { 1370 enum BoundFunctionAction {
1373 kMissOnBoundFunction, 1371 kMissOnBoundFunction,
(...skipping 927 matching lines...) Expand 10 before | Expand all | Expand 10 after
2301 #error "Unsupported option" 2299 #error "Unsupported option"
2302 #define CODE_COVERAGE_STRINGIFY(x) #x 2300 #define CODE_COVERAGE_STRINGIFY(x) #x
2303 #define CODE_COVERAGE_TOSTRING(x) CODE_COVERAGE_STRINGIFY(x) 2301 #define CODE_COVERAGE_TOSTRING(x) CODE_COVERAGE_STRINGIFY(x)
2304 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) 2302 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__)
2305 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> 2303 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm->
2306 #else 2304 #else
2307 #define ACCESS_MASM(masm) masm-> 2305 #define ACCESS_MASM(masm) masm->
2308 #endif 2306 #endif
2309 2307
2310 #endif // V8_ARM64_MACRO_ASSEMBLER_ARM64_H_ 2308 #endif // V8_ARM64_MACRO_ASSEMBLER_ARM64_H_
OLDNEW
« no previous file with comments | « src/arm64/full-codegen-arm64.cc ('k') | src/arm64/macro-assembler-arm64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698