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

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

Issue 1744123003: [debugger] fix break locations for assignments and return. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: fix .status Created 4 years, 9 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 #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/interpreter/bytecode-register-allocator.h" 9 #include "src/interpreter/bytecode-register-allocator.h"
10 #include "src/interpreter/bytecodes.h" 10 #include "src/interpreter/bytecodes.h"
(...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after
250 250
251 // Exception handling. 251 // Exception handling.
252 BytecodeArrayBuilder& MarkHandler(int handler_id, bool will_catch); 252 BytecodeArrayBuilder& MarkHandler(int handler_id, bool will_catch);
253 BytecodeArrayBuilder& MarkTryBegin(int handler_id, Register context); 253 BytecodeArrayBuilder& MarkTryBegin(int handler_id, Register context);
254 BytecodeArrayBuilder& MarkTryEnd(int handler_id); 254 BytecodeArrayBuilder& MarkTryEnd(int handler_id);
255 255
256 // Creates a new handler table entry and returns a {hander_id} identifying the 256 // Creates a new handler table entry and returns a {hander_id} identifying the
257 // entry, so that it can be referenced by above exception handling support. 257 // entry, so that it can be referenced by above exception handling support.
258 int NewHandlerEntry() { return handler_table_builder()->NewHandlerEntry(); } 258 int NewHandlerEntry() { return handler_table_builder()->NewHandlerEntry(); }
259 259
260 void InitializeReturnPosition(FunctionLiteral* literal);
261
260 void SetStatementPosition(Statement* stmt); 262 void SetStatementPosition(Statement* stmt);
261 void SetExpressionPosition(Expression* expr); 263 void SetExpressionPosition(Expression* expr);
262 264
263 // Accessors 265 // Accessors
264 Zone* zone() const { return zone_; } 266 Zone* zone() const { return zone_; }
265 TemporaryRegisterAllocator* temporary_register_allocator() { 267 TemporaryRegisterAllocator* temporary_register_allocator() {
266 return &temporary_allocator_; 268 return &temporary_allocator_;
267 } 269 }
268 const TemporaryRegisterAllocator* temporary_register_allocator() const { 270 const TemporaryRegisterAllocator* temporary_register_allocator() const {
269 return &temporary_allocator_; 271 return &temporary_allocator_;
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
327 void LeaveBasicBlock(); 329 void LeaveBasicBlock();
328 330
329 bool OperandIsValid(Bytecode bytecode, int operand_index, 331 bool OperandIsValid(Bytecode bytecode, int operand_index,
330 uint32_t operand_value) const; 332 uint32_t operand_value) const;
331 bool RegisterIsValid(Register reg, OperandType reg_type) const; 333 bool RegisterIsValid(Register reg, OperandType reg_type) const;
332 334
333 bool LastBytecodeInSameBlock() const; 335 bool LastBytecodeInSameBlock() const;
334 bool NeedToBooleanCast(); 336 bool NeedToBooleanCast();
335 bool IsRegisterInAccumulator(Register reg); 337 bool IsRegisterInAccumulator(Register reg);
336 338
337 // Set position for implicit return. 339 // Set position for return.
338 void SetReturnPosition(FunctionLiteral* fun); 340 void SetReturnPosition();
339 341
340 // Gets a constant pool entry for the |object|. 342 // Gets a constant pool entry for the |object|.
341 size_t GetConstantPoolEntry(Handle<Object> object); 343 size_t GetConstantPoolEntry(Handle<Object> object);
342 344
343 ZoneVector<uint8_t>* bytecodes() { return &bytecodes_; } 345 ZoneVector<uint8_t>* bytecodes() { return &bytecodes_; }
344 const ZoneVector<uint8_t>* bytecodes() const { return &bytecodes_; } 346 const ZoneVector<uint8_t>* bytecodes() const { return &bytecodes_; }
345 Isolate* isolate() const { return isolate_; } 347 Isolate* isolate() const { return isolate_; }
346 ConstantArrayBuilder* constant_array_builder() { 348 ConstantArrayBuilder* constant_array_builder() {
347 return &constant_array_builder_; 349 return &constant_array_builder_;
348 } 350 }
(...skipping 15 matching lines...) Expand all
364 ConstantArrayBuilder constant_array_builder_; 366 ConstantArrayBuilder constant_array_builder_;
365 HandlerTableBuilder handler_table_builder_; 367 HandlerTableBuilder handler_table_builder_;
366 SourcePositionTableBuilder source_position_table_builder_; 368 SourcePositionTableBuilder source_position_table_builder_;
367 size_t last_block_end_; 369 size_t last_block_end_;
368 size_t last_bytecode_start_; 370 size_t last_bytecode_start_;
369 bool exit_seen_in_block_; 371 bool exit_seen_in_block_;
370 int unbound_jumps_; 372 int unbound_jumps_;
371 int parameter_count_; 373 int parameter_count_;
372 int local_register_count_; 374 int local_register_count_;
373 int context_register_count_; 375 int context_register_count_;
376 int return_position_;
374 TemporaryRegisterAllocator temporary_allocator_; 377 TemporaryRegisterAllocator temporary_allocator_;
375 RegisterTranslator register_translator_; 378 RegisterTranslator register_translator_;
376 379
377 DISALLOW_COPY_AND_ASSIGN(BytecodeArrayBuilder); 380 DISALLOW_COPY_AND_ASSIGN(BytecodeArrayBuilder);
378 }; 381 };
379 382
380 383
381 // A label representing a branch target in a bytecode array. When a 384 // A label representing a branch target in a bytecode array. When a
382 // label is bound, it represents a known position in the bytecode 385 // label is bound, it represents a known position in the bytecode
383 // array. For labels that are forward references there can be at most 386 // array. For labels that are forward references there can be at most
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
416 size_t offset_; 419 size_t offset_;
417 420
418 friend class BytecodeArrayBuilder; 421 friend class BytecodeArrayBuilder;
419 }; 422 };
420 423
421 } // namespace interpreter 424 } // namespace interpreter
422 } // namespace internal 425 } // namespace internal
423 } // namespace v8 426 } // namespace v8
424 427
425 #endif // V8_INTERPRETER_BYTECODE_ARRAY_BUILDER_H_ 428 #endif // V8_INTERPRETER_BYTECODE_ARRAY_BUILDER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698