OLD | NEW |
1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 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 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
44 | 44 |
45 | 45 |
46 static inline Operand SmiUntagOperand(Register object) { | 46 static inline Operand SmiUntagOperand(Register object) { |
47 return Operand(object, ASR, kSmiTagSize); | 47 return Operand(object, ASR, kSmiTagSize); |
48 } | 48 } |
49 | 49 |
50 | 50 |
51 | 51 |
52 // Give alias names to registers | 52 // Give alias names to registers |
53 const Register cp = { 8 }; // JavaScript context pointer | 53 const Register cp = { 8 }; // JavaScript context pointer |
54 const Register roots = { 10 }; // Roots array pointer. | 54 const Register kRootRegister = { 10 }; // Roots array pointer. |
55 | 55 |
56 // Flags used for the AllocateInNewSpace functions. | 56 // Flags used for the AllocateInNewSpace functions. |
57 enum AllocationFlags { | 57 enum AllocationFlags { |
58 // No special flags. | 58 // No special flags. |
59 NO_ALLOCATION_FLAGS = 0, | 59 NO_ALLOCATION_FLAGS = 0, |
60 // Return the pointer to the allocated already tagged as a heap object. | 60 // Return the pointer to the allocated already tagged as a heap object. |
61 TAG_OBJECT = 1 << 0, | 61 TAG_OBJECT = 1 << 0, |
62 // The content of the result register already contains the allocation top in | 62 // The content of the result register already contains the allocation top in |
63 // new space. | 63 // new space. |
64 RESULT_CONTAINS_TOP = 1 << 1, | 64 RESULT_CONTAINS_TOP = 1 << 1, |
(...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
343 void LoadContext(Register dst, int context_chain_length); | 343 void LoadContext(Register dst, int context_chain_length); |
344 | 344 |
345 void LoadGlobalFunction(int index, Register function); | 345 void LoadGlobalFunction(int index, Register function); |
346 | 346 |
347 // Load the initial map from the global function. The registers | 347 // Load the initial map from the global function. The registers |
348 // function and map can be the same, function is then overwritten. | 348 // function and map can be the same, function is then overwritten. |
349 void LoadGlobalFunctionInitialMap(Register function, | 349 void LoadGlobalFunctionInitialMap(Register function, |
350 Register map, | 350 Register map, |
351 Register scratch); | 351 Register scratch); |
352 | 352 |
| 353 void InitializeRootRegister() { |
| 354 ExternalReference roots_address = |
| 355 ExternalReference::roots_address(isolate()); |
| 356 mov(kRootRegister, Operand(roots_address)); |
| 357 } |
| 358 |
353 // --------------------------------------------------------------------------- | 359 // --------------------------------------------------------------------------- |
354 // JavaScript invokes | 360 // JavaScript invokes |
355 | 361 |
356 // Setup call kind marking in ecx. The method takes ecx as an | 362 // Setup call kind marking in ecx. The method takes ecx as an |
357 // explicit first parameter to make the code more readable at the | 363 // explicit first parameter to make the code more readable at the |
358 // call sites. | 364 // call sites. |
359 void SetCallKind(Register dst, CallKind kind); | 365 void SetCallKind(Register dst, CallKind kind); |
360 | 366 |
361 // Invoke the JavaScript function code by either calling or jumping. | 367 // Invoke the JavaScript function code by either calling or jumping. |
362 void InvokeCode(Register code, | 368 void InvokeCode(Register code, |
(...skipping 782 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1145 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) | 1151 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) |
1146 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> | 1152 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> |
1147 #else | 1153 #else |
1148 #define ACCESS_MASM(masm) masm-> | 1154 #define ACCESS_MASM(masm) masm-> |
1149 #endif | 1155 #endif |
1150 | 1156 |
1151 | 1157 |
1152 } } // namespace v8::internal | 1158 } } // namespace v8::internal |
1153 | 1159 |
1154 #endif // V8_ARM_MACRO_ASSEMBLER_ARM_H_ | 1160 #endif // V8_ARM_MACRO_ASSEMBLER_ARM_H_ |
OLD | NEW |