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