Chromium Code Reviews| 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 275 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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_ |
| OLD | NEW |