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 1386 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1397 } | 1397 } |
1398 | 1398 |
1399 | 1399 |
1400 void LCodeGen::DoStoreGlobal(LStoreGlobal* instr) { | 1400 void LCodeGen::DoStoreGlobal(LStoreGlobal* instr) { |
1401 Register value = ToRegister(instr->input()); | 1401 Register value = ToRegister(instr->input()); |
1402 __ mov(ip, Operand(Handle<Object>(instr->hydrogen()->cell()))); | 1402 __ mov(ip, Operand(Handle<Object>(instr->hydrogen()->cell()))); |
1403 __ str(value, FieldMemOperand(ip, JSGlobalPropertyCell::kValueOffset)); | 1403 __ str(value, FieldMemOperand(ip, JSGlobalPropertyCell::kValueOffset)); |
1404 } | 1404 } |
1405 | 1405 |
1406 | 1406 |
| 1407 void LCodeGen::DoLoadContextSlot(LLoadContextSlot* instr) { |
| 1408 #if 0 |
| 1409 // TODO(antonm): load a context with a separate instruction. |
| 1410 Register result = ToRegister(instr->result()); |
| 1411 HLoadContextSlot* hinstr = instr->hydrogen(); |
| 1412 Handle<Context> context = hinstr->context(); |
| 1413 Comment(";;; Load context slot %d out of %p", hinstr->index(), *context); |
| 1414 if (Heap::InNewSpace(*context)) { |
| 1415 Handle<JSGlobalPropertyCell> cell = |
| 1416 Factory::NewJSGlobalPropertyCell(context); |
| 1417 __ mov(result, Operand::Cell(cell)); |
| 1418 } else { |
| 1419 __ mov(result, context); |
| 1420 } |
| 1421 __ mov(result, Operand(result, Context::SlotOffset(hinstr->index()))); |
| 1422 #else |
| 1423 Abort("DoLoadContextSlot unimplemented"); |
| 1424 #endif |
| 1425 } |
| 1426 |
| 1427 |
1407 void LCodeGen::DoLoadNamedField(LLoadNamedField* instr) { | 1428 void LCodeGen::DoLoadNamedField(LLoadNamedField* instr) { |
1408 Abort("DoLoadNamedField unimplemented."); | 1429 Abort("DoLoadNamedField unimplemented."); |
1409 } | 1430 } |
1410 | 1431 |
1411 | 1432 |
1412 void LCodeGen::DoLoadNamedGeneric(LLoadNamedGeneric* instr) { | 1433 void LCodeGen::DoLoadNamedGeneric(LLoadNamedGeneric* instr) { |
1413 ASSERT(ToRegister(instr->object()).is(r0)); | 1434 ASSERT(ToRegister(instr->object()).is(r0)); |
1414 ASSERT(ToRegister(instr->result()).is(r0)); | 1435 ASSERT(ToRegister(instr->result()).is(r0)); |
1415 | 1436 |
1416 // Name is always in r2. | 1437 // Name is always in r2. |
(...skipping 721 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2138 | 2159 |
2139 | 2160 |
2140 void LCodeGen::DoOsrEntry(LOsrEntry* instr) { | 2161 void LCodeGen::DoOsrEntry(LOsrEntry* instr) { |
2141 Abort("DoOsrEntry unimplemented."); | 2162 Abort("DoOsrEntry unimplemented."); |
2142 } | 2163 } |
2143 | 2164 |
2144 | 2165 |
2145 #undef __ | 2166 #undef __ |
2146 | 2167 |
2147 } } // namespace v8::internal | 2168 } } // namespace v8::internal |
OLD | NEW |