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

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

Issue 2604833004: [builtins] FastNewFunctionContextStub becomes a builtin (Closed)
Patch Set: That was unnecessary, reverted :) Created 3 years, 11 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 2436 matching lines...) Expand 10 before | Expand all | Expand 10 after
2447 __ Dispatch(); 2447 __ Dispatch();
2448 } 2448 }
2449 2449
2450 // CreateFunctionContext <slots> 2450 // CreateFunctionContext <slots>
2451 // 2451 //
2452 // Creates a new context with number of |slots| for the function closure. 2452 // Creates a new context with number of |slots| for the function closure.
2453 void Interpreter::DoCreateFunctionContext(InterpreterAssembler* assembler) { 2453 void Interpreter::DoCreateFunctionContext(InterpreterAssembler* assembler) {
2454 Node* closure = __ LoadRegister(Register::function_closure()); 2454 Node* closure = __ LoadRegister(Register::function_closure());
2455 Node* slots = __ BytecodeOperandUImm(0); 2455 Node* slots = __ BytecodeOperandUImm(0);
2456 Node* context = __ GetContext(); 2456 Node* context = __ GetContext();
2457 __ SetAccumulator(FastNewFunctionContextStub::Generate( 2457 ConstructorBuiltinsAssembler constructor_assembler(assembler->state());
2458 assembler, closure, slots, context, FUNCTION_SCOPE)); 2458 __ SetAccumulator(constructor_assembler.EmitFastNewFunctionContext(
2459 closure, slots, context, FUNCTION_SCOPE));
2459 __ Dispatch(); 2460 __ Dispatch();
2460 } 2461 }
2461 2462
2462 // CreateEvalContext <slots> 2463 // CreateEvalContext <slots>
2463 // 2464 //
2464 // Creates a new context with number of |slots| for an eval closure. 2465 // Creates a new context with number of |slots| for an eval closure.
2465 void Interpreter::DoCreateEvalContext(InterpreterAssembler* assembler) { 2466 void Interpreter::DoCreateEvalContext(InterpreterAssembler* assembler) {
2466 Node* closure = __ LoadRegister(Register::function_closure()); 2467 Node* closure = __ LoadRegister(Register::function_closure());
2467 Node* slots = __ BytecodeOperandUImm(0); 2468 Node* slots = __ BytecodeOperandUImm(0);
2468 Node* context = __ GetContext(); 2469 Node* context = __ GetContext();
2469 __ SetAccumulator(FastNewFunctionContextStub::Generate( 2470 ConstructorBuiltinsAssembler constructor_assembler(assembler->state());
2470 assembler, closure, slots, context, EVAL_SCOPE)); 2471 __ SetAccumulator(constructor_assembler.EmitFastNewFunctionContext(
2472 closure, slots, context, EVAL_SCOPE));
2471 __ Dispatch(); 2473 __ Dispatch();
2472 } 2474 }
2473 2475
2474 // CreateWithContext <register> <scope_info_idx> 2476 // CreateWithContext <register> <scope_info_idx>
2475 // 2477 //
2476 // Creates a new context with the ScopeInfo at |scope_info_idx| for a 2478 // Creates a new context with the ScopeInfo at |scope_info_idx| for a
2477 // with-statement with the object in |register| and the closure in the 2479 // with-statement with the object in |register| and the closure in the
2478 // accumulator. 2480 // accumulator.
2479 void Interpreter::DoCreateWithContext(InterpreterAssembler* assembler) { 2481 void Interpreter::DoCreateWithContext(InterpreterAssembler* assembler) {
2480 Node* reg_index = __ BytecodeOperandReg(0); 2482 Node* reg_index = __ BytecodeOperandReg(0);
(...skipping 425 matching lines...) Expand 10 before | Expand all | Expand 10 after
2906 __ StoreObjectField(generator, JSGeneratorObject::kContinuationOffset, 2908 __ StoreObjectField(generator, JSGeneratorObject::kContinuationOffset,
2907 __ SmiTag(new_state)); 2909 __ SmiTag(new_state));
2908 __ SetAccumulator(old_state); 2910 __ SetAccumulator(old_state);
2909 2911
2910 __ Dispatch(); 2912 __ Dispatch();
2911 } 2913 }
2912 2914
2913 } // namespace interpreter 2915 } // namespace interpreter
2914 } // namespace internal 2916 } // namespace internal
2915 } // namespace v8 2917 } // namespace v8
OLDNEW
« src/builtins/builtins.h ('K') | « src/interpreter/bytecode-generator.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698