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

Side by Side Diff: src/debug/debug-evaluate.cc

Issue 2680163005: [debugger] extend whitelist for side-effect free debug-evaluate. (Closed)
Patch Set: inspector API change got reverted Created 3 years, 10 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
« no previous file with comments | « no previous file | test/debugger/debug/debug-evaluate-no-side-effect-control.js » ('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 #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 251 matching lines...) Expand 10 before | Expand all | Expand 10 after
262 // Whitelist for intrinsics amd runtime functions. 262 // Whitelist for intrinsics amd runtime functions.
263 // Conversions. 263 // Conversions.
264 case Runtime::kToInteger: 264 case Runtime::kToInteger:
265 case Runtime::kInlineToInteger: 265 case Runtime::kInlineToInteger:
266 case Runtime::kToObject: 266 case Runtime::kToObject:
267 case Runtime::kInlineToObject: 267 case Runtime::kInlineToObject:
268 case Runtime::kToString: 268 case Runtime::kToString:
269 case Runtime::kInlineToString: 269 case Runtime::kInlineToString:
270 case Runtime::kToLength: 270 case Runtime::kToLength:
271 case Runtime::kInlineToLength: 271 case Runtime::kInlineToLength:
272 // Type checks.
273 case Runtime::kIsJSReceiver:
274 case Runtime::kInlineIsJSReceiver:
275 case Runtime::kIsSmi:
276 case Runtime::kInlineIsSmi:
277 case Runtime::kIsArray:
278 case Runtime::kIsFunction:
279 case Runtime::kIsDate:
280 case Runtime::kIsJSProxy:
281 case Runtime::kIsRegExp:
282 case Runtime::kIsTypedArray:
272 // Loads. 283 // Loads.
273 case Runtime::kLoadLookupSlotForCall: 284 case Runtime::kLoadLookupSlotForCall:
274 // Errors. 285 // Errors.
286 case Runtime::kReThrow:
275 case Runtime::kThrowReferenceError: 287 case Runtime::kThrowReferenceError:
288 case Runtime::kThrowSymbolIteratorInvalid:
289 case Runtime::kThrowIteratorResultNotAnObject:
290 case Runtime::kNewTypeError:
276 // Strings. 291 // Strings.
277 case Runtime::kInlineStringCharCodeAt: 292 case Runtime::kInlineStringCharCodeAt:
278 case Runtime::kStringCharCodeAt: 293 case Runtime::kStringCharCodeAt:
279 case Runtime::kStringIndexOf: 294 case Runtime::kStringIndexOf:
280 case Runtime::kStringReplaceOneCharWithString: 295 case Runtime::kStringReplaceOneCharWithString:
281 case Runtime::kSubString: 296 case Runtime::kSubString:
282 case Runtime::kInlineSubString: 297 case Runtime::kInlineSubString:
283 case Runtime::kStringToLowerCase: 298 case Runtime::kStringToLowerCase:
284 case Runtime::kStringToUpperCase: 299 case Runtime::kStringToUpperCase:
285 case Runtime::kRegExpInternalReplace: 300 case Runtime::kRegExpInternalReplace:
286 // Literals. 301 // Literals.
287 case Runtime::kCreateArrayLiteral: 302 case Runtime::kCreateArrayLiteral:
288 case Runtime::kCreateObjectLiteral: 303 case Runtime::kCreateObjectLiteral:
289 case Runtime::kCreateRegExpLiteral: 304 case Runtime::kCreateRegExpLiteral:
290 // Misc. 305 // Misc.
306 case Runtime::kForInPrepare:
291 case Runtime::kInlineCall: 307 case Runtime::kInlineCall:
292 case Runtime::kCall: 308 case Runtime::kCall:
293 case Runtime::kInlineMaxSmi: 309 case Runtime::kInlineMaxSmi:
294 case Runtime::kMaxSmi: 310 case Runtime::kMaxSmi:
295 return true; 311 return true;
296 default: 312 default:
297 if (FLAG_trace_side_effect_free_debug_evaluate) { 313 if (FLAG_trace_side_effect_free_debug_evaluate) {
298 PrintF("[debug-evaluate] intrinsic %s may cause side effect.\n", 314 PrintF("[debug-evaluate] intrinsic %s may cause side effect.\n",
299 Runtime::FunctionForId(id)->name); 315 Runtime::FunctionForId(id)->name);
300 } 316 }
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
343 // Contexts. 359 // Contexts.
344 case Bytecode::kCreateBlockContext: 360 case Bytecode::kCreateBlockContext:
345 case Bytecode::kCreateCatchContext: 361 case Bytecode::kCreateCatchContext:
346 case Bytecode::kCreateFunctionContext: 362 case Bytecode::kCreateFunctionContext:
347 case Bytecode::kCreateEvalContext: 363 case Bytecode::kCreateEvalContext:
348 case Bytecode::kCreateWithContext: 364 case Bytecode::kCreateWithContext:
349 // Literals. 365 // Literals.
350 case Bytecode::kCreateArrayLiteral: 366 case Bytecode::kCreateArrayLiteral:
351 case Bytecode::kCreateObjectLiteral: 367 case Bytecode::kCreateObjectLiteral:
352 case Bytecode::kCreateRegExpLiteral: 368 case Bytecode::kCreateRegExpLiteral:
369 // Allocations.
370 case Bytecode::kCreateClosure:
371 case Bytecode::kCreateUnmappedArguments:
372 // Conversions.
373 case Bytecode::kToObject:
353 // Misc. 374 // Misc.
354 case Bytecode::kCreateUnmappedArguments: 375 case Bytecode::kForInPrepare:
376 case Bytecode::kForInContinue:
377 case Bytecode::kForInNext:
378 case Bytecode::kForInStep:
355 case Bytecode::kThrow: 379 case Bytecode::kThrow:
380 case Bytecode::kReThrow:
356 case Bytecode::kIllegal: 381 case Bytecode::kIllegal:
357 case Bytecode::kCallJSRuntime: 382 case Bytecode::kCallJSRuntime:
358 case Bytecode::kStackCheck: 383 case Bytecode::kStackCheck:
359 case Bytecode::kReturn: 384 case Bytecode::kReturn:
360 case Bytecode::kSetPendingMessage: 385 case Bytecode::kSetPendingMessage:
361 return true; 386 return true;
362 default: 387 default:
363 if (FLAG_trace_side_effect_free_debug_evaluate) { 388 if (FLAG_trace_side_effect_free_debug_evaluate) {
364 PrintF("[debug-evaluate] bytecode %s may cause side effect.\n", 389 PrintF("[debug-evaluate] bytecode %s may cause side effect.\n",
365 Bytecodes::ToString(bytecode)); 390 Bytecodes::ToString(bytecode));
366 } 391 }
367 return false; 392 return false;
368 } 393 }
369 } 394 }
370 395
371 bool BuiltinHasNoSideEffect(Builtins::Name id) { 396 bool BuiltinHasNoSideEffect(Builtins::Name id) {
372 switch (id) { 397 switch (id) {
373 // Whitelist for builtins. 398 // Whitelist for builtins.
399 // Array builtins.
400 case Builtins::kArrayPrototypeValues:
374 // Math builtins. 401 // Math builtins.
375 case Builtins::kMathAbs: 402 case Builtins::kMathAbs:
376 case Builtins::kMathAcos: 403 case Builtins::kMathAcos:
377 case Builtins::kMathAcosh: 404 case Builtins::kMathAcosh:
378 case Builtins::kMathAsin: 405 case Builtins::kMathAsin:
379 case Builtins::kMathAsinh: 406 case Builtins::kMathAsinh:
380 case Builtins::kMathAtan: 407 case Builtins::kMathAtan:
381 case Builtins::kMathAtanh: 408 case Builtins::kMathAtanh:
382 case Builtins::kMathAtan2: 409 case Builtins::kMathAtan2:
383 case Builtins::kMathCeil: 410 case Builtins::kMathCeil:
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
510 537
511 if (FLAG_trace_side_effect_free_debug_evaluate) { 538 if (FLAG_trace_side_effect_free_debug_evaluate) {
512 PrintF("[debug-evaluate] API Callback at %p may cause side effect.\n", 539 PrintF("[debug-evaluate] API Callback at %p may cause side effect.\n",
513 reinterpret_cast<void*>(function_addr)); 540 reinterpret_cast<void*>(function_addr));
514 } 541 }
515 return false; 542 return false;
516 } 543 }
517 544
518 } // namespace internal 545 } // namespace internal
519 } // namespace v8 546 } // namespace v8
OLDNEW
« no previous file with comments | « no previous file | test/debugger/debug/debug-evaluate-no-side-effect-control.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698