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

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

Issue 1327093002: PPC: [builtins] Unify the various versions of [[Call]] with a Call builtin. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 3 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
« no previous file with comments | « src/ppc/code-stubs-ppc.cc ('k') | src/ppc/macro-assembler-ppc.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 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef V8_PPC_MACRO_ASSEMBLER_PPC_H_ 5 #ifndef V8_PPC_MACRO_ASSEMBLER_PPC_H_
6 #define V8_PPC_MACRO_ASSEMBLER_PPC_H_ 6 #define V8_PPC_MACRO_ASSEMBLER_PPC_H_
7 7
8 #include "src/assembler.h" 8 #include "src/assembler.h"
9 #include "src/bailout-reason.h" 9 #include "src/bailout-reason.h"
10 #include "src/frames.h" 10 #include "src/frames.h"
(...skipping 397 matching lines...) Expand 10 before | Expand all | Expand 10 after
408 // remove in a register (or no_reg, if there is nothing to remove). 408 // remove in a register (or no_reg, if there is nothing to remove).
409 void LeaveExitFrame(bool save_doubles, Register argument_count, 409 void LeaveExitFrame(bool save_doubles, Register argument_count,
410 bool restore_context, 410 bool restore_context,
411 bool argument_count_is_length = false); 411 bool argument_count_is_length = false);
412 412
413 // Get the actual activation frame alignment for target environment. 413 // Get the actual activation frame alignment for target environment.
414 static int ActivationFrameAlignment(); 414 static int ActivationFrameAlignment();
415 415
416 void LoadContext(Register dst, int context_chain_length); 416 void LoadContext(Register dst, int context_chain_length);
417 417
418 // Load the global proxy from the current context.
419 void LoadGlobalProxy(Register dst);
420
418 // Conditionally load the cached Array transitioned map of type 421 // Conditionally load the cached Array transitioned map of type
419 // transitioned_kind from the native context if the map in register 422 // transitioned_kind from the native context if the map in register
420 // map_in_out is the cached Array map in the native context of 423 // map_in_out is the cached Array map in the native context of
421 // expected_kind. 424 // expected_kind.
422 void LoadTransitionedArrayMapConditional(ElementsKind expected_kind, 425 void LoadTransitionedArrayMapConditional(ElementsKind expected_kind,
423 ElementsKind transitioned_kind, 426 ElementsKind transitioned_kind,
424 Register map_in_out, 427 Register map_in_out,
425 Register scratch, 428 Register scratch,
426 Label* no_map_match); 429 Label* no_map_match);
427 430
(...skipping 346 matching lines...) Expand 10 before | Expand all | Expand 10 after
774 777
775 void GetWeakValue(Register value, Handle<WeakCell> cell); 778 void GetWeakValue(Register value, Handle<WeakCell> cell);
776 779
777 // Load the value of the weak cell in the value register. Branch to the given 780 // Load the value of the weak cell in the value register. Branch to the given
778 // miss label if the weak cell was cleared. 781 // miss label if the weak cell was cleared.
779 void LoadWeakValue(Register value, Handle<WeakCell> cell, Label* miss); 782 void LoadWeakValue(Register value, Handle<WeakCell> cell, Label* miss);
780 783
781 // Compare the object in a register to a value from the root list. 784 // Compare the object in a register to a value from the root list.
782 // Uses the ip register as scratch. 785 // Uses the ip register as scratch.
783 void CompareRoot(Register obj, Heap::RootListIndex index); 786 void CompareRoot(Register obj, Heap::RootListIndex index);
787 void PushRoot(Heap::RootListIndex index) {
788 LoadRoot(r0, index);
789 Push(r0);
790 }
784 791
792 // Compare the object in a register to a value and jump if they are equal.
793 void JumpIfRoot(Register with, Heap::RootListIndex index, Label* if_equal) {
794 CompareRoot(with, index);
795 beq(if_equal);
796 }
797
798 // Compare the object in a register to a value and jump if they are not equal.
799 void JumpIfNotRoot(Register with, Heap::RootListIndex index,
800 Label* if_not_equal) {
801 CompareRoot(with, index);
802 bne(if_not_equal);
803 }
785 804
786 // Load and check the instance type of an object for being a string. 805 // Load and check the instance type of an object for being a string.
787 // Loads the type into the second argument register. 806 // Loads the type into the second argument register.
788 // Returns a condition that will be enabled if the object was a string. 807 // Returns a condition that will be enabled if the object was a string.
789 Condition IsObjectStringType(Register obj, Register type) { 808 Condition IsObjectStringType(Register obj, Register type) {
790 LoadP(type, FieldMemOperand(obj, HeapObject::kMapOffset)); 809 LoadP(type, FieldMemOperand(obj, HeapObject::kMapOffset));
791 lbz(type, FieldMemOperand(type, Map::kInstanceTypeOffset)); 810 lbz(type, FieldMemOperand(type, Map::kInstanceTypeOffset));
792 andi(r0, type, Operand(kIsNotStringMask)); 811 andi(r0, type, Operand(kIsNotStringMask));
793 DCHECK_EQ(0u, kStringTag); 812 DCHECK_EQ(0u, kStringTag);
794 return eq; 813 return eq;
(...skipping 486 matching lines...) Expand 10 before | Expand all | Expand 10 after
1281 #else 1300 #else
1282 #define SmiWordOffset(offset) offset 1301 #define SmiWordOffset(offset) offset
1283 #endif 1302 #endif
1284 1303
1285 // Abort execution if argument is not a string, enabled via --debug-code. 1304 // Abort execution if argument is not a string, enabled via --debug-code.
1286 void AssertString(Register object); 1305 void AssertString(Register object);
1287 1306
1288 // Abort execution if argument is not a name, enabled via --debug-code. 1307 // Abort execution if argument is not a name, enabled via --debug-code.
1289 void AssertName(Register object); 1308 void AssertName(Register object);
1290 1309
1310 void AssertFunction(Register object);
1311
1291 // Abort execution if argument is not undefined or an AllocationSite, enabled 1312 // Abort execution if argument is not undefined or an AllocationSite, enabled
1292 // via --debug-code. 1313 // via --debug-code.
1293 void AssertUndefinedOrAllocationSite(Register object, Register scratch); 1314 void AssertUndefinedOrAllocationSite(Register object, Register scratch);
1294 1315
1295 // Abort execution if reg is not the root value with the given index, 1316 // Abort execution if reg is not the root value with the given index,
1296 // enabled via --debug-code. 1317 // enabled via --debug-code.
1297 void AssertIsRoot(Register reg, Heap::RootListIndex index); 1318 void AssertIsRoot(Register reg, Heap::RootListIndex index);
1298 1319
1299 // --------------------------------------------------------------------------- 1320 // ---------------------------------------------------------------------------
1300 // HeapNumber utilities 1321 // HeapNumber utilities
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after
1549 #define ACCESS_MASM(masm) \ 1570 #define ACCESS_MASM(masm) \
1550 masm->stop(__FILE_LINE__); \ 1571 masm->stop(__FILE_LINE__); \
1551 masm-> 1572 masm->
1552 #else 1573 #else
1553 #define ACCESS_MASM(masm) masm-> 1574 #define ACCESS_MASM(masm) masm->
1554 #endif 1575 #endif
1555 } 1576 }
1556 } // namespace v8::internal 1577 } // namespace v8::internal
1557 1578
1558 #endif // V8_PPC_MACRO_ASSEMBLER_PPC_H_ 1579 #endif // V8_PPC_MACRO_ASSEMBLER_PPC_H_
OLDNEW
« no previous file with comments | « src/ppc/code-stubs-ppc.cc ('k') | src/ppc/macro-assembler-ppc.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698