| OLD | NEW |
| 1 // Copyright 2010 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 |
| 11 // with the distribution. | 11 // with the distribution. |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 43 // The content of the result register already contains the allocation top in | 43 // The content of the result register already contains the allocation top in |
| 44 // new space. | 44 // new space. |
| 45 RESULT_CONTAINS_TOP = 1 << 1 | 45 RESULT_CONTAINS_TOP = 1 << 1 |
| 46 }; | 46 }; |
| 47 | 47 |
| 48 // Convenience for platform-independent signatures. We do not normally | 48 // Convenience for platform-independent signatures. We do not normally |
| 49 // distinguish memory operands from other operands on ia32. | 49 // distinguish memory operands from other operands on ia32. |
| 50 typedef Operand MemOperand; | 50 typedef Operand MemOperand; |
| 51 | 51 |
| 52 // Forward declaration. | 52 // Forward declaration. |
| 53 class JumpTarget; | |
| 54 class PostCallGenerator; | 53 class PostCallGenerator; |
| 55 | 54 |
| 56 // MacroAssembler implements a collection of frequently used macros. | 55 // MacroAssembler implements a collection of frequently used macros. |
| 57 class MacroAssembler: public Assembler { | 56 class MacroAssembler: public Assembler { |
| 58 public: | 57 public: |
| 59 // The isolate parameter can be NULL if the macro assembler should | 58 // The isolate parameter can be NULL if the macro assembler should |
| 60 // not use isolate-dependent functionality. In this case, it's the | 59 // not use isolate-dependent functionality. In this case, it's the |
| 61 // responsibility of the caller to never invoke such function on the | 60 // responsibility of the caller to never invoke such function on the |
| 62 // macro assembler. | 61 // macro assembler. |
| 63 MacroAssembler(Isolate* isolate, void* buffer, int size); | 62 MacroAssembler(Isolate* isolate, void* buffer, int size); |
| (...skipping 353 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 417 Register destination, | 416 Register destination, |
| 418 Register length, | 417 Register length, |
| 419 Register scratch); | 418 Register scratch); |
| 420 | 419 |
| 421 // --------------------------------------------------------------------------- | 420 // --------------------------------------------------------------------------- |
| 422 // Support functions. | 421 // Support functions. |
| 423 | 422 |
| 424 // Check if result is zero and op is negative. | 423 // Check if result is zero and op is negative. |
| 425 void NegativeZeroTest(Register result, Register op, Label* then_label); | 424 void NegativeZeroTest(Register result, Register op, Label* then_label); |
| 426 | 425 |
| 427 // Check if result is zero and op is negative in code using jump targets. | |
| 428 void NegativeZeroTest(CodeGenerator* cgen, | |
| 429 Register result, | |
| 430 Register op, | |
| 431 JumpTarget* then_target); | |
| 432 | |
| 433 // Check if result is zero and any of op1 and op2 are negative. | 426 // Check if result is zero and any of op1 and op2 are negative. |
| 434 // Register scratch is destroyed, and it must be different from op2. | 427 // Register scratch is destroyed, and it must be different from op2. |
| 435 void NegativeZeroTest(Register result, Register op1, Register op2, | 428 void NegativeZeroTest(Register result, Register op1, Register op2, |
| 436 Register scratch, Label* then_label); | 429 Register scratch, Label* then_label); |
| 437 | 430 |
| 438 // Try to get function prototype of a function and puts the value in | 431 // Try to get function prototype of a function and puts the value in |
| 439 // the result register. Checks that the function really is a | 432 // the result register. Checks that the function really is a |
| 440 // function and jumps to the miss label if the fast checks fail. The | 433 // function and jumps to the miss label if the fast checks fail. The |
| 441 // function register will be untouched; the other registers may be | 434 // function register will be untouched; the other registers may be |
| 442 // clobbered. | 435 // clobbered. |
| (...skipping 355 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 798 } \ | 791 } \ |
| 799 masm-> | 792 masm-> |
| 800 #else | 793 #else |
| 801 #define ACCESS_MASM(masm) masm-> | 794 #define ACCESS_MASM(masm) masm-> |
| 802 #endif | 795 #endif |
| 803 | 796 |
| 804 | 797 |
| 805 } } // namespace v8::internal | 798 } } // namespace v8::internal |
| 806 | 799 |
| 807 #endif // V8_IA32_MACRO_ASSEMBLER_IA32_H_ | 800 #endif // V8_IA32_MACRO_ASSEMBLER_IA32_H_ |
| OLD | NEW |