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

Side by Side Diff: src/hydrogen.cc

Issue 6688066: Clean up Isolate usages in ast visitor and hydrogen. (Closed)
Patch Set: Created 9 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
« no previous file with comments | « src/hydrogen.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 the V8 project authors. All rights reserved. 1 // Copyright 2011 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 494 matching lines...) Expand 10 before | Expand all | Expand 10 after
505 return GetConstant(&constant_1_, Smi::FromInt(1)); 505 return GetConstant(&constant_1_, Smi::FromInt(1));
506 } 506 }
507 507
508 508
509 HConstant* HGraph::GetConstantMinus1() { 509 HConstant* HGraph::GetConstantMinus1() {
510 return GetConstant(&constant_minus1_, Smi::FromInt(-1)); 510 return GetConstant(&constant_minus1_, Smi::FromInt(-1));
511 } 511 }
512 512
513 513
514 HConstant* HGraph::GetConstantTrue() { 514 HConstant* HGraph::GetConstantTrue() {
515 return GetConstant(&constant_true_, HEAP->true_value()); 515 return GetConstant(&constant_true_, isolate()->heap()->true_value());
516 } 516 }
517 517
518 518
519 HConstant* HGraph::GetConstantFalse() { 519 HConstant* HGraph::GetConstantFalse() {
520 return GetConstant(&constant_false_, HEAP->false_value()); 520 return GetConstant(&constant_false_, isolate()->heap()->false_value());
521 } 521 }
522 522
523 523
524 HBasicBlock* HGraphBuilder::CreateJoin(HBasicBlock* first, 524 HBasicBlock* HGraphBuilder::CreateJoin(HBasicBlock* first,
525 HBasicBlock* second, 525 HBasicBlock* second,
526 int join_id) { 526 int join_id) {
527 if (first == NULL) { 527 if (first == NULL) {
528 return second; 528 return second;
529 } else if (second == NULL) { 529 } else if (second == NULL) {
530 return first; 530 return first;
(...skipping 710 matching lines...) Expand 10 before | Expand all | Expand 10 after
1241 } 1241 }
1242 1242
1243 1243
1244 class HGlobalValueNumberer BASE_EMBEDDED { 1244 class HGlobalValueNumberer BASE_EMBEDDED {
1245 public: 1245 public:
1246 explicit HGlobalValueNumberer(HGraph* graph, CompilationInfo* info) 1246 explicit HGlobalValueNumberer(HGraph* graph, CompilationInfo* info)
1247 : graph_(graph), 1247 : graph_(graph),
1248 info_(info), 1248 info_(info),
1249 block_side_effects_(graph_->blocks()->length()), 1249 block_side_effects_(graph_->blocks()->length()),
1250 loop_side_effects_(graph_->blocks()->length()) { 1250 loop_side_effects_(graph_->blocks()->length()) {
1251 ASSERT(HEAP->allow_allocation(false)); 1251 ASSERT(info->isolate()->heap()->allow_allocation(false));
1252 block_side_effects_.AddBlock(0, graph_->blocks()->length()); 1252 block_side_effects_.AddBlock(0, graph_->blocks()->length());
1253 loop_side_effects_.AddBlock(0, graph_->blocks()->length()); 1253 loop_side_effects_.AddBlock(0, graph_->blocks()->length());
1254 } 1254 }
1255 ~HGlobalValueNumberer() { 1255 ~HGlobalValueNumberer() {
1256 ASSERT(!HEAP->allow_allocation(true)); 1256 ASSERT(!info_->isolate()->heap()->allow_allocation(true));
1257 } 1257 }
1258 1258
1259 void Analyze(); 1259 void Analyze();
1260 1260
1261 private: 1261 private:
1262 void AnalyzeBlock(HBasicBlock* block, HValueMap* map); 1262 void AnalyzeBlock(HBasicBlock* block, HValueMap* map);
1263 void ComputeBlockSideEffects(); 1263 void ComputeBlockSideEffects();
1264 void LoopInvariantCodeMotion(); 1264 void LoopInvariantCodeMotion();
1265 void ProcessLoopBlock(HBasicBlock* block, 1265 void ProcessLoopBlock(HBasicBlock* block,
1266 HBasicBlock* before_loop, 1266 HBasicBlock* before_loop,
(...skipping 1004 matching lines...) Expand 10 before | Expand all | Expand 10 after
2271 AddInstruction(new HPushArgument(arguments.RemoveLast())); 2271 AddInstruction(new HPushArgument(arguments.RemoveLast()));
2272 } 2272 }
2273 return call; 2273 return call;
2274 } 2274 }
2275 2275
2276 2276
2277 void HGraphBuilder::SetupScope(Scope* scope) { 2277 void HGraphBuilder::SetupScope(Scope* scope) {
2278 // We don't yet handle the function name for named function expressions. 2278 // We don't yet handle the function name for named function expressions.
2279 if (scope->function() != NULL) BAILOUT("named function expression"); 2279 if (scope->function() != NULL) BAILOUT("named function expression");
2280 2280
2281 HConstant* undefined_constant = 2281 HConstant* undefined_constant = new HConstant(
2282 new HConstant(FACTORY->undefined_value(), Representation::Tagged()); 2282 isolate()->factory()->undefined_value(), Representation::Tagged());
2283 AddInstruction(undefined_constant); 2283 AddInstruction(undefined_constant);
2284 graph_->set_undefined_constant(undefined_constant); 2284 graph_->set_undefined_constant(undefined_constant);
2285 2285
2286 // Set the initial values of parameters including "this". "This" has 2286 // Set the initial values of parameters including "this". "This" has
2287 // parameter index 0. 2287 // parameter index 0.
2288 int count = scope->num_parameters() + 1; 2288 int count = scope->num_parameters() + 1;
2289 for (int i = 0; i < count; ++i) { 2289 for (int i = 0; i < count; ++i) {
2290 HInstruction* parameter = AddInstruction(new HParameter(i)); 2290 HInstruction* parameter = AddInstruction(new HParameter(i));
2291 environment()->Bind(i, parameter); 2291 environment()->Bind(i, parameter);
2292 } 2292 }
(...skipping 1325 matching lines...) Expand 10 before | Expand all | Expand 10 after
3618 HInstruction* HGraphBuilder::BuildStoreKeyedFastElement(HValue* object, 3618 HInstruction* HGraphBuilder::BuildStoreKeyedFastElement(HValue* object,
3619 HValue* key, 3619 HValue* key,
3620 HValue* val, 3620 HValue* val,
3621 Expression* expr) { 3621 Expression* expr) {
3622 ASSERT(expr->IsMonomorphic()); 3622 ASSERT(expr->IsMonomorphic());
3623 AddInstruction(new HCheckNonSmi(object)); 3623 AddInstruction(new HCheckNonSmi(object));
3624 Handle<Map> map = expr->GetMonomorphicReceiverType(); 3624 Handle<Map> map = expr->GetMonomorphicReceiverType();
3625 ASSERT(map->has_fast_elements()); 3625 ASSERT(map->has_fast_elements());
3626 AddInstruction(new HCheckMap(object, map)); 3626 AddInstruction(new HCheckMap(object, map));
3627 HInstruction* elements = AddInstruction(new HLoadElements(object)); 3627 HInstruction* elements = AddInstruction(new HLoadElements(object));
3628 AddInstruction(new HCheckMap(elements, FACTORY->fixed_array_map())); 3628 AddInstruction(new HCheckMap(elements,
3629 isolate()->factory()->fixed_array_map()));
3629 bool is_array = (map->instance_type() == JS_ARRAY_TYPE); 3630 bool is_array = (map->instance_type() == JS_ARRAY_TYPE);
3630 HInstruction* length = NULL; 3631 HInstruction* length = NULL;
3631 if (is_array) { 3632 if (is_array) {
3632 length = AddInstruction(new HJSArrayLength(object)); 3633 length = AddInstruction(new HJSArrayLength(object));
3633 } else { 3634 } else {
3634 length = AddInstruction(new HFixedArrayLength(elements)); 3635 length = AddInstruction(new HFixedArrayLength(elements));
3635 } 3636 }
3636 AddInstruction(new HBoundsCheck(key, length)); 3637 AddInstruction(new HBoundsCheck(key, length));
3637 return new HStoreKeyedFastElement(elements, key, val); 3638 return new HStoreKeyedFastElement(elements, key, val);
3638 } 3639 }
(...skipping 1329 matching lines...) Expand 10 before | Expand all | Expand 10 after
4968 Handle<String> name = var->name(); 4969 Handle<String> name = var->name();
4969 Handle<GlobalObject> global(info()->global_object()); 4970 Handle<GlobalObject> global(info()->global_object());
4970 LookupResult lookup; 4971 LookupResult lookup;
4971 global->Lookup(*name, &lookup); 4972 global->Lookup(*name, &lookup);
4972 if (lookup.IsProperty() && 4973 if (lookup.IsProperty() &&
4973 lookup.type() == NORMAL && 4974 lookup.type() == NORMAL &&
4974 lookup.GetValue()->IsJSFunction()) { 4975 lookup.GetValue()->IsJSFunction()) {
4975 Handle<JSFunction> candidate(JSFunction::cast(lookup.GetValue())); 4976 Handle<JSFunction> candidate(JSFunction::cast(lookup.GetValue()));
4976 // If the function is in new space we assume it's more likely to 4977 // If the function is in new space we assume it's more likely to
4977 // change and thus prefer the general IC code. 4978 // change and thus prefer the general IC code.
4978 if (!Isolate::Current()->heap()->InNewSpace(*candidate)) { 4979 if (!isolate()->heap()->InNewSpace(*candidate)) {
4979 target = candidate; 4980 target = candidate;
4980 } 4981 }
4981 } 4982 }
4982 } 4983 }
4983 4984
4984 // If the target is not null we have found a known global function that is 4985 // If the target is not null we have found a known global function that is
4985 // assumed to stay the same for this instanceof. 4986 // assumed to stay the same for this instanceof.
4986 if (target.is_null()) { 4987 if (target.is_null()) {
4987 HContext* context = new HContext; 4988 HContext* context = new HContext;
4988 AddInstruction(context); 4989 AddInstruction(context);
(...skipping 938 matching lines...) Expand 10 before | Expand all | Expand 10 after
5927 } 5928 }
5928 } 5929 }
5929 5930
5930 #ifdef DEBUG 5931 #ifdef DEBUG
5931 if (graph_ != NULL) graph_->Verify(); 5932 if (graph_ != NULL) graph_->Verify();
5932 if (allocator_ != NULL) allocator_->Verify(); 5933 if (allocator_ != NULL) allocator_->Verify();
5933 #endif 5934 #endif
5934 } 5935 }
5935 5936
5936 } } // namespace v8::internal 5937 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/hydrogen.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698