| 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 #include "src/debug/debug-evaluate.h" | 5 #include "src/debug/debug-evaluate.h" |
| 6 | 6 |
| 7 #include "src/accessors.h" | 7 #include "src/accessors.h" |
| 8 #include "src/compiler.h" | 8 #include "src/compiler.h" |
| 9 #include "src/contexts.h" | 9 #include "src/contexts.h" |
| 10 #include "src/debug/debug-frames.h" | 10 #include "src/debug/debug-frames.h" |
| (...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 308 // Literals. | 308 // Literals. |
| 309 case Runtime::kCreateArrayLiteral: | 309 case Runtime::kCreateArrayLiteral: |
| 310 case Runtime::kCreateObjectLiteral: | 310 case Runtime::kCreateObjectLiteral: |
| 311 case Runtime::kCreateRegExpLiteral: | 311 case Runtime::kCreateRegExpLiteral: |
| 312 // Misc. | 312 // Misc. |
| 313 case Runtime::kForInPrepare: | 313 case Runtime::kForInPrepare: |
| 314 case Runtime::kInlineCall: | 314 case Runtime::kInlineCall: |
| 315 case Runtime::kCall: | 315 case Runtime::kCall: |
| 316 case Runtime::kInlineMaxSmi: | 316 case Runtime::kInlineMaxSmi: |
| 317 case Runtime::kMaxSmi: | 317 case Runtime::kMaxSmi: |
| 318 case Runtime::kHasInPrototypeChain: |
| 318 return true; | 319 return true; |
| 319 default: | 320 default: |
| 320 if (FLAG_trace_side_effect_free_debug_evaluate) { | 321 if (FLAG_trace_side_effect_free_debug_evaluate) { |
| 321 PrintF("[debug-evaluate] intrinsic %s may cause side effect.\n", | 322 PrintF("[debug-evaluate] intrinsic %s may cause side effect.\n", |
| 322 Runtime::FunctionForId(id)->name); | 323 Runtime::FunctionForId(id)->name); |
| 323 } | 324 } |
| 324 return false; | 325 return false; |
| 325 } | 326 } |
| 326 } | 327 } |
| 327 | 328 |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 372 // Literals. | 373 // Literals. |
| 373 case Bytecode::kCreateArrayLiteral: | 374 case Bytecode::kCreateArrayLiteral: |
| 374 case Bytecode::kCreateObjectLiteral: | 375 case Bytecode::kCreateObjectLiteral: |
| 375 case Bytecode::kCreateRegExpLiteral: | 376 case Bytecode::kCreateRegExpLiteral: |
| 376 // Allocations. | 377 // Allocations. |
| 377 case Bytecode::kCreateClosure: | 378 case Bytecode::kCreateClosure: |
| 378 case Bytecode::kCreateUnmappedArguments: | 379 case Bytecode::kCreateUnmappedArguments: |
| 379 // Conversions. | 380 // Conversions. |
| 380 case Bytecode::kToObject: | 381 case Bytecode::kToObject: |
| 381 case Bytecode::kToNumber: | 382 case Bytecode::kToNumber: |
| 383 case Bytecode::kToName: |
| 382 // Misc. | 384 // Misc. |
| 383 case Bytecode::kForInPrepare: | 385 case Bytecode::kForInPrepare: |
| 384 case Bytecode::kForInContinue: | 386 case Bytecode::kForInContinue: |
| 385 case Bytecode::kForInNext: | 387 case Bytecode::kForInNext: |
| 386 case Bytecode::kForInStep: | 388 case Bytecode::kForInStep: |
| 387 case Bytecode::kThrow: | 389 case Bytecode::kThrow: |
| 388 case Bytecode::kReThrow: | 390 case Bytecode::kReThrow: |
| 389 case Bytecode::kIllegal: | 391 case Bytecode::kIllegal: |
| 390 case Bytecode::kCallJSRuntime: | 392 case Bytecode::kCallJSRuntime: |
| 391 case Bytecode::kStackCheck: | 393 case Bytecode::kStackCheck: |
| 392 case Bytecode::kReturn: | 394 case Bytecode::kReturn: |
| 393 case Bytecode::kSetPendingMessage: | 395 case Bytecode::kSetPendingMessage: |
| 394 return true; | 396 return true; |
| 395 default: | 397 default: |
| 396 if (FLAG_trace_side_effect_free_debug_evaluate) { | 398 if (FLAG_trace_side_effect_free_debug_evaluate) { |
| 397 PrintF("[debug-evaluate] bytecode %s may cause side effect.\n", | 399 PrintF("[debug-evaluate] bytecode %s may cause side effect.\n", |
| 398 Bytecodes::ToString(bytecode)); | 400 Bytecodes::ToString(bytecode)); |
| 399 } | 401 } |
| 400 return false; | 402 return false; |
| 401 } | 403 } |
| 402 } | 404 } |
| 403 | 405 |
| 404 bool BuiltinHasNoSideEffect(Builtins::Name id) { | 406 bool BuiltinHasNoSideEffect(Builtins::Name id) { |
| 405 switch (id) { | 407 switch (id) { |
| 406 // Whitelist for builtins. | 408 // Whitelist for builtins. |
| 407 // Object builtins. | 409 // Object builtins. |
| 410 case Builtins::kObjectCreate: |
| 411 case Builtins::kObjectEntries: |
| 412 case Builtins::kObjectGetOwnPropertyDescriptor: |
| 413 case Builtins::kObjectGetOwnPropertyDescriptors: |
| 414 case Builtins::kObjectGetOwnPropertyNames: |
| 415 case Builtins::kObjectGetOwnPropertySymbols: |
| 416 case Builtins::kObjectGetPrototypeOf: |
| 417 case Builtins::kObjectIs: |
| 418 case Builtins::kObjectIsExtensible: |
| 419 case Builtins::kObjectIsFrozen: |
| 420 case Builtins::kObjectIsSealed: |
| 408 case Builtins::kObjectPrototypeValueOf: | 421 case Builtins::kObjectPrototypeValueOf: |
| 422 case Builtins::kObjectValues: |
| 423 case Builtins::kObjectHasOwnProperty: |
| 424 case Builtins::kObjectPrototypePropertyIsEnumerable: |
| 425 case Builtins::kObjectProtoToString: |
| 409 // Array builtins. | 426 // Array builtins. |
| 410 case Builtins::kArrayCode: | 427 case Builtins::kArrayCode: |
| 411 case Builtins::kArrayIndexOf: | 428 case Builtins::kArrayIndexOf: |
| 412 case Builtins::kArrayPrototypeValues: | 429 case Builtins::kArrayPrototypeValues: |
| 413 case Builtins::kArrayIncludes: | 430 case Builtins::kArrayIncludes: |
| 414 case Builtins::kArrayPrototypeEntries: | 431 case Builtins::kArrayPrototypeEntries: |
| 415 case Builtins::kArrayPrototypeKeys: | 432 case Builtins::kArrayPrototypeKeys: |
| 416 case Builtins::kArrayForEach: | 433 case Builtins::kArrayForEach: |
| 417 case Builtins::kArrayEvery: | 434 case Builtins::kArrayEvery: |
| 418 case Builtins::kArraySome: | 435 case Builtins::kArraySome: |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 478 case Builtins::kStringPrototypeStartsWith: | 495 case Builtins::kStringPrototypeStartsWith: |
| 479 case Builtins::kStringPrototypeSubstr: | 496 case Builtins::kStringPrototypeSubstr: |
| 480 case Builtins::kStringPrototypeSubstring: | 497 case Builtins::kStringPrototypeSubstring: |
| 481 case Builtins::kStringPrototypeToString: | 498 case Builtins::kStringPrototypeToString: |
| 482 case Builtins::kStringPrototypeToLowerCase: | 499 case Builtins::kStringPrototypeToLowerCase: |
| 483 case Builtins::kStringPrototypeToUpperCase: | 500 case Builtins::kStringPrototypeToUpperCase: |
| 484 case Builtins::kStringPrototypeTrim: | 501 case Builtins::kStringPrototypeTrim: |
| 485 case Builtins::kStringPrototypeTrimLeft: | 502 case Builtins::kStringPrototypeTrimLeft: |
| 486 case Builtins::kStringPrototypeTrimRight: | 503 case Builtins::kStringPrototypeTrimRight: |
| 487 case Builtins::kStringPrototypeValueOf: | 504 case Builtins::kStringPrototypeValueOf: |
| 505 // Symbol builtins. |
| 506 case Builtins::kSymbolConstructor: |
| 507 case Builtins::kSymbolKeyFor: |
| 508 case Builtins::kSymbolPrototypeToString: |
| 509 case Builtins::kSymbolPrototypeValueOf: |
| 510 case Builtins::kSymbolPrototypeToPrimitive: |
| 488 // JSON builtins. | 511 // JSON builtins. |
| 489 case Builtins::kJsonParse: | 512 case Builtins::kJsonParse: |
| 490 case Builtins::kJsonStringify: | 513 case Builtins::kJsonStringify: |
| 491 // Error builtins. | 514 // Error builtins. |
| 492 case Builtins::kMakeError: | 515 case Builtins::kMakeError: |
| 493 case Builtins::kMakeTypeError: | 516 case Builtins::kMakeTypeError: |
| 494 case Builtins::kMakeSyntaxError: | 517 case Builtins::kMakeSyntaxError: |
| 495 case Builtins::kMakeRangeError: | 518 case Builtins::kMakeRangeError: |
| 496 case Builtins::kMakeURIError: | 519 case Builtins::kMakeURIError: |
| 497 return true; | 520 return true; |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 568 | 591 |
| 569 if (FLAG_trace_side_effect_free_debug_evaluate) { | 592 if (FLAG_trace_side_effect_free_debug_evaluate) { |
| 570 PrintF("[debug-evaluate] API Callback at %p may cause side effect.\n", | 593 PrintF("[debug-evaluate] API Callback at %p may cause side effect.\n", |
| 571 reinterpret_cast<void*>(function_addr)); | 594 reinterpret_cast<void*>(function_addr)); |
| 572 } | 595 } |
| 573 return false; | 596 return false; |
| 574 } | 597 } |
| 575 | 598 |
| 576 } // namespace internal | 599 } // namespace internal |
| 577 } // namespace v8 | 600 } // namespace v8 |
| OLD | NEW |