| OLD | NEW |
| 1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "src/interpreter/interpreter-assembler.h" | 5 #include "src/interpreter/interpreter-assembler.h" |
| 6 | 6 |
| 7 #include <limits> | 7 #include <limits> |
| 8 #include <ostream> | 8 #include <ostream> |
| 9 | 9 |
| 10 #include "src/code-factory.h" | 10 #include "src/code-factory.h" |
| (...skipping 467 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 478 IntPtrAdd(IntPtrConstant(offset), WordShl(index, kPointerSizeLog2)); | 478 IntPtrAdd(IntPtrConstant(offset), WordShl(index, kPointerSizeLog2)); |
| 479 if (Is64()) { | 479 if (Is64()) { |
| 480 return ChangeInt32ToInt64( | 480 return ChangeInt32ToInt64( |
| 481 Load(MachineType::Int32(), constant_pool, entry_offset)); | 481 Load(MachineType::Int32(), constant_pool, entry_offset)); |
| 482 } else { | 482 } else { |
| 483 return SmiUntag( | 483 return SmiUntag( |
| 484 Load(MachineType::AnyTagged(), constant_pool, entry_offset)); | 484 Load(MachineType::AnyTagged(), constant_pool, entry_offset)); |
| 485 } | 485 } |
| 486 } | 486 } |
| 487 | 487 |
| 488 Node* InterpreterAssembler::LoadContextSlot(Node* context, Node* slot_index) { | |
| 489 Node* offset = | |
| 490 IntPtrAdd(WordShl(slot_index, kPointerSizeLog2), | |
| 491 IntPtrConstant(Context::kHeaderSize - kHeapObjectTag)); | |
| 492 return Load(MachineType::AnyTagged(), context, offset); | |
| 493 } | |
| 494 | |
| 495 Node* InterpreterAssembler::StoreContextSlot(Node* context, Node* slot_index, | |
| 496 Node* value) { | |
| 497 Node* offset = | |
| 498 IntPtrAdd(WordShl(slot_index, kPointerSizeLog2), | |
| 499 IntPtrConstant(Context::kHeaderSize - kHeapObjectTag)); | |
| 500 return Store(MachineRepresentation::kTagged, context, offset, value); | |
| 501 } | |
| 502 | |
| 503 Node* InterpreterAssembler::LoadTypeFeedbackVector() { | 488 Node* InterpreterAssembler::LoadTypeFeedbackVector() { |
| 504 Node* function = LoadRegister(Register::function_closure()); | 489 Node* function = LoadRegister(Register::function_closure()); |
| 505 Node* literals = LoadObjectField(function, JSFunction::kLiteralsOffset); | 490 Node* literals = LoadObjectField(function, JSFunction::kLiteralsOffset); |
| 506 Node* vector = | 491 Node* vector = |
| 507 LoadObjectField(literals, LiteralsArray::kFeedbackVectorOffset); | 492 LoadObjectField(literals, LiteralsArray::kFeedbackVectorOffset); |
| 508 return vector; | 493 return vector; |
| 509 } | 494 } |
| 510 | 495 |
| 511 void InterpreterAssembler::CallPrologue() { | 496 void InterpreterAssembler::CallPrologue() { |
| 512 StoreRegister(SmiTag(BytecodeOffset()), Register::bytecode_offset()); | 497 StoreRegister(SmiTag(BytecodeOffset()), Register::bytecode_offset()); |
| (...skipping 860 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1373 Goto(&loop); | 1358 Goto(&loop); |
| 1374 } | 1359 } |
| 1375 Bind(&done_loop); | 1360 Bind(&done_loop); |
| 1376 | 1361 |
| 1377 return array; | 1362 return array; |
| 1378 } | 1363 } |
| 1379 | 1364 |
| 1380 } // namespace interpreter | 1365 } // namespace interpreter |
| 1381 } // namespace internal | 1366 } // namespace internal |
| 1382 } // namespace v8 | 1367 } // namespace v8 |
| OLD | NEW |