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

Unified Diff: src/frames.cc

Issue 2803853005: Inline Array.prototype.forEach in TurboFan (Closed)
Patch Set: Disable new array builtins by default Created 3 years, 6 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/frames.h ('k') | src/frames-inl.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/frames.cc
diff --git a/src/frames.cc b/src/frames.cc
index cda47e902af3b0fea3462b08191f81e3c16e662f..5110de6eb57ee82d14e0815181b4f8acb2953644 100644
--- a/src/frames.cc
+++ b/src/frames.cc
@@ -504,6 +504,8 @@ StackFrame::Type StackFrame::ComputeType(const StackFrameIteratorBase* iterator,
case ENTRY:
case ENTRY_CONSTRUCT:
case EXIT:
+ case BUILTIN_CONTINUATION:
+ case JAVA_SCRIPT_BUILTIN_CONTINUATION:
case BUILTIN_EXIT:
case STUB:
case STUB_FAILURE_TRAMPOLINE:
@@ -802,6 +804,8 @@ void StandardFrame::IterateCompiledFrame(RootVisitor* v) const {
case ENTRY:
case ENTRY_CONSTRUCT:
case EXIT:
+ case BUILTIN_CONTINUATION:
+ case JAVA_SCRIPT_BUILTIN_CONTINUATION:
case BUILTIN_EXIT:
case STUB_FAILURE_TRAMPOLINE:
case ARGUMENTS_ADAPTOR:
@@ -1143,6 +1147,12 @@ int JavaScriptFrame::ComputeParametersCount() const {
return GetNumberOfIncomingArguments();
}
+int JavaScriptBuiltinContinuationFrame::ComputeParametersCount() const {
+ Object* argc_object =
+ Memory::Object_at(fp() + BuiltinContinuationFrameConstants::kArgCOffset);
+ return Smi::cast(argc_object)->value();
+}
+
namespace {
bool CannotDeoptFromAsmCode(Code* code, JSFunction* function) {
@@ -1377,7 +1387,8 @@ void OptimizedFrame::Summarize(List<FrameSummary>* frames,
while (jsframe_count != 0) {
frame_opcode = static_cast<Translation::Opcode>(it.Next());
if (frame_opcode == Translation::JS_FRAME ||
- frame_opcode == Translation::INTERPRETED_FRAME) {
+ frame_opcode == Translation::INTERPRETED_FRAME ||
+ frame_opcode == Translation::JAVA_SCRIPT_BUILTIN_CONTINUATION_FRAME) {
jsframe_count--;
BailoutId const bailout_id = BailoutId(it.Next());
SharedFunctionInfo* const shared_info =
@@ -1429,6 +1440,11 @@ void OptimizedFrame::Summarize(List<FrameSummary>* frames,
Deoptimizer::GetOutputInfo(output_data, bailout_id, shared_info);
code_offset = FullCodeGenerator::PcField::decode(entry);
abstract_code = AbstractCode::cast(code);
+ } else if (frame_opcode ==
+ Translation::JAVA_SCRIPT_BUILTIN_CONTINUATION_FRAME) {
+ code_offset = 0;
+ abstract_code = AbstractCode::cast(isolate()->builtins()->builtin(
+ Builtins::GetBuiltinFromBailoutId(bailout_id)));
} else {
DCHECK_EQ(frame_opcode, Translation::INTERPRETED_FRAME);
code_offset = bailout_id.ToInt(); // Points to current bytecode.
@@ -1537,7 +1553,8 @@ void OptimizedFrame::GetFunctions(List<SharedFunctionInfo*>* functions) const {
while (jsframe_count != 0) {
opcode = static_cast<Translation::Opcode>(it.Next());
if (opcode == Translation::JS_FRAME ||
- opcode == Translation::INTERPRETED_FRAME) {
+ opcode == Translation::INTERPRETED_FRAME ||
+ opcode == Translation::JAVA_SCRIPT_BUILTIN_CONTINUATION_FRAME) {
it.Next(); // Skip bailout id.
jsframe_count--;
« no previous file with comments | « src/frames.h ('k') | src/frames-inl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698