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

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 + rebase 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') | src/objects.cc » ('J')
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 6451 matching lines...) Expand 10 before | Expand all | Expand 10 after
6462 HCompareMap* mapcompare = 6462 HCompareMap* mapcompare =
6463 New<HCompareMap>(object, map, this_map, other_map); 6463 New<HCompareMap>(object, map, this_map, other_map);
6464 FinishCurrentBlock(mapcompare); 6464 FinishCurrentBlock(mapcompare);
6465 6465
6466 set_current_block(this_map); 6466 set_current_block(this_map);
6467 HInstruction* access = NULL; 6467 HInstruction* access = NULL;
6468 if (IsDictionaryElementsKind(elements_kind)) { 6468 if (IsDictionaryElementsKind(elements_kind)) {
6469 access = AddInstruction(BuildKeyedGeneric(access_type, object, key, val)); 6469 access = AddInstruction(BuildKeyedGeneric(access_type, object, key, val));
6470 } else { 6470 } else {
6471 ASSERT(IsFastElementsKind(elements_kind) || 6471 ASSERT(IsFastElementsKind(elements_kind) ||
6472 IsExternalArrayElementsKind(elements_kind)); 6472 IsExternalArrayElementsKind(elements_kind) ||
6473 IsFixedTypedArrayElementsKind(elements_kind));
6473 LoadKeyedHoleMode load_mode = BuildKeyedHoleMode(map); 6474 LoadKeyedHoleMode load_mode = BuildKeyedHoleMode(map);
6474 // Happily, mapcompare is a checked object. 6475 // Happily, mapcompare is a checked object.
6475 access = BuildUncheckedMonomorphicElementAccess( 6476 access = BuildUncheckedMonomorphicElementAccess(
6476 mapcompare, key, val, 6477 mapcompare, key, val,
6477 map->instance_type() == JS_ARRAY_TYPE, 6478 map->instance_type() == JS_ARRAY_TYPE,
6478 elements_kind, access_type, 6479 elements_kind, access_type,
6479 load_mode, 6480 load_mode,
6480 store_mode); 6481 store_mode);
6481 } 6482 }
6482 *has_side_effects |= access->HasObservableSideEffects(); 6483 *has_side_effects |= access->HasObservableSideEffects();
(...skipping 1919 matching lines...) Expand 10 before | Expand all | Expand 10 after
8402 for (int offset = ViewClass::kSize; 8403 for (int offset = ViewClass::kSize;
8403 offset < ViewClass::kSizeWithInternalFields; 8404 offset < ViewClass::kSizeWithInternalFields;
8404 offset += kPointerSize) { 8405 offset += kPointerSize) {
8405 Add<HStoreNamedField>(obj, 8406 Add<HStoreNamedField>(obj,
8406 HObjectAccess::ForObservableJSObjectOffset(offset), 8407 HObjectAccess::ForObservableJSObjectOffset(offset),
8407 graph()->GetConstant0()); 8408 graph()->GetConstant0());
8408 } 8409 }
8409 8410
8410 Add<HStoreNamedField>( 8411 Add<HStoreNamedField>(
8411 obj, 8412 obj,
8412 HObjectAccess::ForJSArrayBufferViewBuffer(), buffer);
8413 Add<HStoreNamedField>(
8414 obj,
8415 HObjectAccess::ForJSArrayBufferViewByteOffset(), 8413 HObjectAccess::ForJSArrayBufferViewByteOffset(),
8416 byte_offset); 8414 byte_offset);
8417 Add<HStoreNamedField>( 8415 Add<HStoreNamedField>(
8418 obj, 8416 obj,
8419 HObjectAccess::ForJSArrayBufferViewByteLength(), 8417 HObjectAccess::ForJSArrayBufferViewByteLength(),
8420 byte_length); 8418 byte_length);
8421 8419
8422 HObjectAccess weak_first_view_access = 8420 if (buffer != NULL) {
8423 HObjectAccess::ForJSArrayBufferWeakFirstView(); 8421 Add<HStoreNamedField>(
8424 Add<HStoreNamedField>(obj, 8422 obj,
8425 HObjectAccess::ForJSArrayBufferViewWeakNext(), 8423 HObjectAccess::ForJSArrayBufferViewBuffer(), buffer);
8426 Add<HLoadNamedField>(buffer, static_cast<HValue*>(NULL), 8424 HObjectAccess weak_first_view_access =
8427 weak_first_view_access)); 8425 HObjectAccess::ForJSArrayBufferWeakFirstView();
8428 Add<HStoreNamedField>( 8426 Add<HStoreNamedField>(obj,
8429 buffer, weak_first_view_access, obj); 8427 HObjectAccess::ForJSArrayBufferViewWeakNext(),
8428 Add<HLoadNamedField>(buffer,
8429 static_cast<HValue*>(NULL),
8430 weak_first_view_access));
8431 Add<HStoreNamedField>(buffer, weak_first_view_access, obj);
8432 } else {
8433 Add<HStoreNamedField>(
8434 obj,
8435 HObjectAccess::ForJSArrayBufferViewBuffer(),
8436 Add<HConstant>(static_cast<int32_t>(0)));
8437 Add<HStoreNamedField>(obj,
8438 HObjectAccess::ForJSArrayBufferViewWeakNext(),
8439 graph()->GetConstantUndefined());
8440 }
8430 } 8441 }
8431 8442
8432 8443
8433 void HOptimizedGraphBuilder::VisitDataViewInitialize( 8444 void HOptimizedGraphBuilder::VisitDataViewInitialize(
8434 CallRuntime* expr) { 8445 CallRuntime* expr) {
8435 ZoneList<Expression*>* arguments = expr->arguments(); 8446 ZoneList<Expression*>* arguments = expr->arguments();
8436 8447
8437 NoObservableSideEffectsScope scope(this); 8448 NoObservableSideEffectsScope scope(this);
8438 ASSERT(arguments->length()== 4); 8449 ASSERT(arguments->length()== 4);
8439 CHECK_ALIVE(VisitForValue(arguments->at(0))); 8450 CHECK_ALIVE(VisitForValue(arguments->at(0)));
8440 HValue* obj = Pop(); 8451 HValue* obj = Pop();
8441 8452
8442 CHECK_ALIVE(VisitForValue(arguments->at(1))); 8453 CHECK_ALIVE(VisitForValue(arguments->at(1)));
8443 HValue* buffer = Pop(); 8454 HValue* buffer = Pop();
8444 8455
8445 CHECK_ALIVE(VisitForValue(arguments->at(2))); 8456 CHECK_ALIVE(VisitForValue(arguments->at(2)));
8446 HValue* byte_offset = Pop(); 8457 HValue* byte_offset = Pop();
8447 8458
8448 CHECK_ALIVE(VisitForValue(arguments->at(3))); 8459 CHECK_ALIVE(VisitForValue(arguments->at(3)));
8449 HValue* byte_length = Pop(); 8460 HValue* byte_length = Pop();
8450 8461
8451 BuildArrayBufferViewInitialization<JSDataView>( 8462 BuildArrayBufferViewInitialization<JSDataView>(
8452 obj, buffer, byte_offset, byte_length); 8463 obj, buffer, byte_offset, byte_length);
8453 } 8464 }
8454 8465
8466 static Handle<Map> TypedArrayMap(Isolate* isolate,
mvstanton 2014/03/11 10:43:51 nit: add another space above this method.
Dmitry Lomov (no reviews) 2014/03/24 08:31:22 Done.
8467 ExternalArrayType array_type,
8468 ElementsKind target_kind) {
8469 Handle<Context> native_context = isolate->native_context();
8470 Handle<JSFunction> fun;
8471 switch (array_type) {
8472 #define TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size) \
8473 case kExternal##Type##Array: \
8474 fun = Handle<JSFunction>(native_context->type##_array_fun()); \
8475 break;
8455 8476
8456 void HOptimizedGraphBuilder::VisitTypedArrayInitialize( 8477 TYPED_ARRAYS(TYPED_ARRAY_CASE)
8457 CallRuntime* expr) { 8478 #undef TYPED_ARRAY_CASE
8479 }
8480 Handle<Map> map(fun->initial_map());
8481 return Map::AsElementsKind(map, target_kind);
8482 }
8483
8484
8485 void HOptimizedGraphBuilder::VisitTypedArrayInitialize(CallRuntime* expr) {
8458 ZoneList<Expression*>* arguments = expr->arguments(); 8486 ZoneList<Expression*>* arguments = expr->arguments();
8459 8487
8460 NoObservableSideEffectsScope scope(this); 8488 NoObservableSideEffectsScope scope(this);
8461 static const int kObjectArg = 0; 8489 static const int kObjectArg = 0;
8462 static const int kArrayIdArg = 1; 8490 static const int kArrayIdArg = 1;
8463 static const int kBufferArg = 2; 8491 static const int kBufferArg = 2;
8464 static const int kByteOffsetArg = 3; 8492 static const int kByteOffsetArg = 3;
8465 static const int kByteLengthArg = 4; 8493 static const int kByteLengthArg = 4;
8466 static const int kArgsLength = 5; 8494 static const int kArgsLength = 5;
8467 ASSERT(arguments->length() == kArgsLength); 8495 ASSERT(arguments->length() == kArgsLength);
8468 8496
8469 8497
8470 CHECK_ALIVE(VisitForValue(arguments->at(kObjectArg))); 8498 CHECK_ALIVE(VisitForValue(arguments->at(kObjectArg)));
8471 HValue* obj = Pop(); 8499 HValue* obj = Pop();
8472 8500
8473 ASSERT(arguments->at(kArrayIdArg)->node_type() == AstNode::kLiteral); 8501 ASSERT(arguments->at(kArrayIdArg)->node_type() == AstNode::kLiteral);
8474 Handle<Object> value = 8502 Handle<Object> value =
8475 static_cast<Literal*>(arguments->at(kArrayIdArg))->value(); 8503 static_cast<Literal*>(arguments->at(kArrayIdArg))->value();
8476 ASSERT(value->IsSmi()); 8504 ASSERT(value->IsSmi());
8477 int array_id = Smi::cast(*value)->value(); 8505 int array_id = Smi::cast(*value)->value();
8478 8506
8479 CHECK_ALIVE(VisitForValue(arguments->at(kBufferArg))); 8507 HValue* buffer;
8480 HValue* buffer = Pop(); 8508 if (!arguments->at(kBufferArg)->IsNullLiteral()) {
8509 CHECK_ALIVE(VisitForValue(arguments->at(kBufferArg)));
8510 buffer = Pop();
8511 } else {
8512 buffer = NULL;
8513 }
8481 8514
8482 HValue* byte_offset; 8515 HValue* byte_offset;
8483 bool is_zero_byte_offset; 8516 bool is_zero_byte_offset;
8484 8517
8485 if (arguments->at(kByteOffsetArg)->node_type() == AstNode::kLiteral 8518 if (arguments->at(kByteOffsetArg)->node_type() == AstNode::kLiteral
8486 && Smi::FromInt(0) == 8519 && Smi::FromInt(0) ==
8487 *static_cast<Literal*>(arguments->at(kByteOffsetArg))->value()) { 8520 *static_cast<Literal*>(arguments->at(kByteOffsetArg))->value()) {
8488 byte_offset = Add<HConstant>(static_cast<int32_t>(0)); 8521 byte_offset = Add<HConstant>(static_cast<int32_t>(0));
8489 is_zero_byte_offset = true; 8522 is_zero_byte_offset = true;
8490 } else { 8523 } else {
8491 CHECK_ALIVE(VisitForValue(arguments->at(kByteOffsetArg))); 8524 CHECK_ALIVE(VisitForValue(arguments->at(kByteOffsetArg)));
8492 byte_offset = Pop(); 8525 byte_offset = Pop();
8493 is_zero_byte_offset = false; 8526 is_zero_byte_offset = false;
8527 ASSERT(buffer != NULL);
8494 } 8528 }
8495 8529
8496 CHECK_ALIVE(VisitForValue(arguments->at(kByteLengthArg))); 8530 CHECK_ALIVE(VisitForValue(arguments->at(kByteLengthArg)));
8497 HValue* byte_length = Pop(); 8531 HValue* byte_length = Pop();
8498 8532
8499 IfBuilder byte_offset_smi(this); 8533 IfBuilder byte_offset_smi(this);
8500 8534
8501 if (!is_zero_byte_offset) { 8535 if (!is_zero_byte_offset) {
8502 byte_offset_smi.If<HIsSmiAndBranch>(byte_offset); 8536 byte_offset_smi.If<HIsSmiAndBranch>(byte_offset);
8503 byte_offset_smi.Then(); 8537 byte_offset_smi.Then();
8504 } 8538 }
8505 8539
8540 ExternalArrayType array_type =
8541 kExternalInt8Array; // Bogus initialization.
8542 size_t element_size = 1; // Bogus initialization.
8543 ElementsKind external_elements_kind = // Bogus initialization.
8544 EXTERNAL_INT8_ELEMENTS;
8545 ElementsKind fixed_elements_kind = // Bogus initialization.
8546 INT8_ELEMENTS;
8547 Runtime::ArrayIdToTypeAndSize(array_id,
8548 &array_type,
8549 &external_elements_kind,
8550 &fixed_elements_kind,
8551 &element_size);
8552
8553
8506 { // byte_offset is Smi. 8554 { // byte_offset is Smi.
8507 BuildArrayBufferViewInitialization<JSTypedArray>( 8555 BuildArrayBufferViewInitialization<JSTypedArray>(
8508 obj, buffer, byte_offset, byte_length); 8556 obj, buffer, byte_offset, byte_length);
8509 8557
8510 ExternalArrayType array_type = kExternalInt8Array; // Bogus initialization.
8511 size_t element_size = 1; // Bogus initialization.
8512 Runtime::ArrayIdToTypeAndSize(array_id, &array_type, &element_size);
8513 8558
8514 HInstruction* length = AddUncasted<HDiv>(byte_length, 8559 HInstruction* length = AddUncasted<HDiv>(byte_length,
8515 Add<HConstant>(static_cast<int32_t>(element_size))); 8560 Add<HConstant>(static_cast<int32_t>(element_size)));
8516 8561
8517 Add<HStoreNamedField>(obj, 8562 Add<HStoreNamedField>(obj,
8518 HObjectAccess::ForJSTypedArrayLength(), 8563 HObjectAccess::ForJSTypedArrayLength(),
8519 length); 8564 length);
8520 8565
8521 Handle<Map> external_array_map( 8566 HValue* elements;
8522 isolate()->heap()->MapForExternalArrayType(array_type)); 8567 if (buffer != NULL) {
8568 Handle<Map> external_array_map(
8569 isolate()->heap()->MapForExternalArrayType(array_type));
8570 elements =
8571 Add<HAllocate>(
8572 Add<HConstant>(ExternalArray::kAlignedSize),
8573 HType::JSArray(),
8574 NOT_TENURED,
8575 external_array_map->instance_type());
8523 8576
8524 HValue* elements = 8577 AddStoreMapConstant(elements, external_array_map);
8525 Add<HAllocate>(
8526 Add<HConstant>(ExternalArray::kAlignedSize),
8527 HType::JSArray(),
8528 NOT_TENURED,
8529 external_array_map->instance_type());
8530 8578
8531 AddStoreMapConstant(elements, external_array_map); 8579 HValue* backing_store = Add<HLoadNamedField>(
8580 buffer, static_cast<HValue*>(NULL),
8581 HObjectAccess::ForJSArrayBufferBackingStore());
8532 8582
8533 HValue* backing_store = Add<HLoadNamedField>( 8583 HValue* typed_array_start;
8534 buffer, static_cast<HValue*>(NULL), 8584 if (is_zero_byte_offset) {
8535 HObjectAccess::ForJSArrayBufferBackingStore()); 8585 typed_array_start = backing_store;
8586 } else {
8587 HInstruction* external_pointer =
8588 AddUncasted<HAdd>(backing_store, byte_offset);
8589 // Arguments are checked prior to call to TypedArrayInitialize,
8590 // including byte_offset.
8591 external_pointer->ClearFlag(HValue::kCanOverflow);
8592 typed_array_start = external_pointer;
8593 }
8536 8594
8537 HValue* typed_array_start; 8595
8538 if (is_zero_byte_offset) { 8596 Add<HStoreNamedField>(elements,
8539 typed_array_start = backing_store; 8597 HObjectAccess::ForExternalArrayExternalPointer(),
8598 typed_array_start);
8599
8600 Handle<Map> obj_map = TypedArrayMap(
8601 isolate(), array_type, external_elements_kind);
8602 AddStoreMapConstant(obj, obj_map);
8603 Add<HStoreNamedField>(elements,
8604 HObjectAccess::ForFixedArrayLength(),
8605 length, INITIALIZING_STORE);
8540 } else { 8606 } else {
8541 HInstruction* external_pointer = 8607 ASSERT(is_zero_byte_offset);
8542 AddUncasted<HAdd>(backing_store, byte_offset); 8608
8543 // Arguments are checked prior to call to TypedArrayInitialize, 8609 STATIC_ASSERT(
8544 // including byte_offset. 8610 (FixedTypedArrayBase::kHeaderSize & kObjectAlignmentMask) == 0);
8545 external_pointer->ClearFlag(HValue::kCanOverflow); 8611 HValue* total_size;
8546 typed_array_start = external_pointer; 8612
mvstanton 2014/03/11 10:43:51 A short comment here to explain what you are doing
Dmitry Lomov (no reviews) 2014/03/24 08:31:22 Done.
8613 if (element_size % kObjectAlignment != 0) {
8614 HConstant* header_size = Add<HConstant>(static_cast<int32_t>(
8615 FixedTypedArrayBase::kHeaderSize + kObjectAlignmentMask));
8616 HValue* unaligned_size = AddUncasted<HAdd>(byte_length, header_size);
8617 unaligned_size->ClearFlag(HValue::kCanOverflow);
8618 total_size = AddUncasted<HBitwise>(
8619 Token::BIT_AND, unaligned_size,
8620 Add<HConstant>(static_cast<int32_t>(~kObjectAlignmentMask)));
8621 } else {
8622 total_size = AddUncasted<HAdd>(byte_length,
8623 Add<HConstant>(FixedTypedArrayBase::kHeaderSize));
8624 total_size->ClearFlag(HValue::kCanOverflow);
8625 }
8626
8627 Handle<Map> fixed_typed_array_map(
8628 isolate()->heap()->MapForFixedTypedArray(array_type));
8629 elements =
8630 Add<HAllocate>(total_size, HType::JSArray(),
8631 NOT_TENURED,
8632 fixed_typed_array_map->instance_type());
8633 AddStoreMapConstant(elements, fixed_typed_array_map);
8634
8635 Add<HStoreNamedField>(elements,
8636 HObjectAccess::ForFixedArrayLength(),
8637 length, INITIALIZING_STORE);
8638 HValue* filler = Add<HConstant>(static_cast<int32_t>(0));
8639
8640 {
8641 LoopBuilder builder(this, context(), LoopBuilder::kPostIncrement);
8642
8643 HValue* key = builder.BeginBody(
8644 Add<HConstant>(static_cast<int32_t>(0)),
8645 length, Token::LT);
8646 Add<HStoreKeyed>(elements, key, filler, fixed_elements_kind);
8647
8648 builder.EndBody();
8649 }
8547 } 8650 }
8548 8651 Add<HStoreNamedField>(
8549 Add<HStoreNamedField>(elements, 8652 elements, HObjectAccess::ForFixedArrayLength(), length,
8550 HObjectAccess::ForExternalArrayExternalPointer(), 8653 INITIALIZING_STORE);
8551 typed_array_start);
8552 Add<HStoreNamedField>(elements,
8553 HObjectAccess::ForFixedArrayLength(),
8554 length);
8555 Add<HStoreNamedField>( 8654 Add<HStoreNamedField>(
8556 obj, HObjectAccess::ForElementsPointer(), elements); 8655 obj, HObjectAccess::ForElementsPointer(), elements);
8557 } 8656 }
8558 8657
8559 if (!is_zero_byte_offset) { 8658 if (!is_zero_byte_offset) {
8560 byte_offset_smi.Else(); 8659 byte_offset_smi.Else();
8561 { // byte_offset is not Smi. 8660 { // byte_offset is not Smi.
8562 Push(obj); 8661 Push(obj);
8563 CHECK_ALIVE(VisitForValue(arguments->at(kArrayIdArg))); 8662 CHECK_ALIVE(VisitForValue(arguments->at(kArrayIdArg)));
8564 Push(buffer); 8663 Push(buffer);
(...skipping 25 matching lines...) Expand all
8590 if (function->function_id == Runtime::kTypedArrayInitialize) { 8689 if (function->function_id == Runtime::kTypedArrayInitialize) {
8591 return VisitTypedArrayInitialize(expr); 8690 return VisitTypedArrayInitialize(expr);
8592 } 8691 }
8593 8692
8594 if (function->function_id == Runtime::kMaxSmi) { 8693 if (function->function_id == Runtime::kMaxSmi) {
8595 ASSERT(expr->arguments()->length() == 0); 8694 ASSERT(expr->arguments()->length() == 0);
8596 HConstant* max_smi = New<HConstant>(static_cast<int32_t>(Smi::kMaxValue)); 8695 HConstant* max_smi = New<HConstant>(static_cast<int32_t>(Smi::kMaxValue));
8597 return ast_context()->ReturnInstruction(max_smi, expr->id()); 8696 return ast_context()->ReturnInstruction(max_smi, expr->id());
8598 } 8697 }
8599 8698
8699
8700 if (function->function_id == Runtime::kTypedArrayMaxSizeInHeap) {
8701 ASSERT(expr->arguments()->length() == 0);
8702 HConstant* value = New<HConstant>(
8703 static_cast<int32_t>(FLAG_typed_array_max_size_in_heap));
8704 return ast_context()->ReturnInstruction(value, expr->id());
8705 }
8706
8600 if (function->intrinsic_type == Runtime::INLINE) { 8707 if (function->intrinsic_type == Runtime::INLINE) {
8601 ASSERT(expr->name()->length() > 0); 8708 ASSERT(expr->name()->length() > 0);
8602 ASSERT(expr->name()->Get(0) == '_'); 8709 ASSERT(expr->name()->Get(0) == '_');
8603 // Call to an inline function. 8710 // Call to an inline function.
8604 int lookup_index = static_cast<int>(function->function_id) - 8711 int lookup_index = static_cast<int>(function->function_id) -
8605 static_cast<int>(Runtime::kFirstInlineFunction); 8712 static_cast<int>(Runtime::kFirstInlineFunction);
8606 ASSERT(lookup_index >= 0); 8713 ASSERT(lookup_index >= 0);
8607 ASSERT(static_cast<size_t>(lookup_index) < 8714 ASSERT(static_cast<size_t>(lookup_index) <
8608 ARRAY_SIZE(kInlineFunctionGenerators)); 8715 ARRAY_SIZE(kInlineFunctionGenerators));
8609 InlineFunctionGenerator generator = kInlineFunctionGenerators[lookup_index]; 8716 InlineFunctionGenerator generator = kInlineFunctionGenerators[lookup_index];
(...skipping 2692 matching lines...) Expand 10 before | Expand all | Expand 10 after
11302 if (ShouldProduceTraceOutput()) { 11409 if (ShouldProduceTraceOutput()) {
11303 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); 11410 isolate()->GetHTracer()->TraceHydrogen(name(), graph_);
11304 } 11411 }
11305 11412
11306 #ifdef DEBUG 11413 #ifdef DEBUG
11307 graph_->Verify(false); // No full verify. 11414 graph_->Verify(false); // No full verify.
11308 #endif 11415 #endif
11309 } 11416 }
11310 11417
11311 } } // namespace v8::internal 11418 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/heap.cc ('k') | src/objects.h » ('j') | src/objects.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698