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

Side by Side Diff: src/objects.h

Issue 2811183005: Do not use new struct type where unnecessary. (Closed)
Patch Set: Created 3 years, 8 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_OBJECTS_H_ 5 #ifndef V8_OBJECTS_H_
6 #define V8_OBJECTS_H_ 6 #define V8_OBJECTS_H_
7 7
8 #include <iosfwd> 8 #include <iosfwd>
9 #include <memory> 9 #include <memory>
10 10
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after
286 // string) or a INTERNALIZED_STRING_TYPE (if it is a internalized string). 286 // string) or a INTERNALIZED_STRING_TYPE (if it is a internalized string).
287 // 287 //
288 // NOTE: The following things are some that depend on the string types having 288 // NOTE: The following things are some that depend on the string types having
289 // instance_types that are less than those of all other types: 289 // instance_types that are less than those of all other types:
290 // HeapObject::Size, HeapObject::IterateBody, the typeof operator, and 290 // HeapObject::Size, HeapObject::IterateBody, the typeof operator, and
291 // Object::IsString. 291 // Object::IsString.
292 // 292 //
293 // NOTE: Everything following JS_VALUE_TYPE is considered a 293 // NOTE: Everything following JS_VALUE_TYPE is considered a
294 // JSObject for GC purposes. The first four entries here have typeof 294 // JSObject for GC purposes. The first four entries here have typeof
295 // 'object', whereas JS_FUNCTION_TYPE has typeof 'function'. 295 // 'object', whereas JS_FUNCTION_TYPE has typeof 'function'.
296 #define INSTANCE_TYPE_LIST(V) \ 296 #define INSTANCE_TYPE_LIST(V) \
297 V(INTERNALIZED_STRING_TYPE) \ 297 V(INTERNALIZED_STRING_TYPE) \
298 V(EXTERNAL_INTERNALIZED_STRING_TYPE) \ 298 V(EXTERNAL_INTERNALIZED_STRING_TYPE) \
299 V(ONE_BYTE_INTERNALIZED_STRING_TYPE) \ 299 V(ONE_BYTE_INTERNALIZED_STRING_TYPE) \
300 V(EXTERNAL_ONE_BYTE_INTERNALIZED_STRING_TYPE) \ 300 V(EXTERNAL_ONE_BYTE_INTERNALIZED_STRING_TYPE) \
301 V(EXTERNAL_INTERNALIZED_STRING_WITH_ONE_BYTE_DATA_TYPE) \ 301 V(EXTERNAL_INTERNALIZED_STRING_WITH_ONE_BYTE_DATA_TYPE) \
302 V(SHORT_EXTERNAL_INTERNALIZED_STRING_TYPE) \ 302 V(SHORT_EXTERNAL_INTERNALIZED_STRING_TYPE) \
303 V(SHORT_EXTERNAL_ONE_BYTE_INTERNALIZED_STRING_TYPE) \ 303 V(SHORT_EXTERNAL_ONE_BYTE_INTERNALIZED_STRING_TYPE) \
304 V(SHORT_EXTERNAL_INTERNALIZED_STRING_WITH_ONE_BYTE_DATA_TYPE) \ 304 V(SHORT_EXTERNAL_INTERNALIZED_STRING_WITH_ONE_BYTE_DATA_TYPE) \
305 V(STRING_TYPE) \ 305 V(STRING_TYPE) \
306 V(CONS_STRING_TYPE) \ 306 V(CONS_STRING_TYPE) \
307 V(EXTERNAL_STRING_TYPE) \ 307 V(EXTERNAL_STRING_TYPE) \
308 V(SLICED_STRING_TYPE) \ 308 V(SLICED_STRING_TYPE) \
309 V(THIN_STRING_TYPE) \ 309 V(THIN_STRING_TYPE) \
310 V(ONE_BYTE_STRING_TYPE) \ 310 V(ONE_BYTE_STRING_TYPE) \
311 V(CONS_ONE_BYTE_STRING_TYPE) \ 311 V(CONS_ONE_BYTE_STRING_TYPE) \
312 V(EXTERNAL_ONE_BYTE_STRING_TYPE) \ 312 V(EXTERNAL_ONE_BYTE_STRING_TYPE) \
313 V(SLICED_ONE_BYTE_STRING_TYPE) \ 313 V(SLICED_ONE_BYTE_STRING_TYPE) \
314 V(THIN_ONE_BYTE_STRING_TYPE) \ 314 V(THIN_ONE_BYTE_STRING_TYPE) \
315 V(EXTERNAL_STRING_WITH_ONE_BYTE_DATA_TYPE) \ 315 V(EXTERNAL_STRING_WITH_ONE_BYTE_DATA_TYPE) \
316 V(SHORT_EXTERNAL_STRING_TYPE) \ 316 V(SHORT_EXTERNAL_STRING_TYPE) \
317 V(SHORT_EXTERNAL_ONE_BYTE_STRING_TYPE) \ 317 V(SHORT_EXTERNAL_ONE_BYTE_STRING_TYPE) \
318 V(SHORT_EXTERNAL_STRING_WITH_ONE_BYTE_DATA_TYPE) \ 318 V(SHORT_EXTERNAL_STRING_WITH_ONE_BYTE_DATA_TYPE) \
319 \ 319 \
320 V(SYMBOL_TYPE) \ 320 V(SYMBOL_TYPE) \
321 V(HEAP_NUMBER_TYPE) \ 321 V(HEAP_NUMBER_TYPE) \
322 V(ODDBALL_TYPE) \ 322 V(ODDBALL_TYPE) \
323 \ 323 \
324 V(MAP_TYPE) \ 324 V(MAP_TYPE) \
325 V(CODE_TYPE) \ 325 V(CODE_TYPE) \
326 V(MUTABLE_HEAP_NUMBER_TYPE) \ 326 V(MUTABLE_HEAP_NUMBER_TYPE) \
327 V(FOREIGN_TYPE) \ 327 V(FOREIGN_TYPE) \
328 V(BYTE_ARRAY_TYPE) \ 328 V(BYTE_ARRAY_TYPE) \
329 V(BYTECODE_ARRAY_TYPE) \ 329 V(BYTECODE_ARRAY_TYPE) \
330 V(FREE_SPACE_TYPE) \ 330 V(FREE_SPACE_TYPE) \
331 \ 331 \
332 V(FIXED_INT8_ARRAY_TYPE) \ 332 V(FIXED_INT8_ARRAY_TYPE) \
333 V(FIXED_UINT8_ARRAY_TYPE) \ 333 V(FIXED_UINT8_ARRAY_TYPE) \
334 V(FIXED_INT16_ARRAY_TYPE) \ 334 V(FIXED_INT16_ARRAY_TYPE) \
335 V(FIXED_UINT16_ARRAY_TYPE) \ 335 V(FIXED_UINT16_ARRAY_TYPE) \
336 V(FIXED_INT32_ARRAY_TYPE) \ 336 V(FIXED_INT32_ARRAY_TYPE) \
337 V(FIXED_UINT32_ARRAY_TYPE) \ 337 V(FIXED_UINT32_ARRAY_TYPE) \
338 V(FIXED_FLOAT32_ARRAY_TYPE) \ 338 V(FIXED_FLOAT32_ARRAY_TYPE) \
339 V(FIXED_FLOAT64_ARRAY_TYPE) \ 339 V(FIXED_FLOAT64_ARRAY_TYPE) \
340 V(FIXED_UINT8_CLAMPED_ARRAY_TYPE) \ 340 V(FIXED_UINT8_CLAMPED_ARRAY_TYPE) \
341 \ 341 \
342 V(FIXED_DOUBLE_ARRAY_TYPE) \ 342 V(FIXED_DOUBLE_ARRAY_TYPE) \
343 V(FILLER_TYPE) \ 343 V(FILLER_TYPE) \
344 \ 344 \
345 V(ACCESSOR_INFO_TYPE) \ 345 V(ACCESSOR_INFO_TYPE) \
346 V(ACCESSOR_PAIR_TYPE) \ 346 V(ACCESSOR_PAIR_TYPE) \
347 V(ACCESS_CHECK_INFO_TYPE) \ 347 V(ACCESS_CHECK_INFO_TYPE) \
348 V(INTERCEPTOR_INFO_TYPE) \ 348 V(INTERCEPTOR_INFO_TYPE) \
349 V(CALL_HANDLER_INFO_TYPE) \ 349 V(FUNCTION_TEMPLATE_INFO_TYPE) \
350 V(FUNCTION_TEMPLATE_INFO_TYPE) \ 350 V(OBJECT_TEMPLATE_INFO_TYPE) \
351 V(OBJECT_TEMPLATE_INFO_TYPE) \ 351 V(ALLOCATION_SITE_TYPE) \
352 V(ALLOCATION_SITE_TYPE) \ 352 V(ALLOCATION_MEMENTO_TYPE) \
353 V(ALLOCATION_MEMENTO_TYPE) \ 353 V(SCRIPT_TYPE) \
354 V(SCRIPT_TYPE) \ 354 V(ALIASED_ARGUMENTS_ENTRY_TYPE) \
355 V(TYPE_FEEDBACK_INFO_TYPE) \ 355 V(PROMISE_RESOLVE_THENABLE_JOB_INFO_TYPE) \
356 V(ALIASED_ARGUMENTS_ENTRY_TYPE) \ 356 V(PROMISE_REACTION_JOB_INFO_TYPE) \
357 V(PROMISE_RESOLVE_THENABLE_JOB_INFO_TYPE) \ 357 V(DEBUG_INFO_TYPE) \
358 V(PROMISE_REACTION_JOB_INFO_TYPE) \ 358 V(STACK_FRAME_INFO_TYPE) \
359 V(DEBUG_INFO_TYPE) \ 359 V(PROTOTYPE_INFO_TYPE) \
360 V(BREAK_POINT_INFO_TYPE) \ 360 V(TUPLE2_TYPE) \
361 V(STACK_FRAME_INFO_TYPE) \ 361 V(TUPLE3_TYPE) \
362 V(PROTOTYPE_INFO_TYPE) \ 362 V(CONTEXT_EXTENSION_TYPE) \
363 V(TUPLE2_TYPE) \ 363 V(MODULE_TYPE) \
364 V(TUPLE3_TYPE) \ 364 V(MODULE_INFO_ENTRY_TYPE) \
365 V(CONTEXT_EXTENSION_TYPE) \ 365 V(ASYNC_GENERATOR_REQUEST_TYPE) \
366 V(CONSTANT_ELEMENTS_PAIR_TYPE) \ 366 V(FIXED_ARRAY_TYPE) \
367 V(MODULE_TYPE) \ 367 V(TRANSITION_ARRAY_TYPE) \
368 V(MODULE_INFO_ENTRY_TYPE) \ 368 V(SHARED_FUNCTION_INFO_TYPE) \
369 V(ASYNC_GENERATOR_REQUEST_TYPE) \ 369 V(CELL_TYPE) \
370 V(FIXED_ARRAY_TYPE) \ 370 V(WEAK_CELL_TYPE) \
371 V(TRANSITION_ARRAY_TYPE) \ 371 V(PROPERTY_CELL_TYPE) \
372 V(SHARED_FUNCTION_INFO_TYPE) \ 372 /* TODO(yangguo): these padding types are for ABI stability. Remove after*/ \
373 V(CELL_TYPE) \ 373 /* version 6.0 branch, or replace them when there is demand for new types.*/ \
374 V(WEAK_CELL_TYPE) \ 374 V(PADDING_TYPE_1) \
375 V(PROPERTY_CELL_TYPE) \ 375 V(PADDING_TYPE_2) \
376 \ 376 V(PADDING_TYPE_3) \
377 V(JS_PROXY_TYPE) \ 377 V(PADDING_TYPE_4) \
378 V(JS_GLOBAL_OBJECT_TYPE) \ 378 \
379 V(JS_GLOBAL_PROXY_TYPE) \ 379 V(JS_PROXY_TYPE) \
380 V(JS_SPECIAL_API_OBJECT_TYPE) \ 380 V(JS_GLOBAL_OBJECT_TYPE) \
381 V(JS_VALUE_TYPE) \ 381 V(JS_GLOBAL_PROXY_TYPE) \
382 V(JS_MESSAGE_OBJECT_TYPE) \ 382 V(JS_SPECIAL_API_OBJECT_TYPE) \
383 V(JS_DATE_TYPE) \ 383 V(JS_VALUE_TYPE) \
384 V(JS_API_OBJECT_TYPE) \ 384 V(JS_MESSAGE_OBJECT_TYPE) \
385 V(JS_OBJECT_TYPE) \ 385 V(JS_DATE_TYPE) \
386 V(JS_ARGUMENTS_TYPE) \ 386 V(JS_API_OBJECT_TYPE) \
387 V(JS_CONTEXT_EXTENSION_OBJECT_TYPE) \ 387 V(JS_OBJECT_TYPE) \
388 V(JS_GENERATOR_OBJECT_TYPE) \ 388 V(JS_ARGUMENTS_TYPE) \
389 V(JS_ASYNC_GENERATOR_OBJECT_TYPE) \ 389 V(JS_CONTEXT_EXTENSION_OBJECT_TYPE) \
390 V(JS_MODULE_NAMESPACE_TYPE) \ 390 V(JS_GENERATOR_OBJECT_TYPE) \
391 V(JS_ARRAY_TYPE) \ 391 V(JS_ASYNC_GENERATOR_OBJECT_TYPE) \
392 V(JS_ARRAY_BUFFER_TYPE) \ 392 V(JS_MODULE_NAMESPACE_TYPE) \
393 V(JS_TYPED_ARRAY_TYPE) \ 393 V(JS_ARRAY_TYPE) \
394 V(JS_DATA_VIEW_TYPE) \ 394 V(JS_ARRAY_BUFFER_TYPE) \
395 V(JS_SET_TYPE) \ 395 V(JS_TYPED_ARRAY_TYPE) \
396 V(JS_MAP_TYPE) \ 396 V(JS_DATA_VIEW_TYPE) \
397 V(JS_SET_ITERATOR_TYPE) \ 397 V(JS_SET_TYPE) \
398 V(JS_MAP_ITERATOR_TYPE) \ 398 V(JS_MAP_TYPE) \
399 V(JS_WEAK_MAP_TYPE) \ 399 V(JS_SET_ITERATOR_TYPE) \
400 V(JS_WEAK_SET_TYPE) \ 400 V(JS_MAP_ITERATOR_TYPE) \
401 V(JS_PROMISE_CAPABILITY_TYPE) \ 401 V(JS_WEAK_MAP_TYPE) \
402 V(JS_PROMISE_TYPE) \ 402 V(JS_WEAK_SET_TYPE) \
403 V(JS_REGEXP_TYPE) \ 403 V(JS_PROMISE_CAPABILITY_TYPE) \
404 V(JS_ERROR_TYPE) \ 404 V(JS_PROMISE_TYPE) \
405 V(JS_ASYNC_FROM_SYNC_ITERATOR_TYPE) \ 405 V(JS_REGEXP_TYPE) \
406 V(JS_STRING_ITERATOR_TYPE) \ 406 V(JS_ERROR_TYPE) \
407 \ 407 V(JS_ASYNC_FROM_SYNC_ITERATOR_TYPE) \
408 V(JS_TYPED_ARRAY_KEY_ITERATOR_TYPE) \ 408 V(JS_STRING_ITERATOR_TYPE) \
409 V(JS_FAST_ARRAY_KEY_ITERATOR_TYPE) \ 409 \
410 V(JS_GENERIC_ARRAY_KEY_ITERATOR_TYPE) \ 410 V(JS_TYPED_ARRAY_KEY_ITERATOR_TYPE) \
411 \ 411 V(JS_FAST_ARRAY_KEY_ITERATOR_TYPE) \
412 V(JS_UINT8_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ 412 V(JS_GENERIC_ARRAY_KEY_ITERATOR_TYPE) \
413 V(JS_INT8_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ 413 \
414 V(JS_UINT16_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ 414 V(JS_UINT8_ARRAY_KEY_VALUE_ITERATOR_TYPE) \
415 V(JS_INT16_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ 415 V(JS_INT8_ARRAY_KEY_VALUE_ITERATOR_TYPE) \
416 V(JS_UINT32_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ 416 V(JS_UINT16_ARRAY_KEY_VALUE_ITERATOR_TYPE) \
417 V(JS_INT32_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ 417 V(JS_INT16_ARRAY_KEY_VALUE_ITERATOR_TYPE) \
418 V(JS_FLOAT32_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ 418 V(JS_UINT32_ARRAY_KEY_VALUE_ITERATOR_TYPE) \
419 V(JS_FLOAT64_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ 419 V(JS_INT32_ARRAY_KEY_VALUE_ITERATOR_TYPE) \
420 V(JS_UINT8_CLAMPED_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ 420 V(JS_FLOAT32_ARRAY_KEY_VALUE_ITERATOR_TYPE) \
421 \ 421 V(JS_FLOAT64_ARRAY_KEY_VALUE_ITERATOR_TYPE) \
422 V(JS_FAST_SMI_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ 422 V(JS_UINT8_CLAMPED_ARRAY_KEY_VALUE_ITERATOR_TYPE) \
423 V(JS_FAST_HOLEY_SMI_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ 423 \
424 V(JS_FAST_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ 424 V(JS_FAST_SMI_ARRAY_KEY_VALUE_ITERATOR_TYPE) \
425 V(JS_FAST_HOLEY_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ 425 V(JS_FAST_HOLEY_SMI_ARRAY_KEY_VALUE_ITERATOR_TYPE) \
426 V(JS_FAST_DOUBLE_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ 426 V(JS_FAST_ARRAY_KEY_VALUE_ITERATOR_TYPE) \
427 V(JS_FAST_HOLEY_DOUBLE_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ 427 V(JS_FAST_HOLEY_ARRAY_KEY_VALUE_ITERATOR_TYPE) \
428 V(JS_GENERIC_ARRAY_KEY_VALUE_ITERATOR_TYPE) \ 428 V(JS_FAST_DOUBLE_ARRAY_KEY_VALUE_ITERATOR_TYPE) \
429 \ 429 V(JS_FAST_HOLEY_DOUBLE_ARRAY_KEY_VALUE_ITERATOR_TYPE) \
430 V(JS_UINT8_ARRAY_VALUE_ITERATOR_TYPE) \ 430 V(JS_GENERIC_ARRAY_KEY_VALUE_ITERATOR_TYPE) \
431 V(JS_INT8_ARRAY_VALUE_ITERATOR_TYPE) \ 431 \
432 V(JS_UINT16_ARRAY_VALUE_ITERATOR_TYPE) \ 432 V(JS_UINT8_ARRAY_VALUE_ITERATOR_TYPE) \
433 V(JS_INT16_ARRAY_VALUE_ITERATOR_TYPE) \ 433 V(JS_INT8_ARRAY_VALUE_ITERATOR_TYPE) \
434 V(JS_UINT32_ARRAY_VALUE_ITERATOR_TYPE) \ 434 V(JS_UINT16_ARRAY_VALUE_ITERATOR_TYPE) \
435 V(JS_INT32_ARRAY_VALUE_ITERATOR_TYPE) \ 435 V(JS_INT16_ARRAY_VALUE_ITERATOR_TYPE) \
436 V(JS_FLOAT32_ARRAY_VALUE_ITERATOR_TYPE) \ 436 V(JS_UINT32_ARRAY_VALUE_ITERATOR_TYPE) \
437 V(JS_FLOAT64_ARRAY_VALUE_ITERATOR_TYPE) \ 437 V(JS_INT32_ARRAY_VALUE_ITERATOR_TYPE) \
438 V(JS_UINT8_CLAMPED_ARRAY_VALUE_ITERATOR_TYPE) \ 438 V(JS_FLOAT32_ARRAY_VALUE_ITERATOR_TYPE) \
439 \ 439 V(JS_FLOAT64_ARRAY_VALUE_ITERATOR_TYPE) \
440 V(JS_FAST_SMI_ARRAY_VALUE_ITERATOR_TYPE) \ 440 V(JS_UINT8_CLAMPED_ARRAY_VALUE_ITERATOR_TYPE) \
441 V(JS_FAST_HOLEY_SMI_ARRAY_VALUE_ITERATOR_TYPE) \ 441 \
442 V(JS_FAST_ARRAY_VALUE_ITERATOR_TYPE) \ 442 V(JS_FAST_SMI_ARRAY_VALUE_ITERATOR_TYPE) \
443 V(JS_FAST_HOLEY_ARRAY_VALUE_ITERATOR_TYPE) \ 443 V(JS_FAST_HOLEY_SMI_ARRAY_VALUE_ITERATOR_TYPE) \
444 V(JS_FAST_DOUBLE_ARRAY_VALUE_ITERATOR_TYPE) \ 444 V(JS_FAST_ARRAY_VALUE_ITERATOR_TYPE) \
445 V(JS_FAST_HOLEY_DOUBLE_ARRAY_VALUE_ITERATOR_TYPE) \ 445 V(JS_FAST_HOLEY_ARRAY_VALUE_ITERATOR_TYPE) \
446 V(JS_GENERIC_ARRAY_VALUE_ITERATOR_TYPE) \ 446 V(JS_FAST_DOUBLE_ARRAY_VALUE_ITERATOR_TYPE) \
447 \ 447 V(JS_FAST_HOLEY_DOUBLE_ARRAY_VALUE_ITERATOR_TYPE) \
448 V(JS_BOUND_FUNCTION_TYPE) \ 448 V(JS_GENERIC_ARRAY_VALUE_ITERATOR_TYPE) \
449 \
450 V(JS_BOUND_FUNCTION_TYPE) \
449 V(JS_FUNCTION_TYPE) 451 V(JS_FUNCTION_TYPE)
450 452
451 // Since string types are not consecutive, this macro is used to 453 // Since string types are not consecutive, this macro is used to
452 // iterate over them. 454 // iterate over them.
453 #define STRING_TYPE_LIST(V) \ 455 #define STRING_TYPE_LIST(V) \
454 V(STRING_TYPE, kVariableSizeSentinel, string, String) \ 456 V(STRING_TYPE, kVariableSizeSentinel, string, String) \
455 V(ONE_BYTE_STRING_TYPE, kVariableSizeSentinel, one_byte_string, \ 457 V(ONE_BYTE_STRING_TYPE, kVariableSizeSentinel, one_byte_string, \
456 OneByteString) \ 458 OneByteString) \
457 V(CONS_STRING_TYPE, ConsString::kSize, cons_string, ConsString) \ 459 V(CONS_STRING_TYPE, ConsString::kSize, cons_string, ConsString) \
458 V(CONS_ONE_BYTE_STRING_TYPE, ConsString::kSize, cons_one_byte_string, \ 460 V(CONS_ONE_BYTE_STRING_TYPE, ConsString::kSize, cons_one_byte_string, \
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
509 // object verification routines. Easy, no? 511 // object verification routines. Easy, no?
510 // 512 //
511 // Note that for subtle reasons related to the ordering or numerical values of 513 // Note that for subtle reasons related to the ordering or numerical values of
512 // type tags, elements in this list have to be added to the INSTANCE_TYPE_LIST 514 // type tags, elements in this list have to be added to the INSTANCE_TYPE_LIST
513 // manually. 515 // manually.
514 #define STRUCT_LIST(V) \ 516 #define STRUCT_LIST(V) \
515 V(ACCESSOR_INFO, AccessorInfo, accessor_info) \ 517 V(ACCESSOR_INFO, AccessorInfo, accessor_info) \
516 V(ACCESSOR_PAIR, AccessorPair, accessor_pair) \ 518 V(ACCESSOR_PAIR, AccessorPair, accessor_pair) \
517 V(ACCESS_CHECK_INFO, AccessCheckInfo, access_check_info) \ 519 V(ACCESS_CHECK_INFO, AccessCheckInfo, access_check_info) \
518 V(INTERCEPTOR_INFO, InterceptorInfo, interceptor_info) \ 520 V(INTERCEPTOR_INFO, InterceptorInfo, interceptor_info) \
519 V(CALL_HANDLER_INFO, CallHandlerInfo, call_handler_info) \
520 V(FUNCTION_TEMPLATE_INFO, FunctionTemplateInfo, function_template_info) \ 521 V(FUNCTION_TEMPLATE_INFO, FunctionTemplateInfo, function_template_info) \
521 V(OBJECT_TEMPLATE_INFO, ObjectTemplateInfo, object_template_info) \ 522 V(OBJECT_TEMPLATE_INFO, ObjectTemplateInfo, object_template_info) \
522 V(ALLOCATION_SITE, AllocationSite, allocation_site) \ 523 V(ALLOCATION_SITE, AllocationSite, allocation_site) \
523 V(ALLOCATION_MEMENTO, AllocationMemento, allocation_memento) \ 524 V(ALLOCATION_MEMENTO, AllocationMemento, allocation_memento) \
524 V(SCRIPT, Script, script) \ 525 V(SCRIPT, Script, script) \
525 V(TYPE_FEEDBACK_INFO, TypeFeedbackInfo, type_feedback_info) \
526 V(ALIASED_ARGUMENTS_ENTRY, AliasedArgumentsEntry, aliased_arguments_entry) \ 526 V(ALIASED_ARGUMENTS_ENTRY, AliasedArgumentsEntry, aliased_arguments_entry) \
527 V(PROMISE_RESOLVE_THENABLE_JOB_INFO, PromiseResolveThenableJobInfo, \ 527 V(PROMISE_RESOLVE_THENABLE_JOB_INFO, PromiseResolveThenableJobInfo, \
528 promise_resolve_thenable_job_info) \ 528 promise_resolve_thenable_job_info) \
529 V(PROMISE_REACTION_JOB_INFO, PromiseReactionJobInfo, \ 529 V(PROMISE_REACTION_JOB_INFO, PromiseReactionJobInfo, \
530 promise_reaction_job_info) \ 530 promise_reaction_job_info) \
531 V(DEBUG_INFO, DebugInfo, debug_info) \ 531 V(DEBUG_INFO, DebugInfo, debug_info) \
532 V(BREAK_POINT_INFO, BreakPointInfo, break_point_info) \
533 V(STACK_FRAME_INFO, StackFrameInfo, stack_frame_info) \ 532 V(STACK_FRAME_INFO, StackFrameInfo, stack_frame_info) \
534 V(PROTOTYPE_INFO, PrototypeInfo, prototype_info) \ 533 V(PROTOTYPE_INFO, PrototypeInfo, prototype_info) \
535 V(TUPLE2, Tuple2, tuple2) \ 534 V(TUPLE2, Tuple2, tuple2) \
536 V(TUPLE3, Tuple3, tuple3) \ 535 V(TUPLE3, Tuple3, tuple3) \
537 V(CONTEXT_EXTENSION, ContextExtension, context_extension) \ 536 V(CONTEXT_EXTENSION, ContextExtension, context_extension) \
538 V(CONSTANT_ELEMENTS_PAIR, ConstantElementsPair, constant_elements_pair) \
539 V(MODULE, Module, module) \ 537 V(MODULE, Module, module) \
540 V(MODULE_INFO_ENTRY, ModuleInfoEntry, module_info_entry) \ 538 V(MODULE_INFO_ENTRY, ModuleInfoEntry, module_info_entry) \
541 V(ASYNC_GENERATOR_REQUEST, AsyncGeneratorRequest, async_generator_request) 539 V(ASYNC_GENERATOR_REQUEST, AsyncGeneratorRequest, async_generator_request)
542 540
543 // We use the full 8 bits of the instance_type field to encode heap object 541 // We use the full 8 bits of the instance_type field to encode heap object
544 // instance types. The high-order bit (bit 7) is set if the object is not a 542 // instance types. The high-order bit (bit 7) is set if the object is not a
545 // string, and cleared if it is a string. 543 // string, and cleared if it is a string.
546 const uint32_t kIsNotStringMask = 0x80; 544 const uint32_t kIsNotStringMask = 0x80;
547 const uint32_t kStringTag = 0x0; 545 const uint32_t kStringTag = 0x0;
548 const uint32_t kNotStringTag = 0x80; 546 const uint32_t kNotStringTag = 0x80;
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
683 FIXED_FLOAT64_ARRAY_TYPE, 681 FIXED_FLOAT64_ARRAY_TYPE,
684 FIXED_UINT8_CLAMPED_ARRAY_TYPE, // LAST_FIXED_TYPED_ARRAY_TYPE 682 FIXED_UINT8_CLAMPED_ARRAY_TYPE, // LAST_FIXED_TYPED_ARRAY_TYPE
685 FIXED_DOUBLE_ARRAY_TYPE, 683 FIXED_DOUBLE_ARRAY_TYPE,
686 FILLER_TYPE, // LAST_DATA_TYPE 684 FILLER_TYPE, // LAST_DATA_TYPE
687 685
688 // Structs. 686 // Structs.
689 ACCESSOR_INFO_TYPE, 687 ACCESSOR_INFO_TYPE,
690 ACCESSOR_PAIR_TYPE, 688 ACCESSOR_PAIR_TYPE,
691 ACCESS_CHECK_INFO_TYPE, 689 ACCESS_CHECK_INFO_TYPE,
692 INTERCEPTOR_INFO_TYPE, 690 INTERCEPTOR_INFO_TYPE,
693 CALL_HANDLER_INFO_TYPE,
694 FUNCTION_TEMPLATE_INFO_TYPE, 691 FUNCTION_TEMPLATE_INFO_TYPE,
695 OBJECT_TEMPLATE_INFO_TYPE, 692 OBJECT_TEMPLATE_INFO_TYPE,
696 ALLOCATION_SITE_TYPE, 693 ALLOCATION_SITE_TYPE,
697 ALLOCATION_MEMENTO_TYPE, 694 ALLOCATION_MEMENTO_TYPE,
698 SCRIPT_TYPE, 695 SCRIPT_TYPE,
699 TYPE_FEEDBACK_INFO_TYPE,
700 ALIASED_ARGUMENTS_ENTRY_TYPE, 696 ALIASED_ARGUMENTS_ENTRY_TYPE,
701 PROMISE_RESOLVE_THENABLE_JOB_INFO_TYPE, 697 PROMISE_RESOLVE_THENABLE_JOB_INFO_TYPE,
702 PROMISE_REACTION_JOB_INFO_TYPE, 698 PROMISE_REACTION_JOB_INFO_TYPE,
703 DEBUG_INFO_TYPE, 699 DEBUG_INFO_TYPE,
704 BREAK_POINT_INFO_TYPE,
705 STACK_FRAME_INFO_TYPE, 700 STACK_FRAME_INFO_TYPE,
706 PROTOTYPE_INFO_TYPE, 701 PROTOTYPE_INFO_TYPE,
707 TUPLE2_TYPE, 702 TUPLE2_TYPE,
708 TUPLE3_TYPE, 703 TUPLE3_TYPE,
709 CONTEXT_EXTENSION_TYPE, 704 CONTEXT_EXTENSION_TYPE,
710 CONSTANT_ELEMENTS_PAIR_TYPE,
711 MODULE_TYPE, 705 MODULE_TYPE,
712 MODULE_INFO_ENTRY_TYPE, 706 MODULE_INFO_ENTRY_TYPE,
713 ASYNC_GENERATOR_REQUEST_TYPE, 707 ASYNC_GENERATOR_REQUEST_TYPE,
714 FIXED_ARRAY_TYPE, 708 FIXED_ARRAY_TYPE,
715 TRANSITION_ARRAY_TYPE, 709 TRANSITION_ARRAY_TYPE,
716 SHARED_FUNCTION_INFO_TYPE, 710 SHARED_FUNCTION_INFO_TYPE,
717 CELL_TYPE, 711 CELL_TYPE,
718 WEAK_CELL_TYPE, 712 WEAK_CELL_TYPE,
719 PROPERTY_CELL_TYPE, 713 PROPERTY_CELL_TYPE,
720 714
715 // TODO(yangguo): these padding types are for ABI stability. Remove after
716 // version 6.0 branch, or replace them when there is demand for new types.
717 PADDING_TYPE_1,
718 PADDING_TYPE_2,
719 PADDING_TYPE_3,
720 PADDING_TYPE_4,
721
721 // All the following types are subtypes of JSReceiver, which corresponds to 722 // All the following types are subtypes of JSReceiver, which corresponds to
722 // objects in the JS sense. The first and the last type in this range are 723 // objects in the JS sense. The first and the last type in this range are
723 // the two forms of function. This organization enables using the same 724 // the two forms of function. This organization enables using the same
724 // compares for checking the JS_RECEIVER and the NONCALLABLE_JS_OBJECT range. 725 // compares for checking the JS_RECEIVER and the NONCALLABLE_JS_OBJECT range.
725 JS_PROXY_TYPE, // FIRST_JS_RECEIVER_TYPE 726 JS_PROXY_TYPE, // FIRST_JS_RECEIVER_TYPE
726 JS_GLOBAL_OBJECT_TYPE, // FIRST_JS_OBJECT_TYPE 727 JS_GLOBAL_OBJECT_TYPE, // FIRST_JS_OBJECT_TYPE
727 JS_GLOBAL_PROXY_TYPE, 728 JS_GLOBAL_PROXY_TYPE,
728 // Like JS_API_OBJECT_TYPE, but requires access checks and/or has 729 // Like JS_API_OBJECT_TYPE, but requires access checks and/or has
729 // interceptors. 730 // interceptors.
730 JS_SPECIAL_API_OBJECT_TYPE, // LAST_SPECIAL_RECEIVER_TYPE 731 JS_SPECIAL_API_OBJECT_TYPE, // LAST_SPECIAL_RECEIVER_TYPE
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after
971 #endif 972 #endif
972 973
973 #define OBJECT_TYPE_LIST(V) \ 974 #define OBJECT_TYPE_LIST(V) \
974 V(Smi) \ 975 V(Smi) \
975 V(LayoutDescriptor) \ 976 V(LayoutDescriptor) \
976 V(HeapObject) \ 977 V(HeapObject) \
977 V(Primitive) \ 978 V(Primitive) \
978 V(Number) 979 V(Number)
979 980
980 #define HEAP_OBJECT_TYPE_LIST(V) \ 981 #define HEAP_OBJECT_TYPE_LIST(V) \
981 V(HeapNumber) \ 982 V(AbstractCode) \
982 V(MutableHeapNumber) \ 983 V(AccessCheckNeeded) \
983 V(Name) \ 984 V(ArrayList) \
984 V(UniqueName) \ 985 V(BoilerplateDescription) \
985 V(String) \ 986 V(Boolean) \
986 V(SeqString) \ 987 V(BreakPointInfo) \
987 V(ExternalString) \
988 V(ConsString) \
989 V(SlicedString) \
990 V(ExternalTwoByteString) \
991 V(ExternalOneByteString) \
992 V(SeqTwoByteString) \
993 V(SeqOneByteString) \
994 V(InternalizedString) \
995 V(ThinString) \
996 V(Symbol) \
997 \
998 V(FixedTypedArrayBase) \
999 V(FixedUint8Array) \
1000 V(FixedInt8Array) \
1001 V(FixedUint16Array) \
1002 V(FixedInt16Array) \
1003 V(FixedUint32Array) \
1004 V(FixedInt32Array) \
1005 V(FixedFloat32Array) \
1006 V(FixedFloat64Array) \
1007 V(FixedUint8ClampedArray) \
1008 V(ByteArray) \ 988 V(ByteArray) \
1009 V(BytecodeArray) \ 989 V(BytecodeArray) \
1010 V(FreeSpace) \ 990 V(Callable) \
1011 V(JSReceiver) \ 991 V(CallHandlerInfo) \
1012 V(JSObject) \ 992 V(Cell) \
1013 V(JSArgumentsObject) \ 993 V(Code) \
1014 V(JSContextExtensionObject) \ 994 V(CodeCacheHashTable) \
1015 V(JSGeneratorObject) \ 995 V(CompilationCacheTable) \
1016 V(JSAsyncGeneratorObject) \ 996 V(ConsString) \
1017 V(JSModuleNamespace) \ 997 V(ConstantElementsPair) \
1018 V(Map) \ 998 V(Constructor) \
1019 V(DescriptorArray) \ 999 V(Context) \
1020 V(FrameArray) \
1021 V(TransitionArray) \
1022 V(FeedbackMetadata) \
1023 V(FeedbackVector) \
1024 V(DeoptimizationInputData) \ 1000 V(DeoptimizationInputData) \
1025 V(DeoptimizationOutputData) \ 1001 V(DeoptimizationOutputData) \
1026 V(DependentCode) \ 1002 V(DependentCode) \
1003 V(DescriptorArray) \
1004 V(Dictionary) \
1005 V(External) \
1006 V(ExternalOneByteString) \
1007 V(ExternalString) \
1008 V(ExternalTwoByteString) \
1009 V(FeedbackMetadata) \
1010 V(FeedbackVector) \
1011 V(Filler) \
1012 V(FixedArray) \
1013 V(FixedArrayBase) \
1014 V(FixedDoubleArray) \
1015 V(FixedFloat32Array) \
1016 V(FixedFloat64Array) \
1017 V(FixedInt16Array) \
1018 V(FixedInt32Array) \
1019 V(FixedInt8Array) \
1020 V(FixedTypedArrayBase) \
1021 V(FixedUint16Array) \
1022 V(FixedUint32Array) \
1023 V(FixedUint8Array) \
1024 V(FixedUint8ClampedArray) \
1025 V(Foreign) \
1026 V(FrameArray) \
1027 V(FreeSpace) \
1028 V(Function) \
1027 V(HandlerTable) \ 1029 V(HandlerTable) \
1028 V(FixedArray) \ 1030 V(HashTable) \
1029 V(BoilerplateDescription) \ 1031 V(HeapNumber) \
1030 V(FixedDoubleArray) \ 1032 V(InternalizedString) \
1031 V(WeakFixedArray) \ 1033 V(JSArgumentsObject) \
1032 V(ArrayList) \
1033 V(RegExpMatchInfo) \
1034 V(Context) \
1035 V(ScriptContextTable) \
1036 V(NativeContext) \
1037 V(ScopeInfo) \
1038 V(ModuleInfo) \
1039 V(JSBoundFunction) \
1040 V(JSFunction) \
1041 V(Code) \
1042 V(AbstractCode) \
1043 V(Oddball) \
1044 V(SharedFunctionInfo) \
1045 V(JSValue) \
1046 V(JSDate) \
1047 V(JSMessageObject) \
1048 V(StringWrapper) \
1049 V(Foreign) \
1050 V(Boolean) \
1051 V(JSArray) \ 1034 V(JSArray) \
1052 V(JSArrayBuffer) \ 1035 V(JSArrayBuffer) \
1053 V(JSArrayBufferView) \ 1036 V(JSArrayBufferView) \
1037 V(JSArrayIterator) \
1054 V(JSAsyncFromSyncIterator) \ 1038 V(JSAsyncFromSyncIterator) \
1039 V(JSAsyncGeneratorObject) \
1040 V(JSBoundFunction) \
1055 V(JSCollection) \ 1041 V(JSCollection) \
1042 V(JSContextExtensionObject) \
1043 V(JSDataView) \
1044 V(JSDate) \
1045 V(JSError) \
1046 V(JSFunction) \
1047 V(JSGeneratorObject) \
1048 V(JSGlobalObject) \
1049 V(JSGlobalProxy) \
1050 V(JSMap) \
1051 V(JSMapIterator) \
1052 V(JSMessageObject) \
1053 V(JSModuleNamespace) \
1054 V(JSObject) \
1055 V(JSPromise) \
1056 V(JSPromiseCapability) \
1057 V(JSProxy) \
1058 V(JSReceiver) \
1059 V(JSRegExp) \
1060 V(JSSet) \
1061 V(JSSetIterator) \
1062 V(JSStringIterator) \
1056 V(JSTypedArray) \ 1063 V(JSTypedArray) \
1057 V(JSArrayIterator) \ 1064 V(JSValue) \
1058 V(JSDataView) \
1059 V(JSProxy) \
1060 V(JSError) \
1061 V(JSPromiseCapability) \
1062 V(JSPromise) \
1063 V(JSStringIterator) \
1064 V(JSSet) \
1065 V(JSMap) \
1066 V(JSSetIterator) \
1067 V(JSMapIterator) \
1068 V(JSWeakCollection) \ 1065 V(JSWeakCollection) \
1069 V(JSWeakMap) \ 1066 V(JSWeakMap) \
1070 V(JSWeakSet) \ 1067 V(JSWeakSet) \
1071 V(JSRegExp) \ 1068 V(Map) \
1072 V(HashTable) \ 1069 V(MapCache) \
1073 V(Dictionary) \ 1070 V(ModuleInfo) \
1071 V(MutableHeapNumber) \
1072 V(Name) \
1073 V(NativeContext) \
1074 V(NormalizedMapCache) \
1075 V(ObjectHashSet) \
1076 V(ObjectHashTable) \
1077 V(Oddball) \
1078 V(OrderedHashTable) \
1079 V(PropertyCell) \
1080 V(RegExpMatchInfo) \
1081 V(ScopeInfo) \
1082 V(ScriptContextTable) \
1083 V(SeqOneByteString) \
1084 V(SeqString) \
1085 V(SeqTwoByteString) \
1086 V(SharedFunctionInfo) \
1087 V(SlicedString) \
1088 V(SloppyArgumentsElements) \
1089 V(String) \
1090 V(StringSet) \
1091 V(StringTable) \
1092 V(StringWrapper) \
1093 V(Struct) \
1094 V(Symbol) \
1095 V(TemplateInfo) \
1096 V(TemplateList) \
1097 V(ThinString) \
1098 V(TransitionArray) \
1099 V(TypeFeedbackInfo) \
1100 V(Undetectable) \
1101 V(UniqueName) \
1074 V(UnseededNumberDictionary) \ 1102 V(UnseededNumberDictionary) \
1075 V(StringTable) \
1076 V(StringSet) \
1077 V(NormalizedMapCache) \
1078 V(CompilationCacheTable) \
1079 V(CodeCacheHashTable) \
1080 V(MapCache) \
1081 V(JSGlobalObject) \
1082 V(JSGlobalProxy) \
1083 V(Undetectable) \
1084 V(AccessCheckNeeded) \
1085 V(Callable) \
1086 V(Function) \
1087 V(Constructor) \
1088 V(TemplateInfo) \
1089 V(Filler) \
1090 V(FixedArrayBase) \
1091 V(External) \
1092 V(Struct) \
1093 V(Cell) \
1094 V(TemplateList) \
1095 V(PropertyCell) \
1096 V(WeakCell) \ 1103 V(WeakCell) \
1097 V(ObjectHashTable) \ 1104 V(WeakFixedArray) \
1098 V(ObjectHashSet) \ 1105 V(WeakHashTable)
1099 V(WeakHashTable) \
1100 V(OrderedHashTable) \
1101 V(SloppyArgumentsElements)
1102 1106
1103 #define ODDBALL_LIST(V) \ 1107 #define ODDBALL_LIST(V) \
1104 V(Undefined, undefined_value) \ 1108 V(Undefined, undefined_value) \
1105 V(Null, null_value) \ 1109 V(Null, null_value) \
1106 V(TheHole, the_hole_value) \ 1110 V(TheHole, the_hole_value) \
1107 V(Exception, exception) \ 1111 V(Exception, exception) \
1108 V(Uninitialized, uninitialized_value) \ 1112 V(Uninitialized, uninitialized_value) \
1109 V(True, true_value) \ 1113 V(True, true_value) \
1110 V(False, false_value) \ 1114 V(False, false_value) \
1111 V(ArgumentsMarker, arguments_marker) \ 1115 V(ArgumentsMarker, arguments_marker) \
(...skipping 6365 matching lines...) Expand 10 before | Expand all | Expand 10 after
7477 7481
7478 // When we store the sweep generation at which we moved the code from the 7482 // When we store the sweep generation at which we moved the code from the
7479 // code index to the saved code index we mask it of to be in the [0:255] 7483 // code index to the saved code index we mask it of to be in the [0:255]
7480 // range. 7484 // range.
7481 static const int kCodeAgeMask = 0xff; 7485 static const int kCodeAgeMask = 0xff;
7482 }; 7486 };
7483 7487
7484 DEFINE_OPERATORS_FOR_FLAGS(JSRegExp::Flags) 7488 DEFINE_OPERATORS_FOR_FLAGS(JSRegExp::Flags)
7485 7489
7486 7490
7487 class TypeFeedbackInfo: public Struct { 7491 class TypeFeedbackInfo: public Struct {
Michael Starzinger 2017/04/13 11:25:59 nit: Should inherit from Tuple3 now.
Yang 2017/04/13 11:53:33 Done.
7488 public: 7492 public:
7489 inline int ic_total_count(); 7493 inline int ic_total_count();
7490 inline void set_ic_total_count(int count); 7494 inline void set_ic_total_count(int count);
7491 7495
7492 inline int ic_with_type_info_count(); 7496 inline int ic_with_type_info_count();
7493 inline void change_ic_with_type_info_count(int delta); 7497 inline void change_ic_with_type_info_count(int delta);
7494 7498
7495 inline int ic_generic_count(); 7499 inline int ic_generic_count();
7496 inline void change_ic_generic_count(int delta); 7500 inline void change_ic_generic_count(int delta);
7497 7501
7498 inline void initialize_storage(); 7502 inline void initialize_storage();
7499 7503
7500 inline void change_own_type_change_checksum(); 7504 inline void change_own_type_change_checksum();
7501 inline int own_type_change_checksum(); 7505 inline int own_type_change_checksum();
7502 7506
7503 inline void set_inlined_type_change_checksum(int checksum); 7507 inline void set_inlined_type_change_checksum(int checksum);
7504 inline bool matches_inlined_type_change_checksum(int checksum); 7508 inline bool matches_inlined_type_change_checksum(int checksum);
7505 7509
7506 DECLARE_CAST(TypeFeedbackInfo) 7510 DECLARE_CAST(TypeFeedbackInfo)
7507 7511
7508 // Dispatched behavior.
7509 DECLARE_PRINTER(TypeFeedbackInfo)
7510 DECLARE_VERIFIER(TypeFeedbackInfo)
7511
7512 static const int kStorage1Offset = HeapObject::kHeaderSize; 7512 static const int kStorage1Offset = HeapObject::kHeaderSize;
7513 static const int kStorage2Offset = kStorage1Offset + kPointerSize; 7513 static const int kStorage2Offset = kStorage1Offset + kPointerSize;
Michael Starzinger 2017/04/13 11:25:59 Likewise.
Yang 2017/04/13 11:53:33 Done.
7514 static const int kStorage3Offset = kStorage2Offset + kPointerSize; 7514 static const int kStorage3Offset = kStorage2Offset + kPointerSize;
7515 static const int kSize = kStorage3Offset + kPointerSize; 7515 static const int kSize = kStorage3Offset + kPointerSize;
7516 7516
7517 private: 7517 private:
7518 static const int kTypeChangeChecksumBits = 7; 7518 static const int kTypeChangeChecksumBits = 7;
7519 7519
7520 class ICTotalCountField: public BitField<int, 0, 7520 class ICTotalCountField: public BitField<int, 0,
7521 kSmiValueSize - kTypeChangeChecksumBits> {}; // NOLINT 7521 kSmiValueSize - kTypeChangeChecksumBits> {}; // NOLINT
7522 class OwnTypeChangeChecksum: public BitField<int, 7522 class OwnTypeChangeChecksum: public BitField<int,
7523 kSmiValueSize - kTypeChangeChecksumBits, 7523 kSmiValueSize - kTypeChangeChecksumBits,
(...skipping 2303 matching lines...) Expand 10 before | Expand all | Expand 10 after
9827 9827
9828 static const int kCanInterceptSymbolsBit = 0; 9828 static const int kCanInterceptSymbolsBit = 0;
9829 static const int kAllCanReadBit = 1; 9829 static const int kAllCanReadBit = 1;
9830 static const int kNonMasking = 2; 9830 static const int kNonMasking = 2;
9831 9831
9832 private: 9832 private:
9833 DISALLOW_IMPLICIT_CONSTRUCTORS(InterceptorInfo); 9833 DISALLOW_IMPLICIT_CONSTRUCTORS(InterceptorInfo);
9834 }; 9834 };
9835 9835
9836 9836
9837 class CallHandlerInfo: public Struct { 9837 class CallHandlerInfo: public Struct {
Michael Starzinger 2017/04/13 11:25:58 nit: Should inherit from Tuple2 now.
Yang 2017/04/13 11:53:33 Done.
9838 public: 9838 public:
9839 DECL_ACCESSORS(callback, Object) 9839 DECL_ACCESSORS(callback, Object)
9840 DECL_ACCESSORS(data, Object) 9840 DECL_ACCESSORS(data, Object)
9841 9841
9842 DECLARE_CAST(CallHandlerInfo) 9842 DECLARE_CAST(CallHandlerInfo)
9843 9843
9844 // Dispatched behavior.
9845 DECLARE_PRINTER(CallHandlerInfo)
9846 DECLARE_VERIFIER(CallHandlerInfo)
9847
9848 static const int kCallbackOffset = HeapObject::kHeaderSize; 9844 static const int kCallbackOffset = HeapObject::kHeaderSize;
9849 static const int kDataOffset = kCallbackOffset + kPointerSize; 9845 static const int kDataOffset = kCallbackOffset + kPointerSize;
Michael Starzinger 2017/04/13 11:25:59 Likewise.
Yang 2017/04/13 11:53:33 Done.
9850 static const int kSize = kDataOffset + kPointerSize; 9846 static const int kSize = kDataOffset + kPointerSize;
9851 9847
9852 private: 9848 private:
9853 DISALLOW_IMPLICIT_CONSTRUCTORS(CallHandlerInfo); 9849 DISALLOW_IMPLICIT_CONSTRUCTORS(CallHandlerInfo);
9854 }; 9850 };
9855 9851
9856 9852
9857 class TemplateInfo: public Struct { 9853 class TemplateInfo: public Struct {
9858 public: 9854 public:
9859 DECL_ACCESSORS(tag, Object) 9855 DECL_ACCESSORS(tag, Object)
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after
10061 // Get the break point info object for a source position. 10057 // Get the break point info object for a source position.
10062 Object* GetBreakPointInfo(int source_position); 10058 Object* GetBreakPointInfo(int source_position);
10063 10059
10064 DISALLOW_IMPLICIT_CONSTRUCTORS(DebugInfo); 10060 DISALLOW_IMPLICIT_CONSTRUCTORS(DebugInfo);
10065 }; 10061 };
10066 10062
10067 10063
10068 // The BreakPointInfo class holds information for break points set in a 10064 // The BreakPointInfo class holds information for break points set in a
10069 // function. The DebugInfo object holds a BreakPointInfo object for each code 10065 // function. The DebugInfo object holds a BreakPointInfo object for each code
10070 // position with one or more break points. 10066 // position with one or more break points.
10071 class BreakPointInfo: public Struct { 10067 class BreakPointInfo : public Tuple2 {
10072 public: 10068 public:
10073 // The position in the source for the break position. 10069 // The position in the source for the break position.
10074 DECL_INT_ACCESSORS(source_position) 10070 DECL_INT_ACCESSORS(source_position)
10075 // List of related JavaScript break points. 10071 // List of related JavaScript break points.
10076 DECL_ACCESSORS(break_point_objects, Object) 10072 DECL_ACCESSORS(break_point_objects, Object)
10077 10073
10078 // Removes a break point. 10074 // Removes a break point.
10079 static void ClearBreakPoint(Handle<BreakPointInfo> info, 10075 static void ClearBreakPoint(Handle<BreakPointInfo> info,
10080 Handle<Object> break_point_object); 10076 Handle<Object> break_point_object);
10081 // Set a break point. 10077 // Set a break point.
10082 static void SetBreakPoint(Handle<BreakPointInfo> info, 10078 static void SetBreakPoint(Handle<BreakPointInfo> info,
10083 Handle<Object> break_point_object); 10079 Handle<Object> break_point_object);
10084 // Check if break point info has this break point object. 10080 // Check if break point info has this break point object.
10085 static bool HasBreakPointObject(Handle<BreakPointInfo> info, 10081 static bool HasBreakPointObject(Handle<BreakPointInfo> info,
10086 Handle<Object> break_point_object); 10082 Handle<Object> break_point_object);
10087 // Get the number of break points for this code offset. 10083 // Get the number of break points for this code offset.
10088 int GetBreakPointCount(); 10084 int GetBreakPointCount();
10089 10085
10090 int GetStatementPosition(Handle<DebugInfo> debug_info); 10086 int GetStatementPosition(Handle<DebugInfo> debug_info);
10091 10087
10092 DECLARE_CAST(BreakPointInfo) 10088 DECLARE_CAST(BreakPointInfo)
10093 10089
10094 // Dispatched behavior.
10095 DECLARE_PRINTER(BreakPointInfo)
10096 DECLARE_VERIFIER(BreakPointInfo)
10097
10098 static const int kSourcePositionIndex = Struct::kHeaderSize; 10090 static const int kSourcePositionIndex = Struct::kHeaderSize;
10099 static const int kBreakPointObjectsIndex = 10091 static const int kBreakPointObjectsIndex =
Michael Starzinger 2017/04/13 11:25:59 Let's use Tuple2::kValue1Offset and Tuple2::kValue
Yang 2017/04/13 11:53:33 Done.
10100 kSourcePositionIndex + kPointerSize; 10092 kSourcePositionIndex + kPointerSize;
10101 static const int kSize = kBreakPointObjectsIndex + kPointerSize; 10093 static const int kSize = kBreakPointObjectsIndex + kPointerSize;
Michael Starzinger 2017/04/13 11:25:59 Also the size should not be declared explicitly bu
Yang 2017/04/13 11:53:33 Done.
10102 10094
10103 private: 10095 private:
10104 DISALLOW_IMPLICIT_CONSTRUCTORS(BreakPointInfo); 10096 DISALLOW_IMPLICIT_CONSTRUCTORS(BreakPointInfo);
10105 }; 10097 };
10106 10098
10107 class StackFrameInfo : public Struct { 10099 class StackFrameInfo : public Struct {
10108 public: 10100 public:
10109 DECL_INT_ACCESSORS(line_number) 10101 DECL_INT_ACCESSORS(line_number)
10110 DECL_INT_ACCESSORS(column_number) 10102 DECL_INT_ACCESSORS(column_number)
10111 DECL_INT_ACCESSORS(script_id) 10103 DECL_INT_ACCESSORS(script_id)
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
10249 } 10241 }
10250 }; 10242 };
10251 10243
10252 10244
10253 } // NOLINT, false-positive due to second-order macros. 10245 } // NOLINT, false-positive due to second-order macros.
10254 } // NOLINT, false-positive due to second-order macros. 10246 } // NOLINT, false-positive due to second-order macros.
10255 10247
10256 #include "src/objects/object-macros-undef.h" 10248 #include "src/objects/object-macros-undef.h"
10257 10249
10258 #endif // V8_OBJECTS_H_ 10250 #endif // V8_OBJECTS_H_
OLDNEW
« no previous file with comments | « src/factory.cc ('k') | src/objects.cc » ('j') | src/objects/literal-objects.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698