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

Side by Side Diff: src/mips/lithium-mips.cc

Issue 12049037: MIPS: Avoid handle dereference during graph optimization. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 years, 11 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/mips/lithium-mips.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 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 1987 matching lines...) Expand 10 before | Expand all | Expand 10 after
1998 ASSERT(instr->object()->representation().IsTagged()); 1998 ASSERT(instr->object()->representation().IsTagged());
1999 ASSERT(instr->key()->representation().IsTagged()); 1999 ASSERT(instr->key()->representation().IsTagged());
2000 ASSERT(instr->value()->representation().IsTagged()); 2000 ASSERT(instr->value()->representation().IsTagged());
2001 2001
2002 return MarkAsCall(new(zone()) LStoreKeyedGeneric(obj, key, val), instr); 2002 return MarkAsCall(new(zone()) LStoreKeyedGeneric(obj, key, val), instr);
2003 } 2003 }
2004 2004
2005 2005
2006 LInstruction* LChunkBuilder::DoTransitionElementsKind( 2006 LInstruction* LChunkBuilder::DoTransitionElementsKind(
2007 HTransitionElementsKind* instr) { 2007 HTransitionElementsKind* instr) {
2008 ElementsKind from_kind = instr->original_map()->elements_kind(); 2008 if (IsSimpleMapChangeTransition(instr->from_kind(), instr->to_kind())) {
2009 ElementsKind to_kind = instr->transitioned_map()->elements_kind();
2010 if (IsSimpleMapChangeTransition(from_kind, to_kind)) {
2011 LOperand* object = UseRegister(instr->object()); 2009 LOperand* object = UseRegister(instr->object());
2012 LOperand* new_map_reg = TempRegister(); 2010 LOperand* new_map_reg = TempRegister();
2013 LTransitionElementsKind* result = 2011 LTransitionElementsKind* result =
2014 new(zone()) LTransitionElementsKind(object, new_map_reg, NULL); 2012 new(zone()) LTransitionElementsKind(object, new_map_reg, NULL);
2015 return DefineSameAsFirst(result); 2013 return DefineSameAsFirst(result);
2016 } else { 2014 } else {
2017 LOperand* object = UseFixed(instr->object(), a0); 2015 LOperand* object = UseFixed(instr->object(), a0);
2018 LOperand* fixed_object_reg = FixedTemp(a2); 2016 LOperand* fixed_object_reg = FixedTemp(a2);
2019 LOperand* new_map_reg = FixedTemp(a3); 2017 LOperand* new_map_reg = FixedTemp(a3);
2020 LTransitionElementsKind* result = 2018 LTransitionElementsKind* result =
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after
2255 } 2253 }
2256 2254
2257 2255
2258 LInstruction* LChunkBuilder::DoEnterInlined(HEnterInlined* instr) { 2256 LInstruction* LChunkBuilder::DoEnterInlined(HEnterInlined* instr) {
2259 HEnvironment* outer = current_block_->last_environment(); 2257 HEnvironment* outer = current_block_->last_environment();
2260 HConstant* undefined = graph()->GetConstantUndefined(); 2258 HConstant* undefined = graph()->GetConstantUndefined();
2261 HEnvironment* inner = outer->CopyForInlining(instr->closure(), 2259 HEnvironment* inner = outer->CopyForInlining(instr->closure(),
2262 instr->arguments_count(), 2260 instr->arguments_count(),
2263 instr->function(), 2261 instr->function(),
2264 undefined, 2262 undefined,
2265 instr->call_kind(), 2263 instr->inlining_kind(),
2266 instr->inlining_kind()); 2264 instr->undefined_receiver());
2267 if (instr->arguments_var() != NULL) { 2265 if (instr->arguments_var() != NULL) {
2268 inner->Bind(instr->arguments_var(), graph()->GetArgumentsObject()); 2266 inner->Bind(instr->arguments_var(), graph()->GetArgumentsObject());
2269 } 2267 }
2270 inner->set_entry(instr); 2268 inner->set_entry(instr);
2271 current_block_->UpdateEnvironment(inner); 2269 current_block_->UpdateEnvironment(inner);
2272 chunk_->AddInlinedClosure(instr->closure()); 2270 chunk_->AddInlinedClosure(instr->closure());
2273 return NULL; 2271 return NULL;
2274 } 2272 }
2275 2273
2276 2274
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
2322 2320
2323 2321
2324 LInstruction* LChunkBuilder::DoLoadFieldByIndex(HLoadFieldByIndex* instr) { 2322 LInstruction* LChunkBuilder::DoLoadFieldByIndex(HLoadFieldByIndex* instr) {
2325 LOperand* object = UseRegister(instr->object()); 2323 LOperand* object = UseRegister(instr->object());
2326 LOperand* index = UseRegister(instr->index()); 2324 LOperand* index = UseRegister(instr->index());
2327 return DefineAsRegister(new(zone()) LLoadFieldByIndex(object, index)); 2325 return DefineAsRegister(new(zone()) LLoadFieldByIndex(object, index));
2328 } 2326 }
2329 2327
2330 2328
2331 } } // namespace v8::internal 2329 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/mips/lithium-mips.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698