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

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

Issue 133443009: A64: Synchronize with r17441. (Closed) Base URL: https://v8.googlecode.com/svn/branches/experimental/a64
Patch Set: Created 6 years, 10 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/a64/lithium-codegen-a64.cc ('k') | src/a64/macro-assembler-a64.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 695 matching lines...) Expand 10 before | Expand all | Expand 10 after
706 // Load both TrueValue and FalseValue roots. 706 // Load both TrueValue and FalseValue roots.
707 void LoadTrueFalseRoots(Register true_root, Register false_root); 707 void LoadTrueFalseRoots(Register true_root, Register false_root);
708 708
709 void LoadHeapObject(Register dst, Handle<HeapObject> object); 709 void LoadHeapObject(Register dst, Handle<HeapObject> object);
710 710
711 void LoadObject(Register result, Handle<Object> object) { 711 void LoadObject(Register result, Handle<Object> object) {
712 AllowDeferredHandleDereference heap_object_check; 712 AllowDeferredHandleDereference heap_object_check;
713 if (object->IsHeapObject()) { 713 if (object->IsHeapObject()) {
714 LoadHeapObject(result, Handle<HeapObject>::cast(object)); 714 LoadHeapObject(result, Handle<HeapObject>::cast(object));
715 } else { 715 } else {
716 ASSERT(object->IsSmi());
716 Mov(result, Operand(object)); 717 Mov(result, Operand(object));
717 } 718 }
718 } 719 }
719 720
720 static int SafepointRegisterStackIndex(int reg_code); 721 static int SafepointRegisterStackIndex(int reg_code);
721 722
722 // This is required for compatibility with architecture independant code. 723 // This is required for compatibility with architecture independant code.
723 // Remove if not needed. 724 // Remove if not needed.
724 inline void Move(Register dst, Register src) { Mov(dst, src); } 725 inline void Move(Register dst, Register src) { Mov(dst, src); }
725 726
(...skipping 782 matching lines...) Expand 10 before | Expand all | Expand 10 after
1508 Register scratch3, 1509 Register scratch3,
1509 Label* call_runtime); 1510 Label* call_runtime);
1510 1511
1511 // AllocationMemento support. Arrays may have an associated 1512 // AllocationMemento support. Arrays may have an associated
1512 // AllocationMemento object that can be checked for in order to pretransition 1513 // AllocationMemento object that can be checked for in order to pretransition
1513 // to another type. 1514 // to another type.
1514 // On entry, receiver should point to the array object. 1515 // On entry, receiver should point to the array object.
1515 // If allocation info is present, the Z flag is set (so that the eq 1516 // If allocation info is present, the Z flag is set (so that the eq
1516 // condition will pass). 1517 // condition will pass).
1517 void TestJSArrayForAllocationMemento(Register receiver, 1518 void TestJSArrayForAllocationMemento(Register receiver,
1518 Register scratch1, 1519 Register scratch1,
1519 Register scratch2); 1520 Register scratch2,
1521 Label* no_memento_found);
1522
1523 void JumpIfJSArrayHasAllocationMemento(Register receiver,
1524 Register scratch1,
1525 Register scratch2,
1526 Label* memento_found) {
1527 Label no_memento_found;
1528 TestJSArrayForAllocationMemento(receiver, scratch1, scratch2,
1529 &no_memento_found);
1530 B(eq, memento_found);
1531 Bind(&no_memento_found);
1532 }
1520 1533
1521 // The stack pointer has to switch between csp and jssp when setting up and 1534 // The stack pointer has to switch between csp and jssp when setting up and
1522 // destroying the exit frame. Hence preserving/restoring the registers is 1535 // destroying the exit frame. Hence preserving/restoring the registers is
1523 // slightly more complicated than simple push/pop operations. 1536 // slightly more complicated than simple push/pop operations.
1524 void ExitFramePreserveFPRegs(); 1537 void ExitFramePreserveFPRegs();
1525 void ExitFrameRestoreFPRegs(); 1538 void ExitFrameRestoreFPRegs();
1526 1539
1540 // Generates function and stub prologue code.
1541 void Prologue(PrologueFrameMode frame_mode);
1542
1527 // Enter exit frame. Exit frames are used when calling C code from generated 1543 // Enter exit frame. Exit frames are used when calling C code from generated
1528 // (JavaScript) code. 1544 // (JavaScript) code.
1529 // 1545 //
1530 // The stack pointer must be jssp on entry, and will be set to csp by this 1546 // The stack pointer must be jssp on entry, and will be set to csp by this
1531 // function. The frame pointer is also configured, but the only other 1547 // function. The frame pointer is also configured, but the only other
1532 // registers modified by this function are the provided scratch register, and 1548 // registers modified by this function are the provided scratch register, and
1533 // jssp. 1549 // jssp.
1534 // 1550 //
1535 // The 'extra_space' argument can be used to allocate some space in the exit 1551 // The 'extra_space' argument can be used to allocate some space in the exit
1536 // frame that will be ignored by the GC. This space will be reserved in the 1552 // frame that will be ignored by the GC. This space will be reserved in the
(...skipping 621 matching lines...) Expand 10 before | Expand all | Expand 10 after
2158 #error "Unsupported option" 2174 #error "Unsupported option"
2159 #define CODE_COVERAGE_STRINGIFY(x) #x 2175 #define CODE_COVERAGE_STRINGIFY(x) #x
2160 #define CODE_COVERAGE_TOSTRING(x) CODE_COVERAGE_STRINGIFY(x) 2176 #define CODE_COVERAGE_TOSTRING(x) CODE_COVERAGE_STRINGIFY(x)
2161 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) 2177 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__)
2162 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> 2178 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm->
2163 #else 2179 #else
2164 #define ACCESS_MASM(masm) masm-> 2180 #define ACCESS_MASM(masm) masm->
2165 #endif 2181 #endif
2166 2182
2167 #endif // V8_A64_MACRO_ASSEMBLER_A64_H_ 2183 #endif // V8_A64_MACRO_ASSEMBLER_A64_H_
OLDNEW
« no previous file with comments | « src/a64/lithium-codegen-a64.cc ('k') | src/a64/macro-assembler-a64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698