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 322 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
333 // then we just fall through, since it is already live. If it is white and | 333 // then we just fall through, since it is already live. If it is white and |
334 // we can determine that it doesn't need to be scanned, then we just mark it | 334 // we can determine that it doesn't need to be scanned, then we just mark it |
335 // black and fall through. For the rest we jump to the label so the | 335 // black and fall through. For the rest we jump to the label so the |
336 // incremental marker can fix its assumptions. | 336 // incremental marker can fix its assumptions. |
337 void EnsureNotWhite(Register object, | 337 void EnsureNotWhite(Register object, |
338 Register scratch1, | 338 Register scratch1, |
339 Register scratch2, | 339 Register scratch2, |
340 Register scratch3, | 340 Register scratch3, |
341 Label* object_is_white_and_not_data); | 341 Label* object_is_white_and_not_data); |
342 | 342 |
343 // Detects conservatively whether an object is data-only, ie it does need to | 343 // Detects conservatively whether an object is data-only, i.e. it does need to |
344 // be scanned by the garbage collector. | 344 // be scanned by the garbage collector. |
345 void JumpIfDataObject(Register value, | 345 void JumpIfDataObject(Register value, |
346 Register scratch, | 346 Register scratch, |
347 Label* not_data_object); | 347 Label* not_data_object); |
348 | 348 |
349 // Notify the garbage collector that we wrote a pointer into an object. | 349 // Notify the garbage collector that we wrote a pointer into an object. |
350 // |object| is the object being stored into, |value| is the object being | 350 // |object| is the object being stored into, |value| is the object being |
351 // stored. value and scratch registers are clobbered by the operation. | 351 // stored. value and scratch registers are clobbered by the operation. |
352 // The offset is the offset from the start of the object, not the offset from | 352 // The offset is the offset from the start of the object, not the offset from |
353 // the tagged HeapObject pointer. For use with FieldOperand(reg, off). | 353 // the tagged HeapObject pointer. For use with FieldOperand(reg, off). |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
414 Register reg0, | 414 Register reg0, |
415 Register reg1, | 415 Register reg1, |
416 Register reg2); | 416 Register reg2); |
417 | 417 |
418 | 418 |
419 inline void MarkCode(NopMarkerTypes type) { | 419 inline void MarkCode(NopMarkerTypes type) { |
420 nop(type); | 420 nop(type); |
421 } | 421 } |
422 | 422 |
423 // Check if the given instruction is a 'type' marker. | 423 // Check if the given instruction is a 'type' marker. |
424 // ie. check if it is a sll zero_reg, zero_reg, <type> (referenced as | 424 // i.e. check if it is a sll zero_reg, zero_reg, <type> (referenced as |
425 // nop(type)). These instructions are generated to mark special location in | 425 // nop(type)). These instructions are generated to mark special location in |
426 // the code, like some special IC code. | 426 // the code, like some special IC code. |
427 static inline bool IsMarkedCode(Instr instr, int type) { | 427 static inline bool IsMarkedCode(Instr instr, int type) { |
428 ASSERT((FIRST_IC_MARKER <= type) && (type < LAST_CODE_MARKER)); | 428 ASSERT((FIRST_IC_MARKER <= type) && (type < LAST_CODE_MARKER)); |
429 return IsNop(instr, type); | 429 return IsNop(instr, type); |
430 } | 430 } |
431 | 431 |
432 | 432 |
433 static inline int GetCodeMarker(Instr instr) { | 433 static inline int GetCodeMarker(Instr instr) { |
434 uint32_t opcode = ((instr & kOpcodeMask)); | 434 uint32_t opcode = ((instr & kOpcodeMask)); |
(...skipping 690 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1125 // There are two ways of passing double arguments on MIPS, depending on | 1125 // There are two ways of passing double arguments on MIPS, depending on |
1126 // whether soft or hard floating point ABI is used. These functions | 1126 // whether soft or hard floating point ABI is used. These functions |
1127 // abstract parameter passing for the three different ways we call | 1127 // abstract parameter passing for the three different ways we call |
1128 // C functions from generated code. | 1128 // C functions from generated code. |
1129 void SetCallCDoubleArguments(DoubleRegister dreg); | 1129 void SetCallCDoubleArguments(DoubleRegister dreg); |
1130 void SetCallCDoubleArguments(DoubleRegister dreg1, DoubleRegister dreg2); | 1130 void SetCallCDoubleArguments(DoubleRegister dreg1, DoubleRegister dreg2); |
1131 void SetCallCDoubleArguments(DoubleRegister dreg, Register reg); | 1131 void SetCallCDoubleArguments(DoubleRegister dreg, Register reg); |
1132 | 1132 |
1133 // Calls an API function. Allocates HandleScope, extracts returned value | 1133 // Calls an API function. Allocates HandleScope, extracts returned value |
1134 // from handle and propagates exceptions. Restores context. stack_space | 1134 // from handle and propagates exceptions. Restores context. stack_space |
1135 // - space to be unwound on exit (includes the call js arguments space and | 1135 // - space to be unwound on exit (includes the call JS arguments space and |
1136 // the additional space allocated for the fast call). | 1136 // the additional space allocated for the fast call). |
1137 void CallApiFunctionAndReturn(ExternalReference function, int stack_space); | 1137 void CallApiFunctionAndReturn(ExternalReference function, int stack_space); |
1138 | 1138 |
1139 // Jump to the builtin routine. | 1139 // Jump to the builtin routine. |
1140 void JumpToExternalReference(const ExternalReference& builtin); | 1140 void JumpToExternalReference(const ExternalReference& builtin); |
1141 | 1141 |
1142 // Invoke specified builtin JavaScript function. Adds an entry to | 1142 // Invoke specified builtin JavaScript function. Adds an entry to |
1143 // the unresolved list if the name does not resolve. | 1143 // the unresolved list if the name does not resolve. |
1144 void InvokeBuiltin(Builtins::JavaScript id, | 1144 void InvokeBuiltin(Builtins::JavaScript id, |
1145 InvokeFlag flag, | 1145 InvokeFlag flag, |
(...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1454 #define CODE_COVERAGE_TOSTRING(x) CODE_COVERAGE_STRINGIFY(x) | 1454 #define CODE_COVERAGE_TOSTRING(x) CODE_COVERAGE_STRINGIFY(x) |
1455 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) | 1455 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) |
1456 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> | 1456 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> |
1457 #else | 1457 #else |
1458 #define ACCESS_MASM(masm) masm-> | 1458 #define ACCESS_MASM(masm) masm-> |
1459 #endif | 1459 #endif |
1460 | 1460 |
1461 } } // namespace v8::internal | 1461 } } // namespace v8::internal |
1462 | 1462 |
1463 #endif // V8_MIPS_MACRO_ASSEMBLER_MIPS_H_ | 1463 #endif // V8_MIPS_MACRO_ASSEMBLER_MIPS_H_ |
OLD | NEW |