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

Side by Side Diff: src/hydrogen.cc

Issue 346413004: Remove distinction between hidden and normal runtime functions (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Fix natives fuzzing Created 6 years, 5 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
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 "src/hydrogen.h" 5 #include "src/hydrogen.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "src/v8.h" 9 #include "src/v8.h"
10 10
(...skipping 1915 matching lines...) Expand 10 before | Expand all | Expand 10 after
1926 Push(Add<HLoadKeyed>(number_string_cache, value_index, 1926 Push(Add<HLoadKeyed>(number_string_cache, value_index,
1927 static_cast<HValue*>(NULL), 1927 static_cast<HValue*>(NULL),
1928 FAST_ELEMENTS, ALLOW_RETURN_HOLE)); 1928 FAST_ELEMENTS, ALLOW_RETURN_HOLE));
1929 } 1929 }
1930 if_found.Else(); 1930 if_found.Else();
1931 { 1931 {
1932 // Cache miss, fallback to runtime. 1932 // Cache miss, fallback to runtime.
1933 Add<HPushArguments>(object); 1933 Add<HPushArguments>(object);
1934 Push(Add<HCallRuntime>( 1934 Push(Add<HCallRuntime>(
1935 isolate()->factory()->empty_string(), 1935 isolate()->factory()->empty_string(),
1936 Runtime::FunctionForId(Runtime::kHiddenNumberToStringSkipCache), 1936 Runtime::FunctionForId(Runtime::kNumberToStringSkipCache),
1937 1)); 1937 1));
1938 } 1938 }
1939 if_found.End(); 1939 if_found.End();
1940 1940
1941 return Pop(); 1941 return Pop();
1942 } 1942 }
1943 1943
1944 1944
1945 HAllocate* HGraphBuilder::BuildAllocate( 1945 HAllocate* HGraphBuilder::BuildAllocate(
1946 HValue* object_size, 1946 HValue* object_size,
(...skipping 303 matching lines...) Expand 10 before | Expand all | Expand 10 after
2250 2250
2251 // Return the sequential string. 2251 // Return the sequential string.
2252 Push(result); 2252 Push(result);
2253 } 2253 }
2254 if_sameencodingandsequential.Else(); 2254 if_sameencodingandsequential.Else();
2255 { 2255 {
2256 // Fallback to the runtime to add the two strings. 2256 // Fallback to the runtime to add the two strings.
2257 Add<HPushArguments>(left, right); 2257 Add<HPushArguments>(left, right);
2258 Push(Add<HCallRuntime>( 2258 Push(Add<HCallRuntime>(
2259 isolate()->factory()->empty_string(), 2259 isolate()->factory()->empty_string(),
2260 Runtime::FunctionForId(Runtime::kHiddenStringAdd), 2260 Runtime::FunctionForId(Runtime::kStringAdd),
2261 2)); 2261 2));
2262 } 2262 }
2263 if_sameencodingandsequential.End(); 2263 if_sameencodingandsequential.End();
2264 } 2264 }
2265 if_createcons.End(); 2265 if_createcons.End();
2266 2266
2267 return Pop(); 2267 return Pop();
2268 } 2268 }
2269 2269
2270 2270
(...skipping 3205 matching lines...) Expand 10 before | Expand all | Expand 10 after
5476 ? ObjectLiteral::kHasFunction : ObjectLiteral::kNoFlags; 5476 ? ObjectLiteral::kHasFunction : ObjectLiteral::kNoFlags;
5477 5477
5478 Add<HPushArguments>(Add<HConstant>(closure_literals), 5478 Add<HPushArguments>(Add<HConstant>(closure_literals),
5479 Add<HConstant>(literal_index), 5479 Add<HConstant>(literal_index),
5480 Add<HConstant>(constant_properties), 5480 Add<HConstant>(constant_properties),
5481 Add<HConstant>(flags)); 5481 Add<HConstant>(flags));
5482 5482
5483 // TODO(mvstanton): Add a flag to turn off creation of any 5483 // TODO(mvstanton): Add a flag to turn off creation of any
5484 // AllocationMementos for this call: we are in crankshaft and should have 5484 // AllocationMementos for this call: we are in crankshaft and should have
5485 // learned enough about transition behavior to stop emitting mementos. 5485 // learned enough about transition behavior to stop emitting mementos.
5486 Runtime::FunctionId function_id = Runtime::kHiddenCreateObjectLiteral; 5486 Runtime::FunctionId function_id = Runtime::kCreateObjectLiteral;
5487 literal = Add<HCallRuntime>(isolate()->factory()->empty_string(), 5487 literal = Add<HCallRuntime>(isolate()->factory()->empty_string(),
5488 Runtime::FunctionForId(function_id), 5488 Runtime::FunctionForId(function_id),
5489 4); 5489 4);
5490 } 5490 }
5491 5491
5492 // The object is expected in the bailout environment during computation 5492 // The object is expected in the bailout environment during computation
5493 // of the property values and is the value of the entire expression. 5493 // of the property values and is the value of the entire expression.
5494 Push(literal); 5494 Push(literal);
5495 5495
5496 expr->CalculateEmitStore(zone()); 5496 expr->CalculateEmitStore(zone());
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
5634 flags |= ArrayLiteral::kDisableMementos; 5634 flags |= ArrayLiteral::kDisableMementos;
5635 5635
5636 Add<HPushArguments>(Add<HConstant>(literals), 5636 Add<HPushArguments>(Add<HConstant>(literals),
5637 Add<HConstant>(literal_index), 5637 Add<HConstant>(literal_index),
5638 Add<HConstant>(constants), 5638 Add<HConstant>(constants),
5639 Add<HConstant>(flags)); 5639 Add<HConstant>(flags));
5640 5640
5641 // TODO(mvstanton): Consider a flag to turn off creation of any 5641 // TODO(mvstanton): Consider a flag to turn off creation of any
5642 // AllocationMementos for this call: we are in crankshaft and should have 5642 // AllocationMementos for this call: we are in crankshaft and should have
5643 // learned enough about transition behavior to stop emitting mementos. 5643 // learned enough about transition behavior to stop emitting mementos.
5644 Runtime::FunctionId function_id = Runtime::kHiddenCreateArrayLiteral; 5644 Runtime::FunctionId function_id = Runtime::kCreateArrayLiteral;
5645 literal = Add<HCallRuntime>(isolate()->factory()->empty_string(), 5645 literal = Add<HCallRuntime>(isolate()->factory()->empty_string(),
5646 Runtime::FunctionForId(function_id), 5646 Runtime::FunctionForId(function_id),
5647 4); 5647 4);
5648 5648
5649 // De-opt if elements kind changed from boilerplate_elements_kind. 5649 // De-opt if elements kind changed from boilerplate_elements_kind.
5650 Handle<Map> map = Handle<Map>(boilerplate_object->map(), isolate()); 5650 Handle<Map> map = Handle<Map>(boilerplate_object->map(), isolate());
5651 literal = Add<HCheckMaps>(literal, map); 5651 literal = Add<HCheckMaps>(literal, map);
5652 } 5652 }
5653 5653
5654 // The array is expected in the bailout environment during computation 5654 // The array is expected in the bailout environment during computation
(...skipping 991 matching lines...) Expand 10 before | Expand all | Expand 10 after
6646 // We don't optimize functions with invalid left-hand sides in 6646 // We don't optimize functions with invalid left-hand sides in
6647 // assignments, count operations, or for-in. Consequently throw can 6647 // assignments, count operations, or for-in. Consequently throw can
6648 // currently only occur in an effect context. 6648 // currently only occur in an effect context.
6649 ASSERT(ast_context()->IsEffect()); 6649 ASSERT(ast_context()->IsEffect());
6650 CHECK_ALIVE(VisitForValue(expr->exception())); 6650 CHECK_ALIVE(VisitForValue(expr->exception()));
6651 6651
6652 HValue* value = environment()->Pop(); 6652 HValue* value = environment()->Pop();
6653 if (!FLAG_hydrogen_track_positions) SetSourcePosition(expr->position()); 6653 if (!FLAG_hydrogen_track_positions) SetSourcePosition(expr->position());
6654 Add<HPushArguments>(value); 6654 Add<HPushArguments>(value);
6655 Add<HCallRuntime>(isolate()->factory()->empty_string(), 6655 Add<HCallRuntime>(isolate()->factory()->empty_string(),
6656 Runtime::FunctionForId(Runtime::kHiddenThrow), 1); 6656 Runtime::FunctionForId(Runtime::kThrow), 1);
6657 Add<HSimulate>(expr->id()); 6657 Add<HSimulate>(expr->id());
6658 6658
6659 // If the throw definitely exits the function, we can finish with a dummy 6659 // If the throw definitely exits the function, we can finish with a dummy
6660 // control flow at this point. This is not the case if the throw is inside 6660 // control flow at this point. This is not the case if the throw is inside
6661 // an inlined function which may be replaced. 6661 // an inlined function which may be replaced.
6662 if (call_context() == NULL) { 6662 if (call_context() == NULL) {
6663 FinishExitCurrentBlock(New<HAbnormalExit>()); 6663 FinishExitCurrentBlock(New<HAbnormalExit>());
6664 } 6664 }
6665 } 6665 }
6666 6666
(...skipping 5682 matching lines...) Expand 10 before | Expand all | Expand 10 after
12349 if (ShouldProduceTraceOutput()) { 12349 if (ShouldProduceTraceOutput()) {
12350 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); 12350 isolate()->GetHTracer()->TraceHydrogen(name(), graph_);
12351 } 12351 }
12352 12352
12353 #ifdef DEBUG 12353 #ifdef DEBUG
12354 graph_->Verify(false); // No full verify. 12354 graph_->Verify(false); // No full verify.
12355 #endif 12355 #endif
12356 } 12356 }
12357 12357
12358 } } // namespace v8::internal 12358 } } // namespace v8::internal
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698