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

Side by Side Diff: src/interpreter/bytecode-array-builder.h

Issue 2542903003: [Interpreter] Templatize AccumulatorUsage and OperandType for bytecode creation. (Closed)
Patch Set: Remove commented code and rebase Created 4 years 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
« no previous file with comments | « no previous file | src/interpreter/bytecode-array-builder.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 #ifndef V8_INTERPRETER_BYTECODE_ARRAY_BUILDER_H_ 5 #ifndef V8_INTERPRETER_BYTECODE_ARRAY_BUILDER_H_
6 #define V8_INTERPRETER_BYTECODE_ARRAY_BUILDER_H_ 6 #define V8_INTERPRETER_BYTECODE_ARRAY_BUILDER_H_
7 7
8 #include "src/ast/ast.h" 8 #include "src/ast/ast.h"
9 #include "src/base/compiler-specific.h" 9 #include "src/base/compiler-specific.h"
10 #include "src/globals.h" 10 #include "src/globals.h"
(...skipping 347 matching lines...) Expand 10 before | Expand all | Expand 10 after
358 BytecodeRegisterAllocator* register_allocator() { 358 BytecodeRegisterAllocator* register_allocator() {
359 return &register_allocator_; 359 return &register_allocator_;
360 } 360 }
361 const BytecodeRegisterAllocator* register_allocator() const { 361 const BytecodeRegisterAllocator* register_allocator() const {
362 return &register_allocator_; 362 return &register_allocator_;
363 } 363 }
364 Zone* zone() const { return zone_; } 364 Zone* zone() const { return zone_; }
365 365
366 private: 366 private:
367 friend class BytecodeRegisterAllocator; 367 friend class BytecodeRegisterAllocator;
368 template <OperandType... operand_types> 368 template <Bytecode bytecode, AccumulatorUse accumulator_use,
369 OperandType... operand_types>
369 friend class BytecodeNodeBuilder; 370 friend class BytecodeNodeBuilder;
370 371
371 // Returns the current source position for the given |bytecode|. 372 // Returns the current source position for the given |bytecode|.
372 INLINE(BytecodeSourceInfo CurrentSourcePosition(Bytecode bytecode)); 373 INLINE(BytecodeSourceInfo CurrentSourcePosition(Bytecode bytecode));
373 374
374 #define DECLARE_BYTECODE_OUTPUT(Name, ...) \ 375 #define DECLARE_BYTECODE_OUTPUT(Name, ...) \
375 template <typename... Operands> \ 376 template <typename... Operands> \
376 INLINE(void Output##Name(Operands... operands)); \ 377 INLINE(void Output##Name(Operands... operands)); \
377 template <typename... Operands> \ 378 template <typename... Operands> \
378 INLINE(void Output##Name(BytecodeLabel* label, Operands... operands)); 379 INLINE(void Output##Name(BytecodeLabel* label, Operands... operands));
379 BYTECODE_LIST(DECLARE_BYTECODE_OUTPUT) 380 BYTECODE_LIST(DECLARE_BYTECODE_OUTPUT)
380 #undef DECLARE_OPERAND_TYPE_INFO 381 #undef DECLARE_OPERAND_TYPE_INFO
381 382
382 bool RegisterIsValid(Register reg) const; 383 bool RegisterIsValid(Register reg) const;
383 bool RegisterListIsValid(RegisterList reg_list) const; 384 bool RegisterListIsValid(RegisterList reg_list) const;
384 385
385 // Set position for return. 386 // Set position for return.
386 void SetReturnPosition(); 387 void SetReturnPosition();
387 388
388 // Gets a constant pool entry for the |object|. 389 // Gets a constant pool entry for the |object|.
389 size_t GetConstantPoolEntry(Handle<Object> object); 390 size_t GetConstantPoolEntry(Handle<Object> object);
390 391
391 // Not implemented as the illegal bytecode is used inside internally 392 // Not implemented as the illegal bytecode is used inside internally
392 // to indicate a bytecode field is not valid or an error has occured 393 // to indicate a bytecode field is not valid or an error has occured
393 // during bytecode generation. 394 // during bytecode generation.
394 BytecodeArrayBuilder& Illegal(); 395 BytecodeArrayBuilder& Illegal();
395 396
396 void PrepareToOutputBytecode(Bytecode bytecode); 397 template <Bytecode bytecode, AccumulatorUse accumulator_use>
398 void PrepareToOutputBytecode();
397 399
398 void LeaveBasicBlock() { return_seen_in_block_ = false; } 400 void LeaveBasicBlock() { return_seen_in_block_ = false; }
399 401
400 BytecodeArrayWriter* bytecode_array_writer() { 402 BytecodeArrayWriter* bytecode_array_writer() {
401 return &bytecode_array_writer_; 403 return &bytecode_array_writer_;
402 } 404 }
403 BytecodePipelineStage* pipeline() { return pipeline_; } 405 BytecodePipelineStage* pipeline() { return pipeline_; }
404 ConstantArrayBuilder* constant_array_builder() { 406 ConstantArrayBuilder* constant_array_builder() {
405 return &constant_array_builder_; 407 return &constant_array_builder_;
406 } 408 }
(...skipping 22 matching lines...) Expand all
429 static int const kNoFeedbackSlot = 0; 431 static int const kNoFeedbackSlot = 0;
430 432
431 DISALLOW_COPY_AND_ASSIGN(BytecodeArrayBuilder); 433 DISALLOW_COPY_AND_ASSIGN(BytecodeArrayBuilder);
432 }; 434 };
433 435
434 } // namespace interpreter 436 } // namespace interpreter
435 } // namespace internal 437 } // namespace internal
436 } // namespace v8 438 } // namespace v8
437 439
438 #endif // V8_INTERPRETER_BYTECODE_ARRAY_BUILDER_H_ 440 #endif // V8_INTERPRETER_BYTECODE_ARRAY_BUILDER_H_
OLDNEW
« no previous file with comments | « no previous file | src/interpreter/bytecode-array-builder.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698