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

Side by Side Diff: src/hydrogen.cc

Issue 150813004: In-heap small typed arrays (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: CR feedback Created 6 years, 9 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 | Annotate | Revision Log
« no previous file with comments | « src/heap.cc ('k') | src/objects.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 6448 matching lines...) Expand 10 before | Expand all | Expand 10 after
6459 HCompareMap* mapcompare = 6459 HCompareMap* mapcompare =
6460 New<HCompareMap>(object, map, this_map, other_map); 6460 New<HCompareMap>(object, map, this_map, other_map);
6461 FinishCurrentBlock(mapcompare); 6461 FinishCurrentBlock(mapcompare);
6462 6462
6463 set_current_block(this_map); 6463 set_current_block(this_map);
6464 HInstruction* access = NULL; 6464 HInstruction* access = NULL;
6465 if (IsDictionaryElementsKind(elements_kind)) { 6465 if (IsDictionaryElementsKind(elements_kind)) {
6466 access = AddInstruction(BuildKeyedGeneric(access_type, object, key, val)); 6466 access = AddInstruction(BuildKeyedGeneric(access_type, object, key, val));
6467 } else { 6467 } else {
6468 ASSERT(IsFastElementsKind(elements_kind) || 6468 ASSERT(IsFastElementsKind(elements_kind) ||
6469 IsExternalArrayElementsKind(elements_kind)); 6469 IsExternalArrayElementsKind(elements_kind) ||
6470 IsFixedTypedArrayElementsKind(elements_kind));
6470 LoadKeyedHoleMode load_mode = BuildKeyedHoleMode(map); 6471 LoadKeyedHoleMode load_mode = BuildKeyedHoleMode(map);
6471 // Happily, mapcompare is a checked object. 6472 // Happily, mapcompare is a checked object.
6472 access = BuildUncheckedMonomorphicElementAccess( 6473 access = BuildUncheckedMonomorphicElementAccess(
6473 mapcompare, key, val, 6474 mapcompare, key, val,
6474 map->instance_type() == JS_ARRAY_TYPE, 6475 map->instance_type() == JS_ARRAY_TYPE,
6475 elements_kind, access_type, 6476 elements_kind, access_type,
6476 load_mode, 6477 load_mode,
6477 store_mode); 6478 store_mode);
6478 } 6479 }
6479 *has_side_effects |= access->HasObservableSideEffects(); 6480 *has_side_effects |= access->HasObservableSideEffects();
(...skipping 1931 matching lines...) Expand 10 before | Expand all | Expand 10 after
8411 for (int offset = ViewClass::kSize; 8412 for (int offset = ViewClass::kSize;
8412 offset < ViewClass::kSizeWithInternalFields; 8413 offset < ViewClass::kSizeWithInternalFields;
8413 offset += kPointerSize) { 8414 offset += kPointerSize) {
8414 Add<HStoreNamedField>(obj, 8415 Add<HStoreNamedField>(obj,
8415 HObjectAccess::ForObservableJSObjectOffset(offset), 8416 HObjectAccess::ForObservableJSObjectOffset(offset),
8416 graph()->GetConstant0()); 8417 graph()->GetConstant0());
8417 } 8418 }
8418 8419
8419 Add<HStoreNamedField>( 8420 Add<HStoreNamedField>(
8420 obj, 8421 obj,
8421 HObjectAccess::ForJSArrayBufferViewBuffer(), buffer);
8422 Add<HStoreNamedField>(
8423 obj,
8424 HObjectAccess::ForJSArrayBufferViewByteOffset(), 8422 HObjectAccess::ForJSArrayBufferViewByteOffset(),
8425 byte_offset); 8423 byte_offset);
8426 Add<HStoreNamedField>( 8424 Add<HStoreNamedField>(
8427 obj, 8425 obj,
8428 HObjectAccess::ForJSArrayBufferViewByteLength(), 8426 HObjectAccess::ForJSArrayBufferViewByteLength(),
8429 byte_length); 8427 byte_length);
8430 8428
8431 HObjectAccess weak_first_view_access = 8429 if (buffer != NULL) {
8432 HObjectAccess::ForJSArrayBufferWeakFirstView(); 8430 Add<HStoreNamedField>(
8433 Add<HStoreNamedField>(obj, 8431 obj,
8434 HObjectAccess::ForJSArrayBufferViewWeakNext(), 8432 HObjectAccess::ForJSArrayBufferViewBuffer(), buffer);
8435 Add<HLoadNamedField>(buffer, static_cast<HValue*>(NULL), 8433 HObjectAccess weak_first_view_access =
8436 weak_first_view_access)); 8434 HObjectAccess::ForJSArrayBufferWeakFirstView();
8437 Add<HStoreNamedField>( 8435 Add<HStoreNamedField>(obj,
8438 buffer, weak_first_view_access, obj); 8436 HObjectAccess::ForJSArrayBufferViewWeakNext(),
8437 Add<HLoadNamedField>(buffer,
8438 static_cast<HValue*>(NULL),
8439 weak_first_view_access));
8440 Add<HStoreNamedField>(buffer, weak_first_view_access, obj);
8441 } else {
8442 Add<HStoreNamedField>(
8443 obj,
8444 HObjectAccess::ForJSArrayBufferViewBuffer(),
8445 Add<HConstant>(static_cast<int32_t>(0)));
8446 Add<HStoreNamedField>(obj,
8447 HObjectAccess::ForJSArrayBufferViewWeakNext(),
8448 graph()->GetConstantUndefined());
8449 }
8439 } 8450 }
8440 8451
8441 8452
8442 void HOptimizedGraphBuilder::VisitDataViewInitialize( 8453 void HOptimizedGraphBuilder::VisitDataViewInitialize(
8443 CallRuntime* expr) { 8454 CallRuntime* expr) {
8444 ZoneList<Expression*>* arguments = expr->arguments(); 8455 ZoneList<Expression*>* arguments = expr->arguments();
8445 8456
8446 NoObservableSideEffectsScope scope(this); 8457 NoObservableSideEffectsScope scope(this);
8447 ASSERT(arguments->length()== 4); 8458 ASSERT(arguments->length()== 4);
8448 CHECK_ALIVE(VisitForValue(arguments->at(0))); 8459 CHECK_ALIVE(VisitForValue(arguments->at(0)));
8449 HValue* obj = Pop(); 8460 HValue* obj = Pop();
8450 8461
8451 CHECK_ALIVE(VisitForValue(arguments->at(1))); 8462 CHECK_ALIVE(VisitForValue(arguments->at(1)));
8452 HValue* buffer = Pop(); 8463 HValue* buffer = Pop();
8453 8464
8454 CHECK_ALIVE(VisitForValue(arguments->at(2))); 8465 CHECK_ALIVE(VisitForValue(arguments->at(2)));
8455 HValue* byte_offset = Pop(); 8466 HValue* byte_offset = Pop();
8456 8467
8457 CHECK_ALIVE(VisitForValue(arguments->at(3))); 8468 CHECK_ALIVE(VisitForValue(arguments->at(3)));
8458 HValue* byte_length = Pop(); 8469 HValue* byte_length = Pop();
8459 8470
8460 BuildArrayBufferViewInitialization<JSDataView>( 8471 BuildArrayBufferViewInitialization<JSDataView>(
8461 obj, buffer, byte_offset, byte_length); 8472 obj, buffer, byte_offset, byte_length);
8462 } 8473 }
8463 8474
8464 8475
8465 void HOptimizedGraphBuilder::VisitTypedArrayInitialize( 8476 static Handle<Map> TypedArrayMap(Isolate* isolate,
8466 CallRuntime* expr) { 8477 ExternalArrayType array_type,
8478 ElementsKind target_kind) {
8479 Handle<Context> native_context = isolate->native_context();
8480 Handle<JSFunction> fun;
8481 switch (array_type) {
8482 #define TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size) \
8483 case kExternal##Type##Array: \
8484 fun = Handle<JSFunction>(native_context->type##_array_fun()); \
8485 break;
8486
8487 TYPED_ARRAYS(TYPED_ARRAY_CASE)
8488 #undef TYPED_ARRAY_CASE
8489 }
8490 Handle<Map> map(fun->initial_map());
8491 return Map::AsElementsKind(map, target_kind);
8492 }
8493
8494
8495 void HOptimizedGraphBuilder::VisitTypedArrayInitialize(CallRuntime* expr) {
8467 ZoneList<Expression*>* arguments = expr->arguments(); 8496 ZoneList<Expression*>* arguments = expr->arguments();
8468 8497
8469 NoObservableSideEffectsScope scope(this); 8498 NoObservableSideEffectsScope scope(this);
8470 static const int kObjectArg = 0; 8499 static const int kObjectArg = 0;
8471 static const int kArrayIdArg = 1; 8500 static const int kArrayIdArg = 1;
8472 static const int kBufferArg = 2; 8501 static const int kBufferArg = 2;
8473 static const int kByteOffsetArg = 3; 8502 static const int kByteOffsetArg = 3;
8474 static const int kByteLengthArg = 4; 8503 static const int kByteLengthArg = 4;
8475 static const int kArgsLength = 5; 8504 static const int kArgsLength = 5;
8476 ASSERT(arguments->length() == kArgsLength); 8505 ASSERT(arguments->length() == kArgsLength);
8477 8506
8478 8507
8479 CHECK_ALIVE(VisitForValue(arguments->at(kObjectArg))); 8508 CHECK_ALIVE(VisitForValue(arguments->at(kObjectArg)));
8480 HValue* obj = Pop(); 8509 HValue* obj = Pop();
8481 8510
8482 ASSERT(arguments->at(kArrayIdArg)->node_type() == AstNode::kLiteral); 8511 ASSERT(arguments->at(kArrayIdArg)->node_type() == AstNode::kLiteral);
8483 Handle<Object> value = 8512 Handle<Object> value =
8484 static_cast<Literal*>(arguments->at(kArrayIdArg))->value(); 8513 static_cast<Literal*>(arguments->at(kArrayIdArg))->value();
8485 ASSERT(value->IsSmi()); 8514 ASSERT(value->IsSmi());
8486 int array_id = Smi::cast(*value)->value(); 8515 int array_id = Smi::cast(*value)->value();
8487 8516
8488 CHECK_ALIVE(VisitForValue(arguments->at(kBufferArg))); 8517 HValue* buffer;
8489 HValue* buffer = Pop(); 8518 if (!arguments->at(kBufferArg)->IsNullLiteral()) {
8519 CHECK_ALIVE(VisitForValue(arguments->at(kBufferArg)));
8520 buffer = Pop();
8521 } else {
8522 buffer = NULL;
8523 }
8490 8524
8491 HValue* byte_offset; 8525 HValue* byte_offset;
8492 bool is_zero_byte_offset; 8526 bool is_zero_byte_offset;
8493 8527
8494 if (arguments->at(kByteOffsetArg)->node_type() == AstNode::kLiteral 8528 if (arguments->at(kByteOffsetArg)->node_type() == AstNode::kLiteral
8495 && Smi::FromInt(0) == 8529 && Smi::FromInt(0) ==
8496 *static_cast<Literal*>(arguments->at(kByteOffsetArg))->value()) { 8530 *static_cast<Literal*>(arguments->at(kByteOffsetArg))->value()) {
8497 byte_offset = Add<HConstant>(static_cast<int32_t>(0)); 8531 byte_offset = Add<HConstant>(static_cast<int32_t>(0));
8498 is_zero_byte_offset = true; 8532 is_zero_byte_offset = true;
8499 } else { 8533 } else {
8500 CHECK_ALIVE(VisitForValue(arguments->at(kByteOffsetArg))); 8534 CHECK_ALIVE(VisitForValue(arguments->at(kByteOffsetArg)));
8501 byte_offset = Pop(); 8535 byte_offset = Pop();
8502 is_zero_byte_offset = false; 8536 is_zero_byte_offset = false;
8537 ASSERT(buffer != NULL);
8503 } 8538 }
8504 8539
8505 CHECK_ALIVE(VisitForValue(arguments->at(kByteLengthArg))); 8540 CHECK_ALIVE(VisitForValue(arguments->at(kByteLengthArg)));
8506 HValue* byte_length = Pop(); 8541 HValue* byte_length = Pop();
8507 8542
8508 IfBuilder byte_offset_smi(this); 8543 IfBuilder byte_offset_smi(this);
8509 8544
8510 if (!is_zero_byte_offset) { 8545 if (!is_zero_byte_offset) {
8511 byte_offset_smi.If<HIsSmiAndBranch>(byte_offset); 8546 byte_offset_smi.If<HIsSmiAndBranch>(byte_offset);
8512 byte_offset_smi.Then(); 8547 byte_offset_smi.Then();
8513 } 8548 }
8514 8549
8550 ExternalArrayType array_type =
8551 kExternalInt8Array; // Bogus initialization.
8552 size_t element_size = 1; // Bogus initialization.
8553 ElementsKind external_elements_kind = // Bogus initialization.
8554 EXTERNAL_INT8_ELEMENTS;
8555 ElementsKind fixed_elements_kind = // Bogus initialization.
8556 INT8_ELEMENTS;
8557 Runtime::ArrayIdToTypeAndSize(array_id,
8558 &array_type,
8559 &external_elements_kind,
8560 &fixed_elements_kind,
8561 &element_size);
8562
8563
8515 { // byte_offset is Smi. 8564 { // byte_offset is Smi.
8516 BuildArrayBufferViewInitialization<JSTypedArray>( 8565 BuildArrayBufferViewInitialization<JSTypedArray>(
8517 obj, buffer, byte_offset, byte_length); 8566 obj, buffer, byte_offset, byte_length);
8518 8567
8519 ExternalArrayType array_type = kExternalInt8Array; // Bogus initialization.
8520 size_t element_size = 1; // Bogus initialization.
8521 Runtime::ArrayIdToTypeAndSize(array_id, &array_type, &element_size);
8522 8568
8523 HInstruction* length = AddUncasted<HDiv>(byte_length, 8569 HInstruction* length = AddUncasted<HDiv>(byte_length,
8524 Add<HConstant>(static_cast<int32_t>(element_size))); 8570 Add<HConstant>(static_cast<int32_t>(element_size)));
8525 8571
8526 Add<HStoreNamedField>(obj, 8572 Add<HStoreNamedField>(obj,
8527 HObjectAccess::ForJSTypedArrayLength(), 8573 HObjectAccess::ForJSTypedArrayLength(),
8528 length); 8574 length);
8529 8575
8530 Handle<Map> external_array_map( 8576 HValue* elements;
8531 isolate()->heap()->MapForExternalArrayType(array_type)); 8577 if (buffer != NULL) {
8578 Handle<Map> external_array_map(
8579 isolate()->heap()->MapForExternalArrayType(array_type));
8580 elements =
8581 Add<HAllocate>(
8582 Add<HConstant>(ExternalArray::kAlignedSize),
8583 HType::JSArray(),
Toon Verwaest 2014/03/24 11:16:12 Is this correct? I'd think only obj is HType::JSAr
Dmitry Lomov (no reviews) 2014/03/25 10:17:40 Done.
8584 NOT_TENURED,
8585 external_array_map->instance_type());
8532 8586
8533 HValue* elements = 8587 AddStoreMapConstant(elements, external_array_map);
8534 Add<HAllocate>(
8535 Add<HConstant>(ExternalArray::kAlignedSize),
8536 HType::JSArray(),
8537 NOT_TENURED,
8538 external_array_map->instance_type());
8539 8588
8540 AddStoreMapConstant(elements, external_array_map); 8589 HValue* backing_store = Add<HLoadNamedField>(
8590 buffer, static_cast<HValue*>(NULL),
8591 HObjectAccess::ForJSArrayBufferBackingStore());
8541 8592
8542 HValue* backing_store = Add<HLoadNamedField>( 8593 HValue* typed_array_start;
8543 buffer, static_cast<HValue*>(NULL), 8594 if (is_zero_byte_offset) {
8544 HObjectAccess::ForJSArrayBufferBackingStore()); 8595 typed_array_start = backing_store;
8596 } else {
8597 HInstruction* external_pointer =
8598 AddUncasted<HAdd>(backing_store, byte_offset);
8599 // Arguments are checked prior to call to TypedArrayInitialize,
8600 // including byte_offset.
8601 external_pointer->ClearFlag(HValue::kCanOverflow);
8602 typed_array_start = external_pointer;
8603 }
8545 8604
8546 HValue* typed_array_start; 8605
8547 if (is_zero_byte_offset) { 8606 Add<HStoreNamedField>(elements,
8548 typed_array_start = backing_store; 8607 HObjectAccess::ForExternalArrayExternalPointer(),
8608 typed_array_start);
8609
8610 Handle<Map> obj_map = TypedArrayMap(
8611 isolate(), array_type, external_elements_kind);
8612 AddStoreMapConstant(obj, obj_map);
8613 Add<HStoreNamedField>(elements,
8614 HObjectAccess::ForFixedArrayLength(),
8615 length, INITIALIZING_STORE);
8549 } else { 8616 } else {
8550 HInstruction* external_pointer = 8617 ASSERT(is_zero_byte_offset);
8551 AddUncasted<HAdd>(backing_store, byte_offset); 8618
8552 // Arguments are checked prior to call to TypedArrayInitialize, 8619 STATIC_ASSERT(
8553 // including byte_offset. 8620 (FixedTypedArrayBase::kHeaderSize & kObjectAlignmentMask) == 0);
8554 external_pointer->ClearFlag(HValue::kCanOverflow); 8621 HValue* total_size;
8555 typed_array_start = external_pointer; 8622
8623 // if fixed array's elements are not aligned to object's alignment,
8624 // we need to align the whole array to object alignment.
8625 if (element_size % kObjectAlignment != 0) {
8626 HConstant* header_size = Add<HConstant>(static_cast<int32_t>(
8627 FixedTypedArrayBase::kHeaderSize + kObjectAlignmentMask));
8628 HValue* unaligned_size = AddUncasted<HAdd>(byte_length, header_size);
8629 unaligned_size->ClearFlag(HValue::kCanOverflow);
8630 total_size = AddUncasted<HBitwise>(
8631 Token::BIT_AND, unaligned_size,
8632 Add<HConstant>(static_cast<int32_t>(~kObjectAlignmentMask)));
8633 } else {
8634 total_size = AddUncasted<HAdd>(byte_length,
8635 Add<HConstant>(FixedTypedArrayBase::kHeaderSize));
8636 total_size->ClearFlag(HValue::kCanOverflow);
Toon Verwaest 2014/03/24 11:16:12 Is this the only place where we do alignment? If n
Dmitry Lomov (no reviews) 2014/03/25 10:17:40 Done.
8637 }
8638
8639 Handle<Map> fixed_typed_array_map(
8640 isolate()->heap()->MapForFixedTypedArray(array_type));
8641 elements =
8642 Add<HAllocate>(total_size, HType::JSArray(),
Toon Verwaest 2014/03/24 11:16:12 Not a JSArray()
Dmitry Lomov (no reviews) 2014/03/25 10:17:40 Done.
8643 NOT_TENURED,
8644 fixed_typed_array_map->instance_type());
8645 AddStoreMapConstant(elements, fixed_typed_array_map);
8646
8647 Add<HStoreNamedField>(elements,
8648 HObjectAccess::ForFixedArrayLength(),
8649 length, INITIALIZING_STORE);
8650 HValue* filler = Add<HConstant>(static_cast<int32_t>(0));
8651
8652 {
8653 LoopBuilder builder(this, context(), LoopBuilder::kPostIncrement);
8654
8655 HValue* key = builder.BeginBody(
8656 Add<HConstant>(static_cast<int32_t>(0)),
8657 length, Token::LT);
8658 Add<HStoreKeyed>(elements, key, filler, fixed_elements_kind);
8659
8660 builder.EndBody();
8661 }
8556 } 8662 }
8557 8663 Add<HStoreNamedField>(
8558 Add<HStoreNamedField>(elements, 8664 elements, HObjectAccess::ForFixedArrayLength(), length,
8559 HObjectAccess::ForExternalArrayExternalPointer(), 8665 INITIALIZING_STORE);
8560 typed_array_start);
8561 Add<HStoreNamedField>(elements,
8562 HObjectAccess::ForFixedArrayLength(),
8563 length);
8564 Add<HStoreNamedField>( 8666 Add<HStoreNamedField>(
8565 obj, HObjectAccess::ForElementsPointer(), elements); 8667 obj, HObjectAccess::ForElementsPointer(), elements);
8566 } 8668 }
8567 8669
8568 if (!is_zero_byte_offset) { 8670 if (!is_zero_byte_offset) {
8569 byte_offset_smi.Else(); 8671 byte_offset_smi.Else();
8570 { // byte_offset is not Smi. 8672 { // byte_offset is not Smi.
8571 Push(obj); 8673 Push(obj);
8572 CHECK_ALIVE(VisitForValue(arguments->at(kArrayIdArg))); 8674 CHECK_ALIVE(VisitForValue(arguments->at(kArrayIdArg)));
8573 Push(buffer); 8675 Push(buffer);
(...skipping 25 matching lines...) Expand all
8599 if (function->function_id == Runtime::kTypedArrayInitialize) { 8701 if (function->function_id == Runtime::kTypedArrayInitialize) {
8600 return VisitTypedArrayInitialize(expr); 8702 return VisitTypedArrayInitialize(expr);
8601 } 8703 }
8602 8704
8603 if (function->function_id == Runtime::kMaxSmi) { 8705 if (function->function_id == Runtime::kMaxSmi) {
8604 ASSERT(expr->arguments()->length() == 0); 8706 ASSERT(expr->arguments()->length() == 0);
8605 HConstant* max_smi = New<HConstant>(static_cast<int32_t>(Smi::kMaxValue)); 8707 HConstant* max_smi = New<HConstant>(static_cast<int32_t>(Smi::kMaxValue));
8606 return ast_context()->ReturnInstruction(max_smi, expr->id()); 8708 return ast_context()->ReturnInstruction(max_smi, expr->id());
8607 } 8709 }
8608 8710
8711
8712 if (function->function_id == Runtime::kTypedArrayMaxSizeInHeap) {
8713 ASSERT(expr->arguments()->length() == 0);
8714 HConstant* value = New<HConstant>(
8715 static_cast<int32_t>(FLAG_typed_array_max_size_in_heap));
8716 return ast_context()->ReturnInstruction(value, expr->id());
8717 }
8718
8609 if (function->intrinsic_type == Runtime::INLINE) { 8719 if (function->intrinsic_type == Runtime::INLINE) {
8610 ASSERT(expr->name()->length() > 0); 8720 ASSERT(expr->name()->length() > 0);
8611 ASSERT(expr->name()->Get(0) == '_'); 8721 ASSERT(expr->name()->Get(0) == '_');
8612 // Call to an inline function. 8722 // Call to an inline function.
8613 int lookup_index = static_cast<int>(function->function_id) - 8723 int lookup_index = static_cast<int>(function->function_id) -
8614 static_cast<int>(Runtime::kFirstInlineFunction); 8724 static_cast<int>(Runtime::kFirstInlineFunction);
8615 ASSERT(lookup_index >= 0); 8725 ASSERT(lookup_index >= 0);
8616 ASSERT(static_cast<size_t>(lookup_index) < 8726 ASSERT(static_cast<size_t>(lookup_index) <
8617 ARRAY_SIZE(kInlineFunctionGenerators)); 8727 ARRAY_SIZE(kInlineFunctionGenerators));
8618 InlineFunctionGenerator generator = kInlineFunctionGenerators[lookup_index]; 8728 InlineFunctionGenerator generator = kInlineFunctionGenerators[lookup_index];
(...skipping 2692 matching lines...) Expand 10 before | Expand all | Expand 10 after
11311 if (ShouldProduceTraceOutput()) { 11421 if (ShouldProduceTraceOutput()) {
11312 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); 11422 isolate()->GetHTracer()->TraceHydrogen(name(), graph_);
11313 } 11423 }
11314 11424
11315 #ifdef DEBUG 11425 #ifdef DEBUG
11316 graph_->Verify(false); // No full verify. 11426 graph_->Verify(false); // No full verify.
11317 #endif 11427 #endif
11318 } 11428 }
11319 11429
11320 } } // namespace v8::internal 11430 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/heap.cc ('k') | src/objects.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698