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

Side by Side Diff: src/messages.cc

Issue 607913002: Report promise reject with no handler (behind a flag). (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: more comments Created 6 years, 2 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/messages.h ('k') | src/objects.h » ('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 2011 the V8 project authors. All rights reserved. 1 // Copyright 2011 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/v8.h" 5 #include "src/v8.h"
6 6
7 #include "src/api.h" 7 #include "src/api.h"
8 #include "src/execution.h" 8 #include "src/execution.h"
9 #include "src/heap/spaces-inl.h" 9 #include "src/heap/spaces-inl.h"
10 #include "src/messages.h" 10 #include "src/messages.h"
(...skipping 16 matching lines...) Expand all
27 SmartArrayPointer<char> data_str; 27 SmartArrayPointer<char> data_str;
28 if (data->IsString()) 28 if (data->IsString())
29 data_str = Handle<String>::cast(data)->ToCString(DISALLOW_NULLS); 29 data_str = Handle<String>::cast(data)->ToCString(DISALLOW_NULLS);
30 PrintF("%s:%i: %s\n", data_str.get() ? data_str.get() : "<unknown>", 30 PrintF("%s:%i: %s\n", data_str.get() ? data_str.get() : "<unknown>",
31 loc->start_pos(), str.get()); 31 loc->start_pos(), str.get());
32 } 32 }
33 } 33 }
34 34
35 35
36 Handle<JSMessageObject> MessageHandler::MakeMessageObject( 36 Handle<JSMessageObject> MessageHandler::MakeMessageObject(
37 Isolate* isolate, 37 Isolate* isolate, const char* type, MessageLocation* loc,
38 const char* type, 38 Vector<Handle<Object> > args, Handle<JSObject> promise,
39 MessageLocation* loc,
40 Vector< Handle<Object> > args,
41 Handle<JSArray> stack_frames) { 39 Handle<JSArray> stack_frames) {
42 Factory* factory = isolate->factory(); 40 Factory* factory = isolate->factory();
43 Handle<String> type_handle = factory->InternalizeUtf8String(type); 41 Handle<String> type_handle = factory->InternalizeUtf8String(type);
44 Handle<FixedArray> arguments_elements = 42 Handle<FixedArray> arguments_elements =
45 factory->NewFixedArray(args.length()); 43 factory->NewFixedArray(args.length());
46 for (int i = 0; i < args.length(); i++) { 44 for (int i = 0; i < args.length(); i++) {
47 arguments_elements->set(i, *args[i]); 45 arguments_elements->set(i, *args[i]);
48 } 46 }
49 Handle<JSArray> arguments_handle = 47 Handle<JSArray> arguments_handle =
50 factory->NewJSArrayWithElements(arguments_elements); 48 factory->NewJSArrayWithElements(arguments_elements);
51 49
52 int start = 0; 50 int start = 0;
53 int end = 0; 51 int end = 0;
54 Handle<Object> script_handle = factory->undefined_value(); 52 Handle<Object> script_handle = factory->undefined_value();
55 if (loc) { 53 if (loc) {
56 start = loc->start_pos(); 54 start = loc->start_pos();
57 end = loc->end_pos(); 55 end = loc->end_pos();
58 script_handle = Script::GetWrapper(loc->script()); 56 script_handle = Script::GetWrapper(loc->script());
59 } 57 }
60 58
61 Handle<Object> stack_frames_handle = stack_frames.is_null() 59 Handle<Object> stack_frames_handle = stack_frames.is_null()
62 ? Handle<Object>::cast(factory->undefined_value()) 60 ? Handle<Object>::cast(factory->undefined_value())
63 : Handle<Object>::cast(stack_frames); 61 : Handle<Object>::cast(stack_frames);
64 62
65 Handle<JSMessageObject> message = 63 Handle<Object> promise_handle =
66 factory->NewJSMessageObject(type_handle, 64 promise.is_null() ? Handle<Object>::cast(factory->undefined_value())
67 arguments_handle, 65 : Handle<Object>::cast(promise);
68 start, 66
69 end, 67 Handle<JSMessageObject> message = factory->NewJSMessageObject(
70 script_handle, 68 type_handle, arguments_handle, promise_handle, start, end, script_handle,
71 stack_frames_handle); 69 stack_frames_handle);
72 70
73 return message; 71 return message;
74 } 72 }
75 73
76 74
77 void MessageHandler::ReportMessage(Isolate* isolate, 75 void MessageHandler::ReportMessage(Isolate* isolate,
78 MessageLocation* loc, 76 MessageLocation* loc,
79 Handle<Object> message) { 77 Handle<Object> message) {
80 // We are calling into embedder's code which can throw exceptions. 78 // We are calling into embedder's code which can throw exceptions.
81 // Thus we need to save current exception state, reset it to the clean one 79 // Thus we need to save current exception state, reset it to the clean one
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
156 154
157 SmartArrayPointer<char> MessageHandler::GetLocalizedMessage( 155 SmartArrayPointer<char> MessageHandler::GetLocalizedMessage(
158 Isolate* isolate, 156 Isolate* isolate,
159 Handle<Object> data) { 157 Handle<Object> data) {
160 HandleScope scope(isolate); 158 HandleScope scope(isolate);
161 return GetMessage(isolate, data)->ToCString(DISALLOW_NULLS); 159 return GetMessage(isolate, data)->ToCString(DISALLOW_NULLS);
162 } 160 }
163 161
164 162
165 } } // namespace v8::internal 163 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/messages.h ('k') | src/objects.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698