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

Side by Side Diff: src/hydrogen.cc

Issue 300103005: Split StringLiteral from Literal. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: number literals Created 6 years, 7 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/full-codegen.cc ('k') | src/ia32/full-codegen-ia32.cc » ('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 // 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 #include "hydrogen.h" 5 #include "hydrogen.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "v8.h" 9 #include "v8.h"
10 #include "allocation-site-scopes.h" 10 #include "allocation-site-scopes.h"
(...skipping 5043 matching lines...) Expand 10 before | Expand all | Expand 10 after
5054 5054
5055 void HOptimizedGraphBuilder::VisitLiteral(Literal* expr) { 5055 void HOptimizedGraphBuilder::VisitLiteral(Literal* expr) {
5056 ASSERT(!HasStackOverflow()); 5056 ASSERT(!HasStackOverflow());
5057 ASSERT(current_block() != NULL); 5057 ASSERT(current_block() != NULL);
5058 ASSERT(current_block()->HasPredecessor()); 5058 ASSERT(current_block()->HasPredecessor());
5059 HConstant* instr = New<HConstant>(expr->value()); 5059 HConstant* instr = New<HConstant>(expr->value());
5060 return ast_context()->ReturnInstruction(instr, expr->id()); 5060 return ast_context()->ReturnInstruction(instr, expr->id());
5061 } 5061 }
5062 5062
5063 5063
5064 void HOptimizedGraphBuilder::VisitStringLiteral(StringLiteral* expr) {
5065 VisitLiteral(expr);
5066 }
5067
5068
5069 void HOptimizedGraphBuilder::VisitNumberLiteral(NumberLiteral* expr) {
5070 VisitLiteral(expr);
5071 }
5072
5073
5064 void HOptimizedGraphBuilder::VisitRegExpLiteral(RegExpLiteral* expr) { 5074 void HOptimizedGraphBuilder::VisitRegExpLiteral(RegExpLiteral* expr) {
5065 ASSERT(!HasStackOverflow()); 5075 ASSERT(!HasStackOverflow());
5066 ASSERT(current_block() != NULL); 5076 ASSERT(current_block() != NULL);
5067 ASSERT(current_block()->HasPredecessor()); 5077 ASSERT(current_block()->HasPredecessor());
5068 Handle<JSFunction> closure = function_state()->compilation_info()->closure(); 5078 Handle<JSFunction> closure = function_state()->compilation_info()->closure();
5069 Handle<FixedArray> literals(closure->literals()); 5079 Handle<FixedArray> literals(closure->literals());
5070 HRegExpLiteral* instr = New<HRegExpLiteral>(literals, 5080 HRegExpLiteral* instr = New<HRegExpLiteral>(literals,
5071 expr->pattern(), 5081 expr->pattern(),
5072 expr->flags(), 5082 expr->flags(),
5073 expr->literal_index()); 5083 expr->literal_index());
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
5213 if (property->IsCompileTimeValue()) continue; 5223 if (property->IsCompileTimeValue()) continue;
5214 5224
5215 Literal* key = property->key(); 5225 Literal* key = property->key();
5216 Expression* value = property->value(); 5226 Expression* value = property->value();
5217 5227
5218 switch (property->kind()) { 5228 switch (property->kind()) {
5219 case ObjectLiteral::Property::MATERIALIZED_LITERAL: 5229 case ObjectLiteral::Property::MATERIALIZED_LITERAL:
5220 ASSERT(!CompileTimeValue::IsCompileTimeValue(value)); 5230 ASSERT(!CompileTimeValue::IsCompileTimeValue(value));
5221 // Fall through. 5231 // Fall through.
5222 case ObjectLiteral::Property::COMPUTED: 5232 case ObjectLiteral::Property::COMPUTED:
5223 if (key->value()->IsInternalizedString()) { 5233 if (key->IsStringLiteral()) {
5224 if (property->emit_store()) { 5234 if (property->emit_store()) {
5225 CHECK_ALIVE(VisitForValue(value)); 5235 CHECK_ALIVE(VisitForValue(value));
5226 HValue* value = Pop(); 5236 HValue* value = Pop();
5227 Handle<Map> map = property->GetReceiverType(); 5237 Handle<Map> map = property->GetReceiverType();
5228 Handle<String> name = property->key()->AsPropertyName(); 5238 Handle<String> name =
5239 property->key()->AsStringLiteral()->AsPropertyName();
5229 HInstruction* store; 5240 HInstruction* store;
5230 if (map.is_null()) { 5241 if (map.is_null()) {
5231 // If we don't know the monomorphic type, do a generic store. 5242 // If we don't know the monomorphic type, do a generic store.
5232 CHECK_ALIVE(store = BuildNamedGeneric( 5243 CHECK_ALIVE(store = BuildNamedGeneric(
5233 STORE, literal, name, value)); 5244 STORE, literal, name, value));
5234 } else { 5245 } else {
5235 PropertyAccessInfo info(this, STORE, ToType(map), name); 5246 PropertyAccessInfo info(this, STORE, ToType(map), name);
5236 if (info.CanAccessMonomorphic()) { 5247 if (info.CanAccessMonomorphic()) {
5237 HValue* checked_literal = Add<HCheckMaps>(literal, map); 5248 HValue* checked_literal = Add<HCheckMaps>(literal, map);
5238 ASSERT(!info.lookup()->IsPropertyCallbacks()); 5249 ASSERT(!info.lookup()->IsPropertyCallbacks());
(...skipping 805 matching lines...) Expand 10 before | Expand all | Expand 10 after
6044 Drop(3); 6055 Drop(3);
6045 Push(value); 6056 Push(value);
6046 Add<HSimulate>(return_id, REMOVABLE_SIMULATE); 6057 Add<HSimulate>(return_id, REMOVABLE_SIMULATE);
6047 return ast_context()->ReturnValue(Pop()); 6058 return ast_context()->ReturnValue(Pop());
6048 } 6059 }
6049 6060
6050 // Named store. 6061 // Named store.
6051 HValue* value = Pop(); 6062 HValue* value = Pop();
6052 HValue* object = Pop(); 6063 HValue* object = Pop();
6053 6064
6054 Literal* key = prop->key()->AsLiteral(); 6065 StringLiteral* key = prop->key()->AsStringLiteral();
6055 Handle<String> name = Handle<String>::cast(key->value()); 6066 Handle<String> name = key->string();
6056 ASSERT(!name.is_null()); 6067 ASSERT(!name.is_null());
6057 6068
6058 HInstruction* instr = BuildNamedAccess(STORE, ast_id, return_id, expr, 6069 HInstruction* instr = BuildNamedAccess(STORE, ast_id, return_id, expr,
6059 object, name, value, is_uninitialized); 6070 object, name, value, is_uninitialized);
6060 if (instr == NULL) return; 6071 if (instr == NULL) return;
6061 6072
6062 if (!ast_context()->IsEffect()) Push(value); 6073 if (!ast_context()->IsEffect()) Push(value);
6063 AddInstruction(instr); 6074 AddInstruction(instr);
6064 if (instr->HasObservableSideEffects()) { 6075 if (instr->HasObservableSideEffects()) {
6065 Add<HSimulate>(ast_id, REMOVABLE_SIMULATE); 6076 Add<HSimulate>(ast_id, REMOVABLE_SIMULATE);
(...skipping 735 matching lines...) Expand 10 before | Expand all | Expand 10 after
6801 bool HOptimizedGraphBuilder::TryArgumentsAccess(Property* expr) { 6812 bool HOptimizedGraphBuilder::TryArgumentsAccess(Property* expr) {
6802 VariableProxy* proxy = expr->obj()->AsVariableProxy(); 6813 VariableProxy* proxy = expr->obj()->AsVariableProxy();
6803 if (proxy == NULL) return false; 6814 if (proxy == NULL) return false;
6804 if (!proxy->var()->IsStackAllocated()) return false; 6815 if (!proxy->var()->IsStackAllocated()) return false;
6805 if (!environment()->Lookup(proxy->var())->CheckFlag(HValue::kIsArguments)) { 6816 if (!environment()->Lookup(proxy->var())->CheckFlag(HValue::kIsArguments)) {
6806 return false; 6817 return false;
6807 } 6818 }
6808 6819
6809 HInstruction* result = NULL; 6820 HInstruction* result = NULL;
6810 if (expr->key()->IsPropertyName()) { 6821 if (expr->key()->IsPropertyName()) {
6811 Handle<String> name = expr->key()->AsLiteral()->AsPropertyName(); 6822 Handle<String> name = expr->key()->AsStringLiteral()->AsPropertyName();
6812 if (!name->IsOneByteEqualTo(STATIC_ASCII_VECTOR("length"))) return false; 6823 if (!name->IsOneByteEqualTo(STATIC_ASCII_VECTOR("length"))) return false;
6813 6824
6814 if (function_state()->outer() == NULL) { 6825 if (function_state()->outer() == NULL) {
6815 HInstruction* elements = Add<HArgumentsElements>(false); 6826 HInstruction* elements = Add<HArgumentsElements>(false);
6816 result = New<HArgumentsLength>(elements); 6827 result = New<HArgumentsLength>(elements);
6817 } else { 6828 } else {
6818 // Number of arguments without receiver. 6829 // Number of arguments without receiver.
6819 int argument_count = environment()-> 6830 int argument_count = environment()->
6820 arguments_environment()->parameter_count() - 1; 6831 arguments_environment()->parameter_count() - 1;
6821 result = New<HConstant>(argument_count); 6832 result = New<HConstant>(argument_count);
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
6905 HInstruction* char_code = BuildStringCharCodeAt(string, index); 6916 HInstruction* char_code = BuildStringCharCodeAt(string, index);
6906 AddInstruction(char_code); 6917 AddInstruction(char_code);
6907 instr = NewUncasted<HStringCharFromCode>(char_code); 6918 instr = NewUncasted<HStringCharFromCode>(char_code);
6908 6919
6909 } else if (expr->IsFunctionPrototype()) { 6920 } else if (expr->IsFunctionPrototype()) {
6910 HValue* function = Pop(); 6921 HValue* function = Pop();
6911 BuildCheckHeapObject(function); 6922 BuildCheckHeapObject(function);
6912 instr = New<HLoadFunctionPrototype>(function); 6923 instr = New<HLoadFunctionPrototype>(function);
6913 6924
6914 } else if (expr->key()->IsPropertyName()) { 6925 } else if (expr->key()->IsPropertyName()) {
6915 Handle<String> name = expr->key()->AsLiteral()->AsPropertyName(); 6926 Handle<String> name = expr->key()->AsStringLiteral()->AsPropertyName();
6916 HValue* object = Pop(); 6927 HValue* object = Pop();
6917 6928
6918 instr = BuildNamedAccess(LOAD, ast_id, expr->LoadId(), expr, 6929 instr = BuildNamedAccess(LOAD, ast_id, expr->LoadId(), expr,
6919 object, name, NULL, expr->IsUninitialized()); 6930 object, name, NULL, expr->IsUninitialized());
6920 if (instr == NULL) return; 6931 if (instr == NULL) return;
6921 if (instr->IsLinked()) return ast_context()->ReturnValue(instr); 6932 if (instr->IsLinked()) return ast_context()->ReturnValue(instr);
6922 6933
6923 } else { 6934 } else {
6924 HValue* key = Pop(); 6935 HValue* key = Pop();
6925 HValue* obj = Pop(); 6936 HValue* obj = Pop();
(...skipping 1318 matching lines...) Expand 10 before | Expand all | Expand 10 after
8244 8255
8245 Property* prop = callee->AsProperty(); 8256 Property* prop = callee->AsProperty();
8246 if (prop != NULL) { 8257 if (prop != NULL) {
8247 CHECK_ALIVE(VisitForValue(prop->obj())); 8258 CHECK_ALIVE(VisitForValue(prop->obj()));
8248 HValue* receiver = Top(); 8259 HValue* receiver = Top();
8249 8260
8250 SmallMapList* types; 8261 SmallMapList* types;
8251 ComputeReceiverTypes(expr, receiver, &types, zone()); 8262 ComputeReceiverTypes(expr, receiver, &types, zone());
8252 8263
8253 if (prop->key()->IsPropertyName() && types->length() > 0) { 8264 if (prop->key()->IsPropertyName() && types->length() > 0) {
8254 Handle<String> name = prop->key()->AsLiteral()->AsPropertyName(); 8265 Handle<String> name = prop->key()->AsStringLiteral()->AsPropertyName();
8255 PropertyAccessInfo info(this, LOAD, ToType(types->first()), name); 8266 PropertyAccessInfo info(this, LOAD, ToType(types->first()), name);
8256 if (!info.CanAccessAsMonomorphic(types)) { 8267 if (!info.CanAccessAsMonomorphic(types)) {
8257 HandlePolymorphicCallNamed(expr, receiver, types, name); 8268 HandlePolymorphicCallNamed(expr, receiver, types, name);
8258 return; 8269 return;
8259 } 8270 }
8260 } 8271 }
8261 8272
8262 HValue* key = NULL; 8273 HValue* key = NULL;
8263 if (!prop->key()->IsPropertyName()) { 8274 if (!prop->key()->IsPropertyName()) {
8264 CHECK_ALIVE(VisitForValue(prop->key())); 8275 CHECK_ALIVE(VisitForValue(prop->key()));
(...skipping 613 matching lines...) Expand 10 before | Expand all | Expand 10 after
8878 static const int kBufferArg = 2; 8889 static const int kBufferArg = 2;
8879 static const int kByteOffsetArg = 3; 8890 static const int kByteOffsetArg = 3;
8880 static const int kByteLengthArg = 4; 8891 static const int kByteLengthArg = 4;
8881 static const int kArgsLength = 5; 8892 static const int kArgsLength = 5;
8882 ASSERT(arguments->length() == kArgsLength); 8893 ASSERT(arguments->length() == kArgsLength);
8883 8894
8884 8895
8885 CHECK_ALIVE(VisitForValue(arguments->at(kObjectArg))); 8896 CHECK_ALIVE(VisitForValue(arguments->at(kObjectArg)));
8886 HValue* obj = Pop(); 8897 HValue* obj = Pop();
8887 8898
8888 if (arguments->at(kArrayIdArg)->node_type() != AstNode::kLiteral) { 8899 if (arguments->at(kArrayIdArg)->AsAnyLiteral() == NULL) {
8889 // This should never happen in real use, but can happen when fuzzing. 8900 // This should never happen in real use, but can happen when fuzzing.
8890 // Just bail out. 8901 // Just bail out.
8891 Bailout(kNeedSmiLiteral); 8902 Bailout(kNeedSmiLiteral);
8892 return; 8903 return;
8893 } 8904 }
8894 Handle<Object> value = 8905 Handle<Object> value =
8895 static_cast<Literal*>(arguments->at(kArrayIdArg))->value(); 8906 static_cast<Literal*>(arguments->at(kArrayIdArg))->value();
8896 if (!value->IsSmi()) { 8907 if (!value->IsSmi()) {
8897 // This should never happen in real use, but can happen when fuzzing. 8908 // This should never happen in real use, but can happen when fuzzing.
8898 // Just bail out. 8909 // Just bail out.
8899 Bailout(kNeedSmiLiteral); 8910 Bailout(kNeedSmiLiteral);
8900 return; 8911 return;
8901 } 8912 }
8902 int array_id = Smi::cast(*value)->value(); 8913 int array_id = Smi::cast(*value)->value();
8903 8914
8904 HValue* buffer; 8915 HValue* buffer;
8905 if (!arguments->at(kBufferArg)->IsNullLiteral()) { 8916 if (!arguments->at(kBufferArg)->IsNullLiteral()) {
8906 CHECK_ALIVE(VisitForValue(arguments->at(kBufferArg))); 8917 CHECK_ALIVE(VisitForValue(arguments->at(kBufferArg)));
8907 buffer = Pop(); 8918 buffer = Pop();
8908 } else { 8919 } else {
8909 buffer = NULL; 8920 buffer = NULL;
8910 } 8921 }
8911 8922
8912 HValue* byte_offset; 8923 HValue* byte_offset;
8913 bool is_zero_byte_offset; 8924 bool is_zero_byte_offset;
8914 8925
8915 if (arguments->at(kByteOffsetArg)->node_type() == AstNode::kLiteral 8926 if (arguments->at(kByteOffsetArg)->IsNumberLiteral()
8916 && Smi::FromInt(0) == 8927 && Smi::FromInt(0) ==
8917 *static_cast<Literal*>(arguments->at(kByteOffsetArg))->value()) { 8928 *static_cast<Literal*>(arguments->at(kByteOffsetArg))->value()) {
8918 byte_offset = Add<HConstant>(static_cast<int32_t>(0)); 8929 byte_offset = Add<HConstant>(static_cast<int32_t>(0));
8919 is_zero_byte_offset = true; 8930 is_zero_byte_offset = true;
8920 } else { 8931 } else {
8921 CHECK_ALIVE(VisitForValue(arguments->at(kByteOffsetArg))); 8932 CHECK_ALIVE(VisitForValue(arguments->at(kByteOffsetArg)));
8922 byte_offset = Pop(); 8933 byte_offset = Pop();
8923 is_zero_byte_offset = false; 8934 is_zero_byte_offset = false;
8924 ASSERT(buffer != NULL); 8935 ASSERT(buffer != NULL);
8925 } 8936 }
(...skipping 839 matching lines...) Expand 10 before | Expand all | Expand 10 after
9765 } 9776 }
9766 return instr; 9777 return instr;
9767 } 9778 }
9768 9779
9769 9780
9770 // Check for the form (%_ClassOf(foo) === 'BarClass'). 9781 // Check for the form (%_ClassOf(foo) === 'BarClass').
9771 static bool IsClassOfTest(CompareOperation* expr) { 9782 static bool IsClassOfTest(CompareOperation* expr) {
9772 if (expr->op() != Token::EQ_STRICT) return false; 9783 if (expr->op() != Token::EQ_STRICT) return false;
9773 CallRuntime* call = expr->left()->AsCallRuntime(); 9784 CallRuntime* call = expr->left()->AsCallRuntime();
9774 if (call == NULL) return false; 9785 if (call == NULL) return false;
9775 Literal* literal = expr->right()->AsLiteral(); 9786 StringLiteral* literal = expr->right()->AsStringLiteral();
9776 if (literal == NULL) return false; 9787 if (literal == NULL) return false;
9777 if (!literal->value()->IsString()) return false;
9778 if (!call->name()->IsOneByteEqualTo(STATIC_ASCII_VECTOR("_ClassOf"))) { 9788 if (!call->name()->IsOneByteEqualTo(STATIC_ASCII_VECTOR("_ClassOf"))) {
9779 return false; 9789 return false;
9780 } 9790 }
9781 ASSERT(call->arguments()->length() == 1); 9791 ASSERT(call->arguments()->length() == 1);
9782 return true; 9792 return true;
9783 } 9793 }
9784 9794
9785 9795
9786 void HOptimizedGraphBuilder::VisitBinaryOperation(BinaryOperation* expr) { 9796 void HOptimizedGraphBuilder::VisitBinaryOperation(BinaryOperation* expr) {
9787 ASSERT(!HasStackOverflow()); 9797 ASSERT(!HasStackOverflow());
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
9973 } 9983 }
9974 if (expr->IsLiteralCompareNull(&sub_expr)) { 9984 if (expr->IsLiteralCompareNull(&sub_expr)) {
9975 return HandleLiteralCompareNil(expr, sub_expr, kNullValue); 9985 return HandleLiteralCompareNil(expr, sub_expr, kNullValue);
9976 } 9986 }
9977 9987
9978 if (IsClassOfTest(expr)) { 9988 if (IsClassOfTest(expr)) {
9979 CallRuntime* call = expr->left()->AsCallRuntime(); 9989 CallRuntime* call = expr->left()->AsCallRuntime();
9980 ASSERT(call->arguments()->length() == 1); 9990 ASSERT(call->arguments()->length() == 1);
9981 CHECK_ALIVE(VisitForValue(call->arguments()->at(0))); 9991 CHECK_ALIVE(VisitForValue(call->arguments()->at(0)));
9982 HValue* value = Pop(); 9992 HValue* value = Pop();
9983 Literal* literal = expr->right()->AsLiteral(); 9993 StringLiteral* literal = expr->right()->AsStringLiteral();
9984 Handle<String> rhs = Handle<String>::cast(literal->value()); 9994 Handle<String> rhs = literal->string();
9985 HClassOfTestAndBranch* instr = New<HClassOfTestAndBranch>(value, rhs); 9995 HClassOfTestAndBranch* instr = New<HClassOfTestAndBranch>(value, rhs);
9986 return ast_context()->ReturnControl(instr, expr->id()); 9996 return ast_context()->ReturnControl(instr, expr->id());
9987 } 9997 }
9988 9998
9989 Type* left_type = expr->left()->bounds().lower; 9999 Type* left_type = expr->left()->bounds().lower;
9990 Type* right_type = expr->right()->bounds().lower; 10000 Type* right_type = expr->right()->bounds().lower;
9991 Type* combined_type = expr->combined_type(); 10001 Type* combined_type = expr->combined_type();
9992 10002
9993 CHECK_ALIVE(VisitForValue(expr->left())); 10003 CHECK_ALIVE(VisitForValue(expr->left()));
9994 CHECK_ALIVE(VisitForValue(expr->right())); 10004 CHECK_ALIVE(VisitForValue(expr->right()));
(...skipping 822 matching lines...) Expand 10 before | Expand all | Expand 10 after
10817 Push(object); 10827 Push(object);
10818 Add<HSimulate>(call->id(), FIXED_SIMULATE); 10828 Add<HSimulate>(call->id(), FIXED_SIMULATE);
10819 } 10829 }
10820 if_objectisvalue.End(); 10830 if_objectisvalue.End();
10821 return ast_context()->ReturnValue(Pop()); 10831 return ast_context()->ReturnValue(Pop());
10822 } 10832 }
10823 10833
10824 10834
10825 void HOptimizedGraphBuilder::GenerateDateField(CallRuntime* call) { 10835 void HOptimizedGraphBuilder::GenerateDateField(CallRuntime* call) {
10826 ASSERT(call->arguments()->length() == 2); 10836 ASSERT(call->arguments()->length() == 2);
10827 ASSERT_NE(NULL, call->arguments()->at(1)->AsLiteral()); 10837 ASSERT_NE(NULL, call->arguments()->at(1)->AsNumberLiteral());
10828 Smi* index = Smi::cast(*(call->arguments()->at(1)->AsLiteral()->value())); 10838 Smi* index =
10839 Smi::cast(*(call->arguments()->at(1)->AsNumberLiteral()->value()));
10829 CHECK_ALIVE(VisitForValue(call->arguments()->at(0))); 10840 CHECK_ALIVE(VisitForValue(call->arguments()->at(0)));
10830 HValue* date = Pop(); 10841 HValue* date = Pop();
10831 HDateField* result = New<HDateField>(date, index); 10842 HDateField* result = New<HDateField>(date, index);
10832 return ast_context()->ReturnInstruction(result, call->id()); 10843 return ast_context()->ReturnInstruction(result, call->id());
10833 } 10844 }
10834 10845
10835 10846
10836 void HOptimizedGraphBuilder::GenerateOneByteSeqStringSetChar( 10847 void HOptimizedGraphBuilder::GenerateOneByteSeqStringSetChar(
10837 CallRuntime* call) { 10848 CallRuntime* call) {
10838 ASSERT(call->arguments()->length() == 3); 10849 ASSERT(call->arguments()->length() == 3);
(...skipping 957 matching lines...) Expand 10 before | Expand all | Expand 10 after
11796 if (ShouldProduceTraceOutput()) { 11807 if (ShouldProduceTraceOutput()) {
11797 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); 11808 isolate()->GetHTracer()->TraceHydrogen(name(), graph_);
11798 } 11809 }
11799 11810
11800 #ifdef DEBUG 11811 #ifdef DEBUG
11801 graph_->Verify(false); // No full verify. 11812 graph_->Verify(false); // No full verify.
11802 #endif 11813 #endif
11803 } 11814 }
11804 11815
11805 } } // namespace v8::internal 11816 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/full-codegen.cc ('k') | src/ia32/full-codegen-ia32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698