OLD | NEW |
1 // Copyright 2010 the V8 project authors. All rights reserved. | 1 // Copyright 2010 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 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
83 // Object is known to be a non smi. | 83 // Object is known to be a non smi. |
84 OBJECT_NOT_SMI = 1 << 0, | 84 OBJECT_NOT_SMI = 1 << 0, |
85 // Don't load NaNs or infinities, branch to the non number case instead. | 85 // Don't load NaNs or infinities, branch to the non number case instead. |
86 AVOID_NANS_AND_INFINITIES = 1 << 1 | 86 AVOID_NANS_AND_INFINITIES = 1 << 1 |
87 }; | 87 }; |
88 | 88 |
89 | 89 |
90 // MacroAssembler implements a collection of frequently used macros. | 90 // MacroAssembler implements a collection of frequently used macros. |
91 class MacroAssembler: public Assembler { | 91 class MacroAssembler: public Assembler { |
92 public: | 92 public: |
93 MacroAssembler(void* buffer, int size); | 93 // The isolate parameter can be NULL if the macro assembler should |
| 94 // not use isolate-dependent functionality. In this case, it's the |
| 95 // responsibility of the caller to never invoke such function on the |
| 96 // macro assembler. |
| 97 MacroAssembler(Isolate* isolate, void* buffer, int size); |
94 | 98 |
95 // Jump, Call, and Ret pseudo instructions implementing inter-working. | 99 // Jump, Call, and Ret pseudo instructions implementing inter-working. |
96 void Jump(Register target, Condition cond = al); | 100 void Jump(Register target, Condition cond = al); |
97 void Jump(byte* target, RelocInfo::Mode rmode, Condition cond = al); | 101 void Jump(byte* target, RelocInfo::Mode rmode, Condition cond = al); |
98 void Jump(Handle<Code> code, RelocInfo::Mode rmode, Condition cond = al); | 102 void Jump(Handle<Code> code, RelocInfo::Mode rmode, Condition cond = al); |
99 int CallSize(Register target, Condition cond = al); | 103 int CallSize(Register target, Condition cond = al); |
100 void Call(Register target, Condition cond = al); | 104 void Call(Register target, Condition cond = al); |
101 int CallSize(byte* target, RelocInfo::Mode rmode, Condition cond = al); | 105 int CallSize(byte* target, RelocInfo::Mode rmode, Condition cond = al); |
102 void Call(byte* target, RelocInfo::Mode rmode, Condition cond = al); | 106 void Call(byte* target, RelocInfo::Mode rmode, Condition cond = al); |
103 int CallSize(Handle<Code> code, RelocInfo::Mode rmode, Condition cond = al); | 107 int CallSize(Handle<Code> code, RelocInfo::Mode rmode, Condition cond = al); |
(...skipping 670 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
774 InvokeJSFlags flags, | 778 InvokeJSFlags flags, |
775 CallWrapper* call_wrapper = NULL); | 779 CallWrapper* call_wrapper = NULL); |
776 | 780 |
777 // Store the code object for the given builtin in the target register and | 781 // Store the code object for the given builtin in the target register and |
778 // setup the function in r1. | 782 // setup the function in r1. |
779 void GetBuiltinEntry(Register target, Builtins::JavaScript id); | 783 void GetBuiltinEntry(Register target, Builtins::JavaScript id); |
780 | 784 |
781 // Store the function for the given builtin in the target register. | 785 // Store the function for the given builtin in the target register. |
782 void GetBuiltinFunction(Register target, Builtins::JavaScript id); | 786 void GetBuiltinFunction(Register target, Builtins::JavaScript id); |
783 | 787 |
784 Handle<Object> CodeObject() { return code_object_; } | 788 Handle<Object> CodeObject() { |
| 789 ASSERT(!code_object_.is_null()); |
| 790 return code_object_; |
| 791 } |
785 | 792 |
786 | 793 |
787 // --------------------------------------------------------------------------- | 794 // --------------------------------------------------------------------------- |
788 // StatsCounter support | 795 // StatsCounter support |
789 | 796 |
790 void SetCounter(StatsCounter* counter, int value, | 797 void SetCounter(StatsCounter* counter, int value, |
791 Register scratch1, Register scratch2); | 798 Register scratch1, Register scratch2); |
792 void IncrementCounter(StatsCounter* counter, int value, | 799 void IncrementCounter(StatsCounter* counter, int value, |
793 Register scratch1, Register scratch2); | 800 Register scratch1, Register scratch2); |
794 void DecrementCounter(StatsCounter* counter, int value, | 801 void DecrementCounter(StatsCounter* counter, int value, |
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1055 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) | 1062 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) |
1056 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> | 1063 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> |
1057 #else | 1064 #else |
1058 #define ACCESS_MASM(masm) masm-> | 1065 #define ACCESS_MASM(masm) masm-> |
1059 #endif | 1066 #endif |
1060 | 1067 |
1061 | 1068 |
1062 } } // namespace v8::internal | 1069 } } // namespace v8::internal |
1063 | 1070 |
1064 #endif // V8_ARM_MACRO_ASSEMBLER_ARM_H_ | 1071 #endif // V8_ARM_MACRO_ASSEMBLER_ARM_H_ |
OLD | NEW |