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

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

Issue 1162993006: Add support for Embedded Constant Pools for PPC and Arm (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 6 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
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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_ARM_MACRO_ASSEMBLER_ARM_H_ 5 #ifndef V8_ARM_MACRO_ASSEMBLER_ARM_H_
6 #define V8_ARM_MACRO_ASSEMBLER_ARM_H_ 6 #define V8_ARM_MACRO_ASSEMBLER_ARM_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 419 matching lines...) Expand 10 before | Expand all | Expand 10 after
430 Pop(src3, src4, cond); 430 Pop(src3, src4, cond);
431 ldm(ia_w, sp, src1.bit() | src2.bit(), cond); 431 ldm(ia_w, sp, src1.bit() | src2.bit(), cond);
432 } 432 }
433 } else { 433 } else {
434 Pop(src2, src3, src4, cond); 434 Pop(src2, src3, src4, cond);
435 ldr(src1, MemOperand(sp, 4, PostIndex), cond); 435 ldr(src1, MemOperand(sp, 4, PostIndex), cond);
436 } 436 }
437 } 437 }
438 438
439 // Push a fixed frame, consisting of lr, fp, constant pool (if 439 // Push a fixed frame, consisting of lr, fp, constant pool (if
440 // FLAG_enable_ool_constant_pool), context and JS function / marker id if 440 // FLAG_enable_embedded_constant_pool), context and JS function / marker id if
441 // marker_reg is a valid register. 441 // marker_reg is a valid register.
442 void PushFixedFrame(Register marker_reg = no_reg); 442 void PushFixedFrame(Register marker_reg = no_reg);
443 void PopFixedFrame(Register marker_reg = no_reg); 443 void PopFixedFrame(Register marker_reg = no_reg);
444 444
445 // Push and pop the registers that can hold pointers, as defined by the 445 // Push and pop the registers that can hold pointers, as defined by the
446 // RegList constant kSafepointSavedRegisters. 446 // RegList constant kSafepointSavedRegisters.
447 void PushSafepointRegisters(); 447 void PushSafepointRegisters();
448 void PopSafepointRegisters(); 448 void PopSafepointRegisters();
449 // Store value in register src in the safepoint stack slot for 449 // Store value in register src in the safepoint stack slot for
450 // register dst. 450 // register dst.
(...skipping 983 matching lines...) Expand 10 before | Expand all | Expand 10 after
1434 TestJSArrayForAllocationMemento(receiver_reg, scratch_reg, 1434 TestJSArrayForAllocationMemento(receiver_reg, scratch_reg,
1435 &no_memento_found); 1435 &no_memento_found);
1436 b(eq, memento_found); 1436 b(eq, memento_found);
1437 bind(&no_memento_found); 1437 bind(&no_memento_found);
1438 } 1438 }
1439 1439
1440 // Jumps to found label if a prototype map has dictionary elements. 1440 // Jumps to found label if a prototype map has dictionary elements.
1441 void JumpIfDictionaryInPrototypeChain(Register object, Register scratch0, 1441 void JumpIfDictionaryInPrototypeChain(Register object, Register scratch0,
1442 Register scratch1, Label* found); 1442 Register scratch1, Label* found);
1443 1443
1444 // Loads the constant pool pointer (pp) register.
1445 void LoadConstantPoolPointerRegisterFromCodeTargetAddress(
1446 Register code_target_address);
1447 void LoadConstantPoolPointerRegister();
1448
1444 private: 1449 private:
1445 void CallCFunctionHelper(Register function, 1450 void CallCFunctionHelper(Register function,
1446 int num_reg_arguments, 1451 int num_reg_arguments,
1447 int num_double_arguments); 1452 int num_double_arguments);
1448 1453
1449 void Jump(intptr_t target, RelocInfo::Mode rmode, Condition cond = al); 1454 void Jump(intptr_t target, RelocInfo::Mode rmode, Condition cond = al);
1450 1455
1451 // Helper functions for generating invokes. 1456 // Helper functions for generating invokes.
1452 void InvokePrologue(const ParameterCount& expected, 1457 void InvokePrologue(const ParameterCount& expected,
1453 const ParameterCount& actual, 1458 const ParameterCount& actual,
(...skipping 21 matching lines...) Expand all
1475 // the position of the first bit. Leaves addr_reg unchanged. 1480 // the position of the first bit. Leaves addr_reg unchanged.
1476 inline void GetMarkBits(Register addr_reg, 1481 inline void GetMarkBits(Register addr_reg,
1477 Register bitmap_reg, 1482 Register bitmap_reg,
1478 Register mask_reg); 1483 Register mask_reg);
1479 1484
1480 // Compute memory operands for safepoint stack slots. 1485 // Compute memory operands for safepoint stack slots.
1481 static int SafepointRegisterStackIndex(int reg_code); 1486 static int SafepointRegisterStackIndex(int reg_code);
1482 MemOperand SafepointRegisterSlot(Register reg); 1487 MemOperand SafepointRegisterSlot(Register reg);
1483 MemOperand SafepointRegistersAndDoublesSlot(Register reg); 1488 MemOperand SafepointRegistersAndDoublesSlot(Register reg);
1484 1489
1485 // Loads the constant pool pointer (pp) register.
1486 void LoadConstantPoolPointerRegister();
1487
1488 bool generating_stub_; 1490 bool generating_stub_;
1489 bool has_frame_; 1491 bool has_frame_;
1490 // This handle will be patched with the code object on installation. 1492 // This handle will be patched with the code object on installation.
1491 Handle<Object> code_object_; 1493 Handle<Object> code_object_;
1492 1494
1493 // Needs access to SafepointRegisterStackIndex for compiled frame 1495 // Needs access to SafepointRegisterStackIndex for compiled frame
1494 // traversal. 1496 // traversal.
1495 friend class StandardFrame; 1497 friend class StandardFrame;
1496 }; 1498 };
1497 1499
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
1553 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) 1555 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__)
1554 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> 1556 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm->
1555 #else 1557 #else
1556 #define ACCESS_MASM(masm) masm-> 1558 #define ACCESS_MASM(masm) masm->
1557 #endif 1559 #endif
1558 1560
1559 1561
1560 } } // namespace v8::internal 1562 } } // namespace v8::internal
1561 1563
1562 #endif // V8_ARM_MACRO_ASSEMBLER_ARM_H_ 1564 #endif // V8_ARM_MACRO_ASSEMBLER_ARM_H_
OLDNEW
« no previous file with comments | « src/arm/lithium-codegen-arm.cc ('k') | src/arm/macro-assembler-arm.cc » ('j') | src/objects.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698