proxy.tq 1.16 KB
Newer Older
1 2 3 4 5 6 7 8 9
// Copyright 2019 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include 'src/builtins/builtins-proxy-gen.h'

namespace proxy {

  extern macro ProxiesCodeStubAssembler::AllocateProxy(
10
      implicit context: Context)(JSReceiver, JSReceiver): JSProxy;
11 12 13

  macro IsRevokedProxy(implicit context: Context)(o: JSReceiver): bool {
    const proxy: JSProxy = Cast<JSProxy>(o) otherwise return false;
14
    Cast<JSReceiver>(proxy.handler) otherwise return true;
15 16
    return false;
  }
17

18 19
  extern transitioning macro ProxiesCodeStubAssembler::CheckGetSetTrapResult(
      implicit context:
20
          Context)(JSReceiver, JSProxy, Name, Object, constexpr int31);
21

22 23 24
  extern transitioning macro ProxiesCodeStubAssembler::CheckDeleteTrapResult(
      implicit context: Context)(JSReceiver, JSProxy, Name);

25
  extern transitioning macro ProxiesCodeStubAssembler::CheckHasTrapResult(
26
      implicit context: Context)(JSReceiver, JSProxy, Name);
27

28 29 30 31
  const kProxyGet: constexpr int31
  generates 'JSProxy::AccessKind::kGet';
  const kProxySet: constexpr int31
  generates 'JSProxy::AccessKind::kSet';
32
}