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
3// found in the LICENSE file.
4
5#include "src/extensions/trigger-failure-extension.h"
6
7#include "include/v8-template.h"
8#include "src/base/logging.h"
9#include "src/common/checks.h"
10
11namespace v8 {
12namespace internal {
13
14
15const char* const TriggerFailureExtension::kSource =
16    "native function triggerCheckFalse();"
17    "native function triggerAssertFalse();"
18    "native function triggerSlowAssertFalse();";
19
20
21v8::Local<v8::FunctionTemplate>
22TriggerFailureExtension::GetNativeFunctionTemplate(v8::Isolate* isolate,
23                                                   v8::Local<v8::String> str) {
24  if (strcmp(*v8::String::Utf8Value(isolate, str), "triggerCheckFalse") == 0) {
25    return v8::FunctionTemplate::New(
26        isolate,
27        TriggerFailureExtension::TriggerCheckFalse);
28  } else if (strcmp(*v8::String::Utf8Value(isolate, str),
29                    "triggerAssertFalse") == 0) {
30    return v8::FunctionTemplate::New(
31        isolate,
32        TriggerFailureExtension::TriggerAssertFalse);
33  } else {
34    CHECK_EQ(0, strcmp(*v8::String::Utf8Value(isolate, str),
35                       "triggerSlowAssertFalse"));
36    return v8::FunctionTemplate::New(
37        isolate,
38        TriggerFailureExtension::TriggerSlowAssertFalse);
39  }
40}
41
42
43void TriggerFailureExtension::TriggerCheckFalse(
44    const v8::FunctionCallbackInfo<v8::Value>& args) {
45  CHECK(false);
46}
47
48
49void TriggerFailureExtension::TriggerAssertFalse(
50    const v8::FunctionCallbackInfo<v8::Value>& args) {
51  DCHECK(false);
52}
53
54
55void TriggerFailureExtension::TriggerSlowAssertFalse(
56    const v8::FunctionCallbackInfo<v8::Value>& args) {
57  SLOW_DCHECK(false);
58}
59
60}  // namespace internal
61}  // namespace v8
62