| 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 |