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

Side by Side Diff: src/hydrogen.cc

Issue 220813003: Add stack overflow check for inlined property getter (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 8 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 | « no previous file | test/mjsunit/regress/regress-inline-getter-near-stack-limit.js » ('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 // 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 5629 matching lines...) Expand 10 before | Expand all | Expand 10 after
5640 5640
5641 if (NeedsWrappingFor(info->type(), info->accessor())) { 5641 if (NeedsWrappingFor(info->type(), info->accessor())) {
5642 HValue* function = Add<HConstant>(info->accessor()); 5642 HValue* function = Add<HConstant>(info->accessor());
5643 PushArgumentsFromEnvironment(argument_count); 5643 PushArgumentsFromEnvironment(argument_count);
5644 return New<HCallFunction>(function, argument_count, WRAP_AND_CALL); 5644 return New<HCallFunction>(function, argument_count, WRAP_AND_CALL);
5645 } else if (FLAG_inline_accessors && can_inline_accessor) { 5645 } else if (FLAG_inline_accessors && can_inline_accessor) {
5646 bool success = info->IsLoad() 5646 bool success = info->IsLoad()
5647 ? TryInlineGetter(info->accessor(), info->map(), ast_id, return_id) 5647 ? TryInlineGetter(info->accessor(), info->map(), ast_id, return_id)
5648 : TryInlineSetter( 5648 : TryInlineSetter(
5649 info->accessor(), info->map(), ast_id, return_id, value); 5649 info->accessor(), info->map(), ast_id, return_id, value);
5650 if (success) return NULL; 5650 if (success || HasStackOverflow()) return NULL;
5651 } 5651 }
5652 5652
5653 PushArgumentsFromEnvironment(argument_count); 5653 PushArgumentsFromEnvironment(argument_count);
5654 return BuildCallConstantFunction(info->accessor(), argument_count); 5654 return BuildCallConstantFunction(info->accessor(), argument_count);
5655 } 5655 }
5656 5656
5657 ASSERT(info->lookup()->IsConstant()); 5657 ASSERT(info->lookup()->IsConstant());
5658 if (info->IsLoad()) { 5658 if (info->IsLoad()) {
5659 return New<HConstant>(info->constant()); 5659 return New<HConstant>(info->constant());
5660 } else { 5660 } else {
(...skipping 5839 matching lines...) Expand 10 before | Expand all | Expand 10 after
11500 if (ShouldProduceTraceOutput()) { 11500 if (ShouldProduceTraceOutput()) {
11501 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); 11501 isolate()->GetHTracer()->TraceHydrogen(name(), graph_);
11502 } 11502 }
11503 11503
11504 #ifdef DEBUG 11504 #ifdef DEBUG
11505 graph_->Verify(false); // No full verify. 11505 graph_->Verify(false); // No full verify.
11506 #endif 11506 #endif
11507 } 11507 }
11508 11508
11509 } } // namespace v8::internal 11509 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « no previous file | test/mjsunit/regress/regress-inline-getter-near-stack-limit.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698