Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(19)

Side by Side Diff: src/interpreter/interpreter.cc

Issue 2172223002: [stubs] Call interface descriptors cleanup. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@store-ic-tf
Patch Set: conversions Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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.h" 5 #include "src/interpreter/interpreter.h"
6 6
7 #include <fstream> 7 #include <fstream>
8 #include <memory> 8 #include <memory>
9 9
10 #include "src/ast/prettyprinter.h" 10 #include "src/ast/prettyprinter.h"
(...skipping 365 matching lines...) Expand 10 before | Expand all | Expand 10 after
376 void Interpreter::DoMov(InterpreterAssembler* assembler) { 376 void Interpreter::DoMov(InterpreterAssembler* assembler) {
377 Node* src_index = __ BytecodeOperandReg(0); 377 Node* src_index = __ BytecodeOperandReg(0);
378 Node* src_value = __ LoadRegister(src_index); 378 Node* src_value = __ LoadRegister(src_index);
379 Node* dst_index = __ BytecodeOperandReg(1); 379 Node* dst_index = __ BytecodeOperandReg(1);
380 __ StoreRegister(src_value, dst_index); 380 __ StoreRegister(src_value, dst_index);
381 __ Dispatch(); 381 __ Dispatch();
382 } 382 }
383 383
384 Node* Interpreter::BuildLoadGlobal(Callable ic, 384 Node* Interpreter::BuildLoadGlobal(Callable ic,
385 InterpreterAssembler* assembler) { 385 InterpreterAssembler* assembler) {
386 typedef LoadGlobalWithVectorDescriptor Descriptor;
387 typedef InterpreterAssembler::Arg Arg;
rmcilroy 2016/07/26 13:27:53 Please do this typedef once at the top of the file
Igor Sheludko 2016/07/26 14:30:31 Done.
386 // Get the global object. 388 // Get the global object.
387 Node* context = __ GetContext(); 389 Node* context = __ GetContext();
388 390
389 // Load the global via the LoadGlobalIC. 391 // Load the global via the LoadGlobalIC.
390 Node* code_target = __ HeapConstant(ic.code()); 392 Node* code_target = __ HeapConstant(ic.code());
391 Node* raw_slot = __ BytecodeOperandIdx(0); 393 Node* raw_slot = __ BytecodeOperandIdx(0);
392 Node* smi_slot = __ SmiTag(raw_slot); 394 Node* smi_slot = __ SmiTag(raw_slot);
393 Node* type_feedback_vector = __ LoadTypeFeedbackVector(); 395 Node* type_feedback_vector = __ LoadTypeFeedbackVector();
394 return __ CallStub(ic.descriptor(), code_target, context, smi_slot, 396 return __ CallStub(ic.descriptor(), code_target, context,
395 type_feedback_vector); 397 Arg(Descriptor::kSlot, smi_slot),
398 Arg(Descriptor::kVector, type_feedback_vector));
396 } 399 }
397 400
398 // LdaGlobal <slot> 401 // LdaGlobal <slot>
399 // 402 //
400 // Load the global with name in constant pool entry <name_index> into the 403 // Load the global with name in constant pool entry <name_index> into the
401 // accumulator using FeedBackVector slot <slot> outside of a typeof. 404 // accumulator using FeedBackVector slot <slot> outside of a typeof.
402 void Interpreter::DoLdaGlobal(InterpreterAssembler* assembler) { 405 void Interpreter::DoLdaGlobal(InterpreterAssembler* assembler) {
403 Callable ic = 406 Callable ic =
404 CodeFactory::LoadGlobalICInOptimizedCode(isolate_, NOT_INSIDE_TYPEOF); 407 CodeFactory::LoadGlobalICInOptimizedCode(isolate_, NOT_INSIDE_TYPEOF);
405 Node* result = BuildLoadGlobal(ic, assembler); 408 Node* result = BuildLoadGlobal(ic, assembler);
(...skipping 20 matching lines...) Expand all
426 // accumulator using FeedBackVector slot <slot> inside of a typeof. 429 // accumulator using FeedBackVector slot <slot> inside of a typeof.
427 void Interpreter::DoLdaGlobalInsideTypeof(InterpreterAssembler* assembler) { 430 void Interpreter::DoLdaGlobalInsideTypeof(InterpreterAssembler* assembler) {
428 Callable ic = 431 Callable ic =
429 CodeFactory::LoadGlobalICInOptimizedCode(isolate_, INSIDE_TYPEOF); 432 CodeFactory::LoadGlobalICInOptimizedCode(isolate_, INSIDE_TYPEOF);
430 Node* result = BuildLoadGlobal(ic, assembler); 433 Node* result = BuildLoadGlobal(ic, assembler);
431 __ SetAccumulator(result); 434 __ SetAccumulator(result);
432 __ Dispatch(); 435 __ Dispatch();
433 } 436 }
434 437
435 void Interpreter::DoStaGlobal(Callable ic, InterpreterAssembler* assembler) { 438 void Interpreter::DoStaGlobal(Callable ic, InterpreterAssembler* assembler) {
439 typedef StoreWithVectorDescriptor Descriptor;
440 typedef InterpreterAssembler::Arg Arg;
436 // Get the global object. 441 // Get the global object.
437 Node* context = __ GetContext(); 442 Node* context = __ GetContext();
438 Node* native_context = 443 Node* native_context =
439 __ LoadContextSlot(context, Context::NATIVE_CONTEXT_INDEX); 444 __ LoadContextSlot(context, Context::NATIVE_CONTEXT_INDEX);
440 Node* global = __ LoadContextSlot(native_context, Context::EXTENSION_INDEX); 445 Node* global = __ LoadContextSlot(native_context, Context::EXTENSION_INDEX);
441 446
442 // Store the global via the StoreIC. 447 // Store the global via the StoreIC.
443 Node* code_target = __ HeapConstant(ic.code()); 448 Node* code_target = __ HeapConstant(ic.code());
444 Node* constant_index = __ BytecodeOperandIdx(0); 449 Node* constant_index = __ BytecodeOperandIdx(0);
445 Node* name = __ LoadConstantPoolEntry(constant_index); 450 Node* name = __ LoadConstantPoolEntry(constant_index);
446 Node* value = __ GetAccumulator(); 451 Node* value = __ GetAccumulator();
447 Node* raw_slot = __ BytecodeOperandIdx(1); 452 Node* raw_slot = __ BytecodeOperandIdx(1);
448 Node* smi_slot = __ SmiTag(raw_slot); 453 Node* smi_slot = __ SmiTag(raw_slot);
449 Node* type_feedback_vector = __ LoadTypeFeedbackVector(); 454 Node* type_feedback_vector = __ LoadTypeFeedbackVector();
450 __ CallStub(ic.descriptor(), code_target, context, global, name, value, 455 __ CallStub(ic.descriptor(), code_target, context,
451 smi_slot, type_feedback_vector); 456 Arg(Descriptor::kReceiver, global), Arg(Descriptor::kName, name),
457 Arg(Descriptor::kValue, value), Arg(Descriptor::kSlot, smi_slot),
458 Arg(Descriptor::kVector, type_feedback_vector));
452 __ Dispatch(); 459 __ Dispatch();
453 } 460 }
454 461
455 // StaGlobalSloppy <name_index> <slot> 462 // StaGlobalSloppy <name_index> <slot>
456 // 463 //
457 // Store the value in the accumulator into the global with name in constant pool 464 // Store the value in the accumulator into the global with name in constant pool
458 // entry <name_index> using FeedBackVector slot <slot> in sloppy mode. 465 // entry <name_index> using FeedBackVector slot <slot> in sloppy mode.
459 void Interpreter::DoStaGlobalSloppy(InterpreterAssembler* assembler) { 466 void Interpreter::DoStaGlobalSloppy(InterpreterAssembler* assembler) {
460 Callable ic = CodeFactory::StoreICInOptimizedCode(isolate_, SLOPPY); 467 Callable ic = CodeFactory::StoreICInOptimizedCode(isolate_, SLOPPY);
461 DoStaGlobal(ic, assembler); 468 DoStaGlobal(ic, assembler);
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
560 // StaLookupSlotStrict <name_index> 567 // StaLookupSlotStrict <name_index>
561 // 568 //
562 // Store the object in accumulator to the object with the name in constant 569 // Store the object in accumulator to the object with the name in constant
563 // pool entry |name_index| in strict mode. 570 // pool entry |name_index| in strict mode.
564 void Interpreter::DoStaLookupSlotStrict(InterpreterAssembler* assembler) { 571 void Interpreter::DoStaLookupSlotStrict(InterpreterAssembler* assembler) {
565 DoStaLookupSlot(LanguageMode::STRICT, assembler); 572 DoStaLookupSlot(LanguageMode::STRICT, assembler);
566 } 573 }
567 574
568 Node* Interpreter::BuildLoadNamedProperty(Callable ic, 575 Node* Interpreter::BuildLoadNamedProperty(Callable ic,
569 InterpreterAssembler* assembler) { 576 InterpreterAssembler* assembler) {
577 typedef LoadWithVectorDescriptor Descriptor;
578 typedef InterpreterAssembler::Arg Arg;
570 Node* code_target = __ HeapConstant(ic.code()); 579 Node* code_target = __ HeapConstant(ic.code());
571 Node* register_index = __ BytecodeOperandReg(0); 580 Node* register_index = __ BytecodeOperandReg(0);
572 Node* object = __ LoadRegister(register_index); 581 Node* object = __ LoadRegister(register_index);
573 Node* constant_index = __ BytecodeOperandIdx(1); 582 Node* constant_index = __ BytecodeOperandIdx(1);
574 Node* name = __ LoadConstantPoolEntry(constant_index); 583 Node* name = __ LoadConstantPoolEntry(constant_index);
575 Node* raw_slot = __ BytecodeOperandIdx(2); 584 Node* raw_slot = __ BytecodeOperandIdx(2);
576 Node* smi_slot = __ SmiTag(raw_slot); 585 Node* smi_slot = __ SmiTag(raw_slot);
577 Node* type_feedback_vector = __ LoadTypeFeedbackVector(); 586 Node* type_feedback_vector = __ LoadTypeFeedbackVector();
578 Node* context = __ GetContext(); 587 Node* context = __ GetContext();
579 return __ CallStub(ic.descriptor(), code_target, context, object, name, 588 return __ CallStub(
580 smi_slot, type_feedback_vector); 589 ic.descriptor(), code_target, context, Arg(Descriptor::kReceiver, object),
590 Arg(Descriptor::kName, name), Arg(Descriptor::kSlot, smi_slot),
591 Arg(Descriptor::kVector, type_feedback_vector));
581 } 592 }
582 593
583 // LdaNamedProperty <object> <name_index> <slot> 594 // LdaNamedProperty <object> <name_index> <slot>
584 // 595 //
585 // Calls the LoadIC at FeedBackVector slot <slot> for <object> and the name at 596 // Calls the LoadIC at FeedBackVector slot <slot> for <object> and the name at
586 // constant pool entry <name_index>. 597 // constant pool entry <name_index>.
587 void Interpreter::DoLdaNamedProperty(InterpreterAssembler* assembler) { 598 void Interpreter::DoLdaNamedProperty(InterpreterAssembler* assembler) {
588 Callable ic = CodeFactory::LoadICInOptimizedCode(isolate_); 599 Callable ic = CodeFactory::LoadICInOptimizedCode(isolate_);
589 Node* result = BuildLoadNamedProperty(ic, assembler); 600 Node* result = BuildLoadNamedProperty(ic, assembler);
590 __ SetAccumulator(result); 601 __ SetAccumulator(result);
591 __ Dispatch(); 602 __ Dispatch();
592 } 603 }
593 604
594 // LdrNamedProperty <object> <name_index> <slot> <reg> 605 // LdrNamedProperty <object> <name_index> <slot> <reg>
595 // 606 //
596 // Calls the LoadIC at FeedBackVector slot <slot> for <object> and the name at 607 // Calls the LoadIC at FeedBackVector slot <slot> for <object> and the name at
597 // constant pool entry <name_index> and puts the result into register <reg>. 608 // constant pool entry <name_index> and puts the result into register <reg>.
598 void Interpreter::DoLdrNamedProperty(InterpreterAssembler* assembler) { 609 void Interpreter::DoLdrNamedProperty(InterpreterAssembler* assembler) {
599 Callable ic = CodeFactory::LoadICInOptimizedCode(isolate_); 610 Callable ic = CodeFactory::LoadICInOptimizedCode(isolate_);
600 Node* result = BuildLoadNamedProperty(ic, assembler); 611 Node* result = BuildLoadNamedProperty(ic, assembler);
601 Node* destination = __ BytecodeOperandReg(3); 612 Node* destination = __ BytecodeOperandReg(3);
602 __ StoreRegister(result, destination); 613 __ StoreRegister(result, destination);
603 __ Dispatch(); 614 __ Dispatch();
604 } 615 }
605 616
606 Node* Interpreter::BuildLoadKeyedProperty(Callable ic, 617 Node* Interpreter::BuildLoadKeyedProperty(Callable ic,
607 InterpreterAssembler* assembler) { 618 InterpreterAssembler* assembler) {
619 typedef LoadWithVectorDescriptor Descriptor;
620 typedef InterpreterAssembler::Arg Arg;
608 Node* code_target = __ HeapConstant(ic.code()); 621 Node* code_target = __ HeapConstant(ic.code());
609 Node* reg_index = __ BytecodeOperandReg(0); 622 Node* reg_index = __ BytecodeOperandReg(0);
610 Node* object = __ LoadRegister(reg_index); 623 Node* object = __ LoadRegister(reg_index);
611 Node* name = __ GetAccumulator(); 624 Node* name = __ GetAccumulator();
612 Node* raw_slot = __ BytecodeOperandIdx(1); 625 Node* raw_slot = __ BytecodeOperandIdx(1);
613 Node* smi_slot = __ SmiTag(raw_slot); 626 Node* smi_slot = __ SmiTag(raw_slot);
614 Node* type_feedback_vector = __ LoadTypeFeedbackVector(); 627 Node* type_feedback_vector = __ LoadTypeFeedbackVector();
615 Node* context = __ GetContext(); 628 Node* context = __ GetContext();
616 return __ CallStub(ic.descriptor(), code_target, context, object, name, 629 return __ CallStub(
617 smi_slot, type_feedback_vector); 630 ic.descriptor(), code_target, context, Arg(Descriptor::kReceiver, object),
631 Arg(Descriptor::kName, name), Arg(Descriptor::kSlot, smi_slot),
632 Arg(Descriptor::kVector, type_feedback_vector));
618 } 633 }
619 634
620 // KeyedLoadIC <object> <slot> 635 // KeyedLoadIC <object> <slot>
621 // 636 //
622 // Calls the KeyedLoadIC at FeedBackVector slot <slot> for <object> and the key 637 // Calls the KeyedLoadIC at FeedBackVector slot <slot> for <object> and the key
623 // in the accumulator. 638 // in the accumulator.
624 void Interpreter::DoLdaKeyedProperty(InterpreterAssembler* assembler) { 639 void Interpreter::DoLdaKeyedProperty(InterpreterAssembler* assembler) {
625 Callable ic = CodeFactory::KeyedLoadICInOptimizedCode(isolate_); 640 Callable ic = CodeFactory::KeyedLoadICInOptimizedCode(isolate_);
626 Node* result = BuildLoadKeyedProperty(ic, assembler); 641 Node* result = BuildLoadKeyedProperty(ic, assembler);
627 __ SetAccumulator(result); 642 __ SetAccumulator(result);
628 __ Dispatch(); 643 __ Dispatch();
629 } 644 }
630 645
631 // LdrKeyedProperty <object> <slot> <reg> 646 // LdrKeyedProperty <object> <slot> <reg>
632 // 647 //
633 // Calls the KeyedLoadIC at FeedBackVector slot <slot> for <object> and the key 648 // Calls the KeyedLoadIC at FeedBackVector slot <slot> for <object> and the key
634 // in the accumulator and puts the result in register <reg>. 649 // in the accumulator and puts the result in register <reg>.
635 void Interpreter::DoLdrKeyedProperty(InterpreterAssembler* assembler) { 650 void Interpreter::DoLdrKeyedProperty(InterpreterAssembler* assembler) {
636 Callable ic = CodeFactory::KeyedLoadICInOptimizedCode(isolate_); 651 Callable ic = CodeFactory::KeyedLoadICInOptimizedCode(isolate_);
637 Node* result = BuildLoadKeyedProperty(ic, assembler); 652 Node* result = BuildLoadKeyedProperty(ic, assembler);
638 Node* destination = __ BytecodeOperandReg(2); 653 Node* destination = __ BytecodeOperandReg(2);
639 __ StoreRegister(result, destination); 654 __ StoreRegister(result, destination);
640 __ Dispatch(); 655 __ Dispatch();
641 } 656 }
642 657
643 void Interpreter::DoStoreIC(Callable ic, InterpreterAssembler* assembler) { 658 void Interpreter::DoStoreIC(Callable ic, InterpreterAssembler* assembler) {
659 typedef StoreWithVectorDescriptor Descriptor;
660 typedef InterpreterAssembler::Arg Arg;
644 Node* code_target = __ HeapConstant(ic.code()); 661 Node* code_target = __ HeapConstant(ic.code());
645 Node* object_reg_index = __ BytecodeOperandReg(0); 662 Node* object_reg_index = __ BytecodeOperandReg(0);
646 Node* object = __ LoadRegister(object_reg_index); 663 Node* object = __ LoadRegister(object_reg_index);
647 Node* constant_index = __ BytecodeOperandIdx(1); 664 Node* constant_index = __ BytecodeOperandIdx(1);
648 Node* name = __ LoadConstantPoolEntry(constant_index); 665 Node* name = __ LoadConstantPoolEntry(constant_index);
649 Node* value = __ GetAccumulator(); 666 Node* value = __ GetAccumulator();
650 Node* raw_slot = __ BytecodeOperandIdx(2); 667 Node* raw_slot = __ BytecodeOperandIdx(2);
651 Node* smi_slot = __ SmiTag(raw_slot); 668 Node* smi_slot = __ SmiTag(raw_slot);
652 Node* type_feedback_vector = __ LoadTypeFeedbackVector(); 669 Node* type_feedback_vector = __ LoadTypeFeedbackVector();
653 Node* context = __ GetContext(); 670 Node* context = __ GetContext();
654 __ CallStub(ic.descriptor(), code_target, context, object, name, value, 671 __ CallStub(ic.descriptor(), code_target, context,
655 smi_slot, type_feedback_vector); 672 Arg(Descriptor::kReceiver, object), Arg(Descriptor::kName, name),
673 Arg(Descriptor::kValue, value), Arg(Descriptor::kSlot, smi_slot),
674 Arg(Descriptor::kVector, type_feedback_vector));
656 __ Dispatch(); 675 __ Dispatch();
657 } 676 }
658 677
659 // StaNamedPropertySloppy <object> <name_index> <slot> 678 // StaNamedPropertySloppy <object> <name_index> <slot>
660 // 679 //
661 // Calls the sloppy mode StoreIC at FeedBackVector slot <slot> for <object> and 680 // Calls the sloppy mode StoreIC at FeedBackVector slot <slot> for <object> and
662 // the name in constant pool entry <name_index> with the value in the 681 // the name in constant pool entry <name_index> with the value in the
663 // accumulator. 682 // accumulator.
664 void Interpreter::DoStaNamedPropertySloppy(InterpreterAssembler* assembler) { 683 void Interpreter::DoStaNamedPropertySloppy(InterpreterAssembler* assembler) {
665 Callable ic = CodeFactory::StoreICInOptimizedCode(isolate_, SLOPPY); 684 Callable ic = CodeFactory::StoreICInOptimizedCode(isolate_, SLOPPY);
666 DoStoreIC(ic, assembler); 685 DoStoreIC(ic, assembler);
667 } 686 }
668 687
669 // StaNamedPropertyStrict <object> <name_index> <slot> 688 // StaNamedPropertyStrict <object> <name_index> <slot>
670 // 689 //
671 // Calls the strict mode StoreIC at FeedBackVector slot <slot> for <object> and 690 // Calls the strict mode StoreIC at FeedBackVector slot <slot> for <object> and
672 // the name in constant pool entry <name_index> with the value in the 691 // the name in constant pool entry <name_index> with the value in the
673 // accumulator. 692 // accumulator.
674 void Interpreter::DoStaNamedPropertyStrict(InterpreterAssembler* assembler) { 693 void Interpreter::DoStaNamedPropertyStrict(InterpreterAssembler* assembler) {
675 Callable ic = CodeFactory::StoreICInOptimizedCode(isolate_, STRICT); 694 Callable ic = CodeFactory::StoreICInOptimizedCode(isolate_, STRICT);
676 DoStoreIC(ic, assembler); 695 DoStoreIC(ic, assembler);
677 } 696 }
678 697
679 void Interpreter::DoKeyedStoreIC(Callable ic, InterpreterAssembler* assembler) { 698 void Interpreter::DoKeyedStoreIC(Callable ic, InterpreterAssembler* assembler) {
699 typedef StoreWithVectorDescriptor Descriptor;
700 typedef InterpreterAssembler::Arg Arg;
680 Node* code_target = __ HeapConstant(ic.code()); 701 Node* code_target = __ HeapConstant(ic.code());
681 Node* object_reg_index = __ BytecodeOperandReg(0); 702 Node* object_reg_index = __ BytecodeOperandReg(0);
682 Node* object = __ LoadRegister(object_reg_index); 703 Node* object = __ LoadRegister(object_reg_index);
683 Node* name_reg_index = __ BytecodeOperandReg(1); 704 Node* name_reg_index = __ BytecodeOperandReg(1);
684 Node* name = __ LoadRegister(name_reg_index); 705 Node* name = __ LoadRegister(name_reg_index);
685 Node* value = __ GetAccumulator(); 706 Node* value = __ GetAccumulator();
686 Node* raw_slot = __ BytecodeOperandIdx(2); 707 Node* raw_slot = __ BytecodeOperandIdx(2);
687 Node* smi_slot = __ SmiTag(raw_slot); 708 Node* smi_slot = __ SmiTag(raw_slot);
688 Node* type_feedback_vector = __ LoadTypeFeedbackVector(); 709 Node* type_feedback_vector = __ LoadTypeFeedbackVector();
689 Node* context = __ GetContext(); 710 Node* context = __ GetContext();
690 __ CallStub(ic.descriptor(), code_target, context, object, name, value, 711 __ CallStub(ic.descriptor(), code_target, context,
691 smi_slot, type_feedback_vector); 712 Arg(Descriptor::kReceiver, object), Arg(Descriptor::kName, name),
713 Arg(Descriptor::kValue, value), Arg(Descriptor::kSlot, smi_slot),
714 Arg(Descriptor::kVector, type_feedback_vector));
692 __ Dispatch(); 715 __ Dispatch();
693 } 716 }
694 717
695 // StaKeyedPropertySloppy <object> <key> <slot> 718 // StaKeyedPropertySloppy <object> <key> <slot>
696 // 719 //
697 // Calls the sloppy mode KeyStoreIC at FeedBackVector slot <slot> for <object> 720 // Calls the sloppy mode KeyStoreIC at FeedBackVector slot <slot> for <object>
698 // and the key <key> with the value in the accumulator. 721 // and the key <key> with the value in the accumulator.
699 void Interpreter::DoStaKeyedPropertySloppy(InterpreterAssembler* assembler) { 722 void Interpreter::DoStaKeyedPropertySloppy(InterpreterAssembler* assembler) {
700 Callable ic = CodeFactory::KeyedStoreICInOptimizedCode(isolate_, SLOPPY); 723 Callable ic = CodeFactory::KeyedStoreICInOptimizedCode(isolate_, SLOPPY);
701 DoKeyedStoreIC(ic, assembler); 724 DoKeyedStoreIC(ic, assembler);
(...skipping 1428 matching lines...) Expand 10 before | Expand all | Expand 10 after
2130 __ StoreObjectField(generator, JSGeneratorObject::kContinuationOffset, 2153 __ StoreObjectField(generator, JSGeneratorObject::kContinuationOffset,
2131 __ SmiTag(new_state)); 2154 __ SmiTag(new_state));
2132 __ SetAccumulator(old_state); 2155 __ SetAccumulator(old_state);
2133 2156
2134 __ Dispatch(); 2157 __ Dispatch();
2135 } 2158 }
2136 2159
2137 } // namespace interpreter 2160 } // namespace interpreter
2138 } // namespace internal 2161 } // namespace internal
2139 } // namespace v8 2162 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698