|
1 | 1 | #include <Foundation/Foundation.h> |
2 | 2 | #include <sstream> |
| 3 | +#include <unordered_set> |
3 | 4 | #include "ArgConverter.h" |
4 | 5 | #include "NativeScriptException.h" |
5 | 6 | #include "DictionaryAdapter.h" |
|
37 | 38 | const char* selectorStr = meta ? meta->selectorAsString() : "<unknown>"; |
38 | 39 | const char* jsNameStr = meta ? meta->jsName() : "<unknown>"; |
39 | 40 | const char* classNameStr = klass ? class_getName(klass) : "<unknown>"; |
40 | | - Log(@"ArgConverter::Invoke: ignore method on non-native receiver (class: %s, selector: %s, jsName: %s, args: %d). Common during HMR.", |
41 | | - classNameStr, selectorStr, jsNameStr, (int)args.Length()); |
| 41 | + // Suppress duplicate logs: only log once per class+selector for this process. |
| 42 | + static std::unordered_set<std::string> s_logged; |
| 43 | + std::string key = std::string(classNameStr) + ":" + selectorStr; |
| 44 | + if (s_logged.insert(key).second) { |
| 45 | + Log(@"Note: ignore method on non-native receiver (class: %s, selector: %s, jsName: %s, args: %d). Common during HMR.", |
| 46 | + classNameStr, selectorStr, jsNameStr, (int)args.Length()); |
| 47 | + } |
42 | 48 | return v8::Undefined(isolate); |
43 | 49 | } else { |
44 | 50 | tns::Assert(false, isolate); |
|
63 | 69 | const char* selectorStr = meta ? meta->selectorAsString() : "<unknown>"; |
64 | 70 | const char* jsNameStr = meta ? meta->jsName() : "<unknown>"; |
65 | 71 | const char* classNameStr = klass ? class_getName(klass) : "<unknown>"; |
66 | | - Log(@"ArgConverter::Invoke: unexpected receiver wrapper type %d (class: %s, selector: %s, jsName: %s). Skipping in DEBUG.", |
67 | | - (int)wrapper->Type(), classNameStr, selectorStr, jsNameStr); |
| 72 | + // Suppress duplicate logs: only log once per class+selector for this process. |
| 73 | + static std::unordered_set<std::string> s_logged; |
| 74 | + std::string key = std::string(classNameStr) + ":" + selectorStr; |
| 75 | + if (s_logged.insert(key).second) { |
| 76 | + Log(@"Note: ignore receiver wrapper type %d (class: %s, selector: %s, jsName: %s). Common during HMR.", |
| 77 | + (int)wrapper->Type(), classNameStr, selectorStr, jsNameStr); |
| 78 | + } |
68 | 79 | return v8::Undefined(isolate); |
69 | 80 | } else { |
70 | 81 | tns::Assert(false, isolate); |
|
0 commit comments