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

Side by Side Diff: src/hydrogen.cc

Issue 11368078: Nano-refactoring: Simplify initialization (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 8 years, 1 month 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 | « no previous file | 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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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 6330 matching lines...) Expand 10 before | Expand all | Expand 10 after
6341 if (position != RelocInfo::kNoPosition) instr->set_position(position); 6341 if (position != RelocInfo::kNoPosition) instr->set_position(position);
6342 return is_store ? NULL : instr; 6342 return is_store ? NULL : instr;
6343 } 6343 }
6344 6344
6345 HInstruction* checkspec = 6345 HInstruction* checkspec =
6346 AddInstruction(HCheckInstanceType::NewIsSpecObject(object, zone())); 6346 AddInstruction(HCheckInstanceType::NewIsSpecObject(object, zone()));
6347 HBasicBlock* join = graph()->CreateBasicBlock(); 6347 HBasicBlock* join = graph()->CreateBasicBlock();
6348 6348
6349 HInstruction* elements_kind_instr = 6349 HInstruction* elements_kind_instr =
6350 AddInstruction(new(zone()) HElementsKind(object)); 6350 AddInstruction(new(zone()) HElementsKind(object));
6351 HCompareConstantEqAndBranch* elements_kind_branch = NULL;
6352 HInstruction* elements = 6351 HInstruction* elements =
6353 AddInstruction(new(zone()) HLoadElements(object, checkspec)); 6352 AddInstruction(new(zone()) HLoadElements(object, checkspec));
6354 HLoadExternalArrayPointer* external_elements = NULL; 6353 HLoadExternalArrayPointer* external_elements = NULL;
6355 HInstruction* checked_key = NULL; 6354 HInstruction* checked_key = NULL;
6356 6355
6357 // Generated code assumes that FAST_* and DICTIONARY_ELEMENTS ElementsKinds 6356 // Generated code assumes that FAST_* and DICTIONARY_ELEMENTS ElementsKinds
6358 // are handled before external arrays. 6357 // are handled before external arrays.
6359 STATIC_ASSERT(FAST_SMI_ELEMENTS < FIRST_EXTERNAL_ARRAY_ELEMENTS_KIND); 6358 STATIC_ASSERT(FAST_SMI_ELEMENTS < FIRST_EXTERNAL_ARRAY_ELEMENTS_KIND);
6360 STATIC_ASSERT(FAST_HOLEY_ELEMENTS < FIRST_EXTERNAL_ARRAY_ELEMENTS_KIND); 6359 STATIC_ASSERT(FAST_HOLEY_ELEMENTS < FIRST_EXTERNAL_ARRAY_ELEMENTS_KIND);
6361 STATIC_ASSERT(FAST_DOUBLE_ELEMENTS < FIRST_EXTERNAL_ARRAY_ELEMENTS_KIND); 6360 STATIC_ASSERT(FAST_DOUBLE_ELEMENTS < FIRST_EXTERNAL_ARRAY_ELEMENTS_KIND);
(...skipping 10 matching lines...) Expand all
6372 && todo_external_array) { 6371 && todo_external_array) {
6373 HInstruction* length = 6372 HInstruction* length =
6374 AddInstruction(new(zone()) HFixedArrayBaseLength(elements)); 6373 AddInstruction(new(zone()) HFixedArrayBaseLength(elements));
6375 checked_key = AddInstruction(new(zone()) HBoundsCheck(key, length)); 6374 checked_key = AddInstruction(new(zone()) HBoundsCheck(key, length));
6376 external_elements = new(zone()) HLoadExternalArrayPointer(elements); 6375 external_elements = new(zone()) HLoadExternalArrayPointer(elements);
6377 AddInstruction(external_elements); 6376 AddInstruction(external_elements);
6378 } 6377 }
6379 if (type_todo[elements_kind]) { 6378 if (type_todo[elements_kind]) {
6380 HBasicBlock* if_true = graph()->CreateBasicBlock(); 6379 HBasicBlock* if_true = graph()->CreateBasicBlock();
6381 HBasicBlock* if_false = graph()->CreateBasicBlock(); 6380 HBasicBlock* if_false = graph()->CreateBasicBlock();
6382 elements_kind_branch = new(zone()) HCompareConstantEqAndBranch( 6381 HCompareConstantEqAndBranch* elements_kind_branch =
6383 elements_kind_instr, elements_kind, Token::EQ_STRICT); 6382 new(zone()) HCompareConstantEqAndBranch(
6383 elements_kind_instr, elements_kind, Token::EQ_STRICT);
6384 elements_kind_branch->SetSuccessorAt(0, if_true); 6384 elements_kind_branch->SetSuccessorAt(0, if_true);
6385 elements_kind_branch->SetSuccessorAt(1, if_false); 6385 elements_kind_branch->SetSuccessorAt(1, if_false);
6386 current_block()->Finish(elements_kind_branch); 6386 current_block()->Finish(elements_kind_branch);
6387 6387
6388 set_current_block(if_true); 6388 set_current_block(if_true);
6389 HInstruction* access; 6389 HInstruction* access;
6390 if (IsFastElementsKind(elements_kind)) { 6390 if (IsFastElementsKind(elements_kind)) {
6391 if (is_store && !IsFastDoubleElementsKind(elements_kind)) { 6391 if (is_store && !IsFastDoubleElementsKind(elements_kind)) {
6392 AddInstruction(new(zone()) HCheckMaps( 6392 AddInstruction(new(zone()) HCheckMaps(
6393 elements, isolate()->factory()->fixed_array_map(), 6393 elements, isolate()->factory()->fixed_array_map(),
(...skipping 3617 matching lines...) Expand 10 before | Expand all | Expand 10 after
10011 } 10011 }
10012 } 10012 }
10013 10013
10014 #ifdef DEBUG 10014 #ifdef DEBUG
10015 if (graph_ != NULL) graph_->Verify(false); // No full verify. 10015 if (graph_ != NULL) graph_->Verify(false); // No full verify.
10016 if (allocator_ != NULL) allocator_->Verify(); 10016 if (allocator_ != NULL) allocator_->Verify();
10017 #endif 10017 #endif
10018 } 10018 }
10019 10019
10020 } } // namespace v8::internal 10020 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698