• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2015 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "src/wasm/wasm-result.h"
6 
7 #include "src/factory.h"
8 #include "src/heap/heap.h"
9 #include "src/isolate.h"
10 #include "src/objects-inl.h"  // TODO(mstarzinger): Temporary cycle breaker!
11 #include "src/objects.h"
12 
13 #include "src/base/platform/platform.h"
14 
15 namespace v8 {
16 namespace internal {
17 namespace wasm {
18 
operator <<(std::ostream & os,const ErrorCode & error_code)19 std::ostream& operator<<(std::ostream& os, const ErrorCode& error_code) {
20   switch (error_code) {
21     case kSuccess:
22       os << "Success";
23       break;
24     default:  // TODO(titzer): render error codes
25       os << "Error";
26       break;
27   }
28   return os;
29 }
30 
31 
Error(const char * format,...)32 void ErrorThrower::Error(const char* format, ...) {
33   if (error_) return;  // only report the first error.
34   error_ = true;
35   char buffer[256];
36 
37   va_list arguments;
38   va_start(arguments, format);
39   base::OS::VSNPrintF(buffer, 255, format, arguments);
40   va_end(arguments);
41 
42   std::ostringstream str;
43   if (context_ != nullptr) {
44     str << context_ << ": ";
45   }
46   str << buffer;
47 
48   isolate_->ScheduleThrow(
49       *isolate_->factory()->NewStringFromAsciiChecked(str.str().c_str()));
50 }
51 }  // namespace wasm
52 }  // namespace internal
53 }  // namespace v8
54