| OLD | NEW | 
|---|
|  | (Empty) | 
| 1 // Copyright 2010 the V8 project authors. All rights reserved. |  | 
| 2 // Redistribution and use in source and binary forms, with or without |  | 
| 3 // modification, are permitted provided that the following conditions are |  | 
| 4 // met: |  | 
| 5 // |  | 
| 6 //     * Redistributions of source code must retain the above copyright |  | 
| 7 //       notice, this list of conditions and the following disclaimer. |  | 
| 8 //     * Redistributions in binary form must reproduce the above |  | 
| 9 //       copyright notice, this list of conditions and the following |  | 
| 10 //       disclaimer in the documentation and/or other materials provided |  | 
| 11 //       with the distribution. |  | 
| 12 //     * Neither the name of Google Inc. nor the names of its |  | 
| 13 //       contributors may be used to endorse or promote products derived |  | 
| 14 //       from this software without specific prior written permission. |  | 
| 15 // |  | 
| 16 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |  | 
| 17 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |  | 
| 18 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |  | 
| 19 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |  | 
| 20 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |  | 
| 21 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |  | 
| 22 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |  | 
| 23 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |  | 
| 24 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |  | 
| 25 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |  | 
| 26 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |  | 
| 27 |  | 
| 28 #include "v8.h" |  | 
| 29 |  | 
| 30 #if defined(V8_TARGET_ARCH_MIPS) |  | 
| 31 |  | 
| 32 #include "codegen-inl.h" |  | 
| 33 #include "register-allocator-inl.h" |  | 
| 34 #include "scopes.h" |  | 
| 35 #include "virtual-frame-inl.h" |  | 
| 36 |  | 
| 37 namespace v8 { |  | 
| 38 namespace internal { |  | 
| 39 |  | 
| 40 #define __ ACCESS_MASM(masm()) |  | 
| 41 |  | 
| 42 void VirtualFrame::PopToA1A0() { |  | 
| 43   UNIMPLEMENTED_MIPS(); |  | 
| 44 } |  | 
| 45 |  | 
| 46 |  | 
| 47 void VirtualFrame::PopToA1() { |  | 
| 48   UNIMPLEMENTED_MIPS(); |  | 
| 49 } |  | 
| 50 |  | 
| 51 |  | 
| 52 void VirtualFrame::PopToA0() { |  | 
| 53   UNIMPLEMENTED_MIPS(); |  | 
| 54 } |  | 
| 55 |  | 
| 56 |  | 
| 57 void VirtualFrame::MergeTo(const VirtualFrame* expected, |  | 
| 58                            Condition cond, |  | 
| 59                            Register r1, |  | 
| 60                            const Operand& r2) { |  | 
| 61   UNIMPLEMENTED_MIPS(); |  | 
| 62 } |  | 
| 63 |  | 
| 64 |  | 
| 65 void VirtualFrame::MergeTo(VirtualFrame* expected, |  | 
| 66                            Condition cond, |  | 
| 67                            Register r1, |  | 
| 68                            const Operand& r2) { |  | 
| 69   UNIMPLEMENTED_MIPS(); |  | 
| 70 } |  | 
| 71 |  | 
| 72 |  | 
| 73 void VirtualFrame::MergeTOSTo( |  | 
| 74     VirtualFrame::TopOfStack expected_top_of_stack_state, |  | 
| 75     Condition cond, |  | 
| 76     Register r1, |  | 
| 77     const Operand& r2) { |  | 
| 78   UNIMPLEMENTED_MIPS(); |  | 
| 79 } |  | 
| 80 |  | 
| 81 |  | 
| 82 void VirtualFrame::Enter() { |  | 
| 83   UNIMPLEMENTED_MIPS(); |  | 
| 84 } |  | 
| 85 |  | 
| 86 |  | 
| 87 void VirtualFrame::Exit() { |  | 
| 88   UNIMPLEMENTED_MIPS(); |  | 
| 89 } |  | 
| 90 |  | 
| 91 |  | 
| 92 void VirtualFrame::AllocateStackSlots() { |  | 
| 93   UNIMPLEMENTED_MIPS(); |  | 
| 94 } |  | 
| 95 |  | 
| 96 |  | 
| 97 |  | 
| 98 void VirtualFrame::PushReceiverSlotAddress() { |  | 
| 99   UNIMPLEMENTED_MIPS(); |  | 
| 100 } |  | 
| 101 |  | 
| 102 |  | 
| 103 void VirtualFrame::PushTryHandler(HandlerType type) { |  | 
| 104   UNIMPLEMENTED_MIPS(); |  | 
| 105 } |  | 
| 106 |  | 
| 107 |  | 
| 108 void VirtualFrame::CallJSFunction(int arg_count) { |  | 
| 109   UNIMPLEMENTED_MIPS(); |  | 
| 110 } |  | 
| 111 |  | 
| 112 |  | 
| 113 void VirtualFrame::CallRuntime(const Runtime::Function* f, int arg_count) { |  | 
| 114   UNIMPLEMENTED_MIPS(); |  | 
| 115 } |  | 
| 116 |  | 
| 117 |  | 
| 118 void VirtualFrame::CallRuntime(Runtime::FunctionId id, int arg_count) { |  | 
| 119   UNIMPLEMENTED_MIPS(); |  | 
| 120 } |  | 
| 121 |  | 
| 122 |  | 
| 123 #ifdef ENABLE_DEBUGGER_SUPPORT |  | 
| 124 void VirtualFrame::DebugBreak() { |  | 
| 125   UNIMPLEMENTED_MIPS(); |  | 
| 126 } |  | 
| 127 #endif |  | 
| 128 |  | 
| 129 |  | 
| 130 void VirtualFrame::InvokeBuiltin(Builtins::JavaScript id, |  | 
| 131                                  InvokeFlag flag, |  | 
| 132                                  int arg_count) { |  | 
| 133   UNIMPLEMENTED_MIPS(); |  | 
| 134 } |  | 
| 135 |  | 
| 136 |  | 
| 137 void VirtualFrame::CallLoadIC(Handle<String> name, RelocInfo::Mode mode) { |  | 
| 138   UNIMPLEMENTED_MIPS(); |  | 
| 139 } |  | 
| 140 |  | 
| 141 |  | 
| 142 void VirtualFrame::CallStoreIC(Handle<String> name, bool is_contextual) { |  | 
| 143   UNIMPLEMENTED_MIPS(); |  | 
| 144 } |  | 
| 145 |  | 
| 146 |  | 
| 147 void VirtualFrame::CallKeyedLoadIC() { |  | 
| 148   UNIMPLEMENTED_MIPS(); |  | 
| 149 } |  | 
| 150 |  | 
| 151 |  | 
| 152 void VirtualFrame::CallKeyedStoreIC() { |  | 
| 153   UNIMPLEMENTED_MIPS(); |  | 
| 154 } |  | 
| 155 |  | 
| 156 |  | 
| 157 void VirtualFrame::CallCodeObject(Handle<Code> code, |  | 
| 158                                   RelocInfo::Mode rmode, |  | 
| 159                                   int dropped_args) { |  | 
| 160   UNIMPLEMENTED_MIPS(); |  | 
| 161 } |  | 
| 162 |  | 
| 163 |  | 
| 164 //    NO_TOS_REGISTERS, A0_TOS, A1_TOS, A1_A0_TOS, A0_A1_TOS. |  | 
| 165 const bool VirtualFrame::kA0InUse[TOS_STATES] = |  | 
| 166     { false,            true,   false,  true,      true }; |  | 
| 167 const bool VirtualFrame::kA1InUse[TOS_STATES] = |  | 
| 168     { false,            false,  true,   true,      true }; |  | 
| 169 const int VirtualFrame::kVirtualElements[TOS_STATES] = |  | 
| 170     { 0,                1,      1,      2,         2 }; |  | 
| 171 const Register VirtualFrame::kTopRegister[TOS_STATES] = |  | 
| 172     { a0,               a0,     a1,     a1,        a0 }; |  | 
| 173 const Register VirtualFrame::kBottomRegister[TOS_STATES] = |  | 
| 174     { a0,               a0,     a1,     a0,        a1 }; |  | 
| 175 const Register VirtualFrame::kAllocatedRegisters[ |  | 
| 176     VirtualFrame::kNumberOfAllocatedRegisters] = { a2, a3, t0, t1, t2 }; |  | 
| 177 // Popping is done by the transition implied by kStateAfterPop.  Of course if |  | 
| 178 // there were no stack slots allocated to registers then the physical SP must |  | 
| 179 // be adjusted. |  | 
| 180 const VirtualFrame::TopOfStack VirtualFrame::kStateAfterPop[TOS_STATES] = |  | 
| 181     { NO_TOS_REGISTERS, NO_TOS_REGISTERS, NO_TOS_REGISTERS, A0_TOS, A1_TOS }; |  | 
| 182 // Pushing is done by the transition implied by kStateAfterPush.  Of course if |  | 
| 183 // the maximum number of registers was already allocated to the top of stack |  | 
| 184 // slots then one register must be physically pushed onto the stack. |  | 
| 185 const VirtualFrame::TopOfStack VirtualFrame::kStateAfterPush[TOS_STATES] = |  | 
| 186     { A0_TOS, A1_A0_TOS, A0_A1_TOS, A0_A1_TOS, A1_A0_TOS }; |  | 
| 187 |  | 
| 188 |  | 
| 189 void VirtualFrame::Drop(int count) { |  | 
| 190   UNIMPLEMENTED_MIPS(); |  | 
| 191 } |  | 
| 192 |  | 
| 193 |  | 
| 194 void VirtualFrame::Pop() { |  | 
| 195   UNIMPLEMENTED_MIPS(); |  | 
| 196 } |  | 
| 197 |  | 
| 198 |  | 
| 199 void VirtualFrame::EmitPop(Register reg) { |  | 
| 200   UNIMPLEMENTED_MIPS(); |  | 
| 201 } |  | 
| 202 |  | 
| 203 |  | 
| 204 void VirtualFrame::SpillAllButCopyTOSToA0() { |  | 
| 205   UNIMPLEMENTED_MIPS(); |  | 
| 206 } |  | 
| 207 |  | 
| 208 |  | 
| 209 void VirtualFrame::SpillAllButCopyTOSToA1() { |  | 
| 210   UNIMPLEMENTED_MIPS(); |  | 
| 211 } |  | 
| 212 |  | 
| 213 |  | 
| 214 void VirtualFrame::SpillAllButCopyTOSToA1A0() { |  | 
| 215   UNIMPLEMENTED_MIPS(); |  | 
| 216 } |  | 
| 217 |  | 
| 218 |  | 
| 219 Register VirtualFrame::Peek() { |  | 
| 220   UNIMPLEMENTED_MIPS(); |  | 
| 221   return no_reg; |  | 
| 222 } |  | 
| 223 |  | 
| 224 |  | 
| 225 Register VirtualFrame::Peek2() { |  | 
| 226   UNIMPLEMENTED_MIPS(); |  | 
| 227   return no_reg; |  | 
| 228 } |  | 
| 229 |  | 
| 230 |  | 
| 231 void VirtualFrame::Dup() { |  | 
| 232   UNIMPLEMENTED_MIPS(); |  | 
| 233 } |  | 
| 234 |  | 
| 235 |  | 
| 236 void VirtualFrame::Dup2() { |  | 
| 237   UNIMPLEMENTED_MIPS(); |  | 
| 238 } |  | 
| 239 |  | 
| 240 |  | 
| 241 Register VirtualFrame::PopToRegister(Register but_not_to_this_one) { |  | 
| 242   UNIMPLEMENTED_MIPS(); |  | 
| 243   return no_reg; |  | 
| 244 } |  | 
| 245 |  | 
| 246 |  | 
| 247 void VirtualFrame::EnsureOneFreeTOSRegister() { |  | 
| 248   UNIMPLEMENTED_MIPS(); |  | 
| 249 } |  | 
| 250 |  | 
| 251 |  | 
| 252 void VirtualFrame::EmitMultiPop(RegList regs) { |  | 
| 253   UNIMPLEMENTED_MIPS(); |  | 
| 254 } |  | 
| 255 |  | 
| 256 |  | 
| 257 void VirtualFrame::EmitPush(Register reg, TypeInfo info) { |  | 
| 258   UNIMPLEMENTED_MIPS(); |  | 
| 259 } |  | 
| 260 |  | 
| 261 |  | 
| 262 void VirtualFrame::SetElementAt(Register reg, int this_far_down) { |  | 
| 263   UNIMPLEMENTED_MIPS(); |  | 
| 264 } |  | 
| 265 |  | 
| 266 |  | 
| 267 Register VirtualFrame::GetTOSRegister() { |  | 
| 268   UNIMPLEMENTED_MIPS(); |  | 
| 269   return no_reg; |  | 
| 270 } |  | 
| 271 |  | 
| 272 |  | 
| 273 void VirtualFrame::EmitPush(Operand operand, TypeInfo info) { |  | 
| 274   UNIMPLEMENTED_MIPS(); |  | 
| 275 } |  | 
| 276 |  | 
| 277 |  | 
| 278 void VirtualFrame::EmitPush(MemOperand operand, TypeInfo info) { |  | 
| 279   UNIMPLEMENTED_MIPS(); |  | 
| 280 } |  | 
| 281 |  | 
| 282 |  | 
| 283 void VirtualFrame::EmitPushRoot(Heap::RootListIndex index) { |  | 
| 284   UNIMPLEMENTED_MIPS(); |  | 
| 285 } |  | 
| 286 |  | 
| 287 |  | 
| 288 void VirtualFrame::EmitMultiPush(RegList regs) { |  | 
| 289   UNIMPLEMENTED_MIPS(); |  | 
| 290 } |  | 
| 291 |  | 
| 292 |  | 
| 293 void VirtualFrame::EmitMultiPushReversed(RegList regs) { |  | 
| 294   UNIMPLEMENTED_MIPS(); |  | 
| 295 } |  | 
| 296 |  | 
| 297 |  | 
| 298 void VirtualFrame::SpillAll() { |  | 
| 299   UNIMPLEMENTED_MIPS(); |  | 
| 300 } |  | 
| 301 |  | 
| 302 |  | 
| 303 #undef __ |  | 
| 304 |  | 
| 305 } }  // namespace v8::internal |  | 
| 306 |  | 
| 307 #endif  // V8_TARGET_ARCH_MIPS |  | 
| OLD | NEW | 
|---|