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 #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 296 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
307 BytecodeArrayBuilder& GetSuperConstructor(Register out); | 307 BytecodeArrayBuilder& GetSuperConstructor(Register out); |
308 | 308 |
309 // Deletes property from an object. This expects that accumulator contains | 309 // Deletes property from an object. This expects that accumulator contains |
310 // the key to be deleted and the register contains a reference to the object. | 310 // the key to be deleted and the register contains a reference to the object. |
311 BytecodeArrayBuilder& Delete(Register object, LanguageMode language_mode); | 311 BytecodeArrayBuilder& Delete(Register object, LanguageMode language_mode); |
312 | 312 |
313 // Tests. | 313 // Tests. |
314 BytecodeArrayBuilder& CompareOperation(Token::Value op, Register reg, | 314 BytecodeArrayBuilder& CompareOperation(Token::Value op, Register reg, |
315 int feedback_slot); | 315 int feedback_slot); |
316 BytecodeArrayBuilder& CompareOperation(Token::Value op, Register reg); | 316 BytecodeArrayBuilder& CompareOperation(Token::Value op, Register reg); |
| 317 BytecodeArrayBuilder& CompareUndetectable(); |
| 318 BytecodeArrayBuilder& CompareUndefined(); |
| 319 BytecodeArrayBuilder& CompareNull(); |
| 320 BytecodeArrayBuilder& CompareNil(Token::Value op, NilValue nil); |
317 BytecodeArrayBuilder& CompareTypeOf( | 321 BytecodeArrayBuilder& CompareTypeOf( |
318 TestTypeOfFlags::LiteralFlag literal_flag); | 322 TestTypeOfFlags::LiteralFlag literal_flag); |
319 | 323 |
320 // Converts accumulator and stores result in register |out|. | 324 // Converts accumulator and stores result in register |out|. |
321 BytecodeArrayBuilder& ConvertAccumulatorToObject(Register out); | 325 BytecodeArrayBuilder& ConvertAccumulatorToObject(Register out); |
322 BytecodeArrayBuilder& ConvertAccumulatorToName(Register out); | 326 BytecodeArrayBuilder& ConvertAccumulatorToName(Register out); |
323 BytecodeArrayBuilder& ConvertAccumulatorToNumber(Register out); | 327 BytecodeArrayBuilder& ConvertAccumulatorToNumber(Register out); |
324 | 328 |
325 // Flow Control. | 329 // Flow Control. |
326 BytecodeArrayBuilder& Bind(BytecodeLabel* label); | 330 BytecodeArrayBuilder& Bind(BytecodeLabel* label); |
327 BytecodeArrayBuilder& Bind(const BytecodeLabel& target, BytecodeLabel* label); | 331 BytecodeArrayBuilder& Bind(const BytecodeLabel& target, BytecodeLabel* label); |
328 | 332 |
329 BytecodeArrayBuilder& Jump(BytecodeLabel* label); | 333 BytecodeArrayBuilder& Jump(BytecodeLabel* label); |
330 BytecodeArrayBuilder& JumpIfTrue(BytecodeLabel* label); | 334 BytecodeArrayBuilder& JumpIfTrue(BytecodeLabel* label); |
331 BytecodeArrayBuilder& JumpIfFalse(BytecodeLabel* label); | 335 BytecodeArrayBuilder& JumpIfFalse(BytecodeLabel* label); |
332 BytecodeArrayBuilder& JumpIfNotHole(BytecodeLabel* label); | 336 BytecodeArrayBuilder& JumpIfNotHole(BytecodeLabel* label); |
333 BytecodeArrayBuilder& JumpIfJSReceiver(BytecodeLabel* label); | 337 BytecodeArrayBuilder& JumpIfJSReceiver(BytecodeLabel* label); |
334 BytecodeArrayBuilder& JumpIfNull(BytecodeLabel* label); | 338 BytecodeArrayBuilder& JumpIfNull(BytecodeLabel* label); |
| 339 BytecodeArrayBuilder& JumpIfNotNull(BytecodeLabel* label); |
335 BytecodeArrayBuilder& JumpIfUndefined(BytecodeLabel* label); | 340 BytecodeArrayBuilder& JumpIfUndefined(BytecodeLabel* label); |
| 341 BytecodeArrayBuilder& JumpIfNotUndefined(BytecodeLabel* label); |
| 342 BytecodeArrayBuilder& JumpIfNil(BytecodeLabel* label, Token::Value op, |
| 343 NilValue nil); |
| 344 BytecodeArrayBuilder& JumpIfNotNil(BytecodeLabel* label, Token::Value op, |
| 345 NilValue nil); |
336 BytecodeArrayBuilder& JumpLoop(BytecodeLabel* label, int loop_depth); | 346 BytecodeArrayBuilder& JumpLoop(BytecodeLabel* label, int loop_depth); |
337 | 347 |
338 BytecodeArrayBuilder& StackCheck(int position); | 348 BytecodeArrayBuilder& StackCheck(int position); |
339 | 349 |
340 // Sets the pending message to the value in the accumulator, and returns the | 350 // Sets the pending message to the value in the accumulator, and returns the |
341 // previous pending message in the accumulator. | 351 // previous pending message in the accumulator. |
342 BytecodeArrayBuilder& SetPendingMessage(); | 352 BytecodeArrayBuilder& SetPendingMessage(); |
343 | 353 |
344 BytecodeArrayBuilder& Throw(); | 354 BytecodeArrayBuilder& Throw(); |
345 BytecodeArrayBuilder& ReThrow(); | 355 BytecodeArrayBuilder& ReThrow(); |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
493 static int const kNoFeedbackSlot = 0; | 503 static int const kNoFeedbackSlot = 0; |
494 | 504 |
495 DISALLOW_COPY_AND_ASSIGN(BytecodeArrayBuilder); | 505 DISALLOW_COPY_AND_ASSIGN(BytecodeArrayBuilder); |
496 }; | 506 }; |
497 | 507 |
498 } // namespace interpreter | 508 } // namespace interpreter |
499 } // namespace internal | 509 } // namespace internal |
500 } // namespace v8 | 510 } // namespace v8 |
501 | 511 |
502 #endif // V8_INTERPRETER_BYTECODE_ARRAY_BUILDER_H_ | 512 #endif // V8_INTERPRETER_BYTECODE_ARRAY_BUILDER_H_ |
OLD | NEW |